System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于日志存储、查询,特别是涉及一种基于k8s的轻量日志存储查询系统及方法。
技术介绍
1、基于k8s的日志存储、检索系统目前还没有一个比较统一的实现,主流的方案是采用elasticsearch来存储k8s的日志,并进行全文检索,但是这种方式对于中小型k8s集群来说非常重量级,elasticsearch消耗了大量系统资源,并将日志进行索引、切片然后常驻内存之中,当不查询系统日志时候这种资源代价很难接受。
2、如中国专利cn106649461a提供一种自动化清理维护elasticsearch日志索引文件的方法,该自动化清理维护elasticsearch日志索引文件的方法,将索引文件按照时间维度来分开存储,根据业务需要制定日志索引删除策略,并使之成为一个调度任务,利用调度框架调度日志删除任务,当需要删除历史数据索引时,只需根据日志索引删除策略整体删除符合策略的索引即可,能够解决按deletebyquery方式删除的效率问题,能够快速高效的删除索引文件,不会对当前的索引和查询造成性能上的影响,解决了elasticsearch在采用deletebyquery方式删除大数据量索引时效率低下的问题,又如中国专利cn108509437a提供一种elasticsearch查询加速方法,首先为每个字段增加payload载荷域,然后再通过payload载荷域在单一子查询条件的基础上做过滤操作,解决了es原始数据查询时如果各个结果集数据量很大,取交集和并集的计算会占用大量时间的问题,提高了索引效率。
3、但是,当ela
技术实现思路
1、本专利技术的目的在于提供一种基于k8s的轻量日志存储查询系统及方法,以较小的代价来存储检索日志,只有当系统出现问题,需要查询日志才消耗系统资源,用户也不需要为日志数据进行专门的索引维护,解决了现有的问题。
2、为解决上述技术问题,本专利技术是通过以下技术方案实现的:
3、作为本专利技术的第一个方面,本专利技术为一种基于k8s的轻量日志存储查询方法,包括以下步骤:
4、st1.挂载k8s日志目录采集元数据、日志数据信息;
5、st2.关联元数据和日志数据,并发送至生产者消费者队列;在进行日志数据采集时候将这些元数据采集起来并与日志数据相关联,这就使得进行日志查询时候查询范围非常容易被缩小,日志范围缩小就意味着消耗了更少的系统资源,更快的查询速度,读取更少的数据文件;
6、st3.从生产者消费者队列接收日志并将元数据、日志数据分别存储后对日志文件进行合并、压缩存储;
7、st4.基于k8s的hpa特性来动态并行查询日志:当过滤之后系统判断出相匹配的日志记录的数量大于等于预设值阈值时,基于hpa组件自定义指标来确定日志查询模块启动的副本数。
8、进一步地,所述元数据为日志内元数据和k8s元数据,包括:应用所在的k8s集群信息、应用所在租户信息、应用所在的namespace信息、应用所属的应用类型信息、应用所在的节点信息、应用的pod信息、应用的端口信息、应用使用的存储卷信息,基于k8s的应用与传统应用很大的一个区别就是:基于k8s的应用已经遵循了k8s应用管理的一套规范,那么这些应用自身已经具备了很多有用的元数据信息。
9、进一步地,所述日志元数据和日志数据的关联方法为:
10、ss01.挂载k8s日志目录,根据路径的namespace和pod的id查询k8s元数据信息;k8s元数据与应用无关,可以统一采集,但日志内元数据需要应用开发者配置输出格式,如步骤ss04中所述;
11、ss02.监听目录数据文件变化;
12、ss03.采集目录数据文件新增的每一条日志数据,生成相应的通用唯一识别码uuid,此uuid代表当前这一条日志数据;
13、ss04.读应用配置的格式,解析日志内元数据;除开k8s元数据信息,日志本身的元数据也可以采集出来进一步缩小用户查询范围,比如日志产生时间,日志级别等等,日志内元数据需要应用对采集工具进行配置,配置正确的日志输出格式才能够顺利采集;
14、ss05.在时序数据库内存储一条日志记录,所述日志记录包括新增日志数据的uuid、对应日志文件所在应用的k8s元数据以及应用内元数据;
15、ss06.发送日志数据和uuid到生产者队列。
16、进一步地,所述日志压缩存储的方法为(轻量化的日志存储方法):
17、步骤s31:将元数据存储到时序数据库中;系统采集到每条日志数据时均生成一个uuid来关联k8s元数据,元数据可以存储在时序数据库中,比如influxdb,tdengine中,这部分数据量很小,而且非常适合进行列压缩,大部分是重复数据,存储在时序数据库中将大大降低存储成本,查询速度也非常快;
18、步骤s32:将日志文件序列化到磁盘,并根据日志文件重要级别设定副本数;
19、步骤s33:日志文件合并与压缩:
20、为了最大提升日志写入性能,客户端将日志文件写入缓存文件并生成日志数据消费者队列后立即返回;
21、而日志存储模块采用订阅的方式来消费缓存文件,只有当日志存储模块消费了所有缓存文件内的日志并确定存储到了磁盘,缓存文件才会被删除,这既保证了日志的写入性能同时日志文件存储的安全性也得到了保证;
22、缓存文件从被消费到保存至磁盘过程中可能会失败,这会导致缓存文件被重复消费,所述日志文件在写入时,基于uuid进行合并,合并之后选择压缩算法进行压缩进一步降低日志数据存储开销。
23、进一步地,所述步骤s33中,消费缓存文件的方法为:
24、日志采集器将采集到的每一条日志数据写入生产者队列后返回;
25、生产者队列维护每一个缓存文件;
26、日志存储模块消费日志数据,并写入磁盘;
27、写入磁盘后给生产者队列返回一个确认信号;
28、生产者队列收到所有缓存文件内的日志数据被消费的确认信号后,删除缓存文件。
29、进一步地,所述动态并行查询日志的方法为:
30、步骤s41:用户选择所有的元数据进行过滤查询,若过滤之后系统判断出相匹配的日志记录的数量小于预设值阈值,则日志查询模块检索相匹配的日志记录并进行关键字匹配最终结果返回给用户;否则进入步骤s42;
31、步骤s42:基于hpa组件自定义指标来确定日志查询模块启动的副本数;
32、步骤s43:每一个副本查询预设范围的日志数据,查询之后进行关键字匹配,匹配完成之后返回给日志归并模块基于uuid进行日志文件合并去重,然后返回给用户,在当前日志系统中因为剔除大量重复的元数据使得其数据量大大减少,日志存储模块能够使用一个非常低的存储代本文档来自技高网...
【技术保护点】
1.一种基于K8S的轻量日志存储查询方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于K8S的轻量日志存储查询方法,其特征在于,所述元数据为日志内元数据和K8S元数据,包括:应用所在的K8S集群信息、应用所在租户信息、应用所在的namespace信息、应用所属的应用类型信息、应用所在的节点信息、应用的POD信息、应用的端口信息、应用使用的存储卷信息。
3.根据权利要求2所述的一种基于K8S的轻量日志存储查询方法,其特征在于,所述日志元数据和日志数据的关联方法为:
4.根据权利要求3所述的一种基于K8S的轻量日志存储查询方法,其特征在于,所述日志压缩存储的方法为:
5.根据权利要求4所述的一种基于K8S的轻量日志存储查询方法,其特征在于,所述步骤S33中,消费缓存文件的方法为:
6.根据权利要求4所述的一种基于K8S的轻量日志存储查询方法,其特征在于,所述动态并行查询日志的方法为:
7.根据权利要求6所述的一种基于K8S的轻量日志存储查询方法,其特征在于,基于UUID进行日志文件合并的方法为:<
...【技术特征摘要】
1.一种基于k8s的轻量日志存储查询方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于k8s的轻量日志存储查询方法,其特征在于,所述元数据为日志内元数据和k8s元数据,包括:应用所在的k8s集群信息、应用所在租户信息、应用所在的namespace信息、应用所属的应用类型信息、应用所在的节点信息、应用的pod信息、应用的端口信息、应用使用的存储卷信息。
3.根据权利要求2所述的一种基于k8s的轻量日志存储查询方法,其特征在于,所述日志元数据和日志数据的关联方法为:
4.根据权利要求3所述的一种基于k8s的轻量日志存储查询方法,其特征在于,所述日志压缩存储的方法为:
5...
【专利技术属性】
技术研发人员:夏杏林,
申请(专利权)人:深圳联友科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。