一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Kubernetes容器技术的MongoDB数据库监控方法与流程

2022-02-20 20:45:07 来源:中国专利 TAG:

一种基于kubernetes容器技术的mongodb数据库监控方法
技术领域
1.本发明涉及kubernetes环境中虚机指标监控技术领领域,尤其涉及一种基于kubernetes容器技术的mongodb数据库监控方法。


背景技术:

2.kubernetes是目前最为流行、成为事实标准的容器集群管理平台,为容器化应用提供了集群化部署运行、自动资源调度,和动态水平伸缩等一系列完整功能。虽然kubernetes平台本身已经实现了应用状态的实时监控,但是监控的指标和方式还是比较基础,难以满足各种复杂和个性化的监控管理需求。因此,我们需要在kubernetes的基础上,增加独立的、不影响现有应用集群的架构和部署的,而且功能全面、易于部署、便于监视分析、能够及时告警的监控体系。
3.telegraf是一个用go编写的代理程序,是收集和报告指标和数据的代理。可收集系统和服务的统计数据,并写入到influxdb数据库。telegraf具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其他服务的扩展。
4.众多的开源监控软件提供的解决方案在部分层面解决监控问题,但不能从整体上、多方位提供开源云平台的一体化资源监控方案。
5.现有telegraf采集的应用大多采用修改插件源码的方式来实现数据的过滤和聚合,对使用人员技术水平要求较高,源码修改验证过程复杂,效率较低。


技术实现要素:

6.为了解决以上技术问题,本发明提供了一种基于kubernetes容器技术的mongodb数据库监控方法,对mongodb数据库的服务状态、虚机的状态等资源信息,进行多维度、全方位的实时监控。
7.本发明的技术方案是:
8.一种基于kubernetes容器技术的mongodb数据库监控方法,利用容器技术将telegraf应用和mongodb应用部署在同一容器中。通过修改telegraf配置文件的方式完成mongodb监控指标和虚机监控指标的聚合。通过读取虚机环境信息设置telegraf的维度。通过docker挂载虚机系统目录采集监控指标。
9.进一步的,
10.利用pod容器中部署的telegraf的各类插件,通过制定配置文件,完成对采集指标的过滤和存储重定向;
11.采集业务监控指标、应用监控指标、网络监控指标到同一逻辑表中;
12.利用全局标签对数据进行标记分类,数据添加标识存储到pod容器部署的influxdb中。
13.再进一步的,
14.mongodb部署在kubernetes的docker容器中,kubernetes环境部署influxdb数据
库pod,提供虚机可以进行存储的域名,部署提供监控数据查询的cms服务pod。
15.将telegraf部署在mongodb所在的虚机。
16.监控数据采集包含数据采集模块和数据存储模块,数据采集模块采用监控工具telegraf,利用插件机制,采集多种资源监控信息,数据存储模块采用influxdb时序数据库。
17.进一步的,
18.通过ansible在kubernetes环境已创建完成的虚机中利用docker部署mongodb应用;
19.通过脚本获取部署虚机的id作为采集指标的全局tag resource_id,读取虚机的网卡信息,取ip作为采集指标的全局tag user_ip;通过docker命令启动容器。
20.容器启动时,因采集磁盘信息,需要挂载数据存储的磁盘目录,挂载系统采集磁盘信息的组件目录/proc:/hostfs/proc、/sys:/hostfs/sys,并设置环境变量。
21.通过修改telegraf配置文件,设置全局tag;取docker启动时传入的环境变量resource_id、user_ip等设置[global_tags],这样采集的每条监控数据都具有全局标签,查询时可更具需求进行过滤。
[0022]
通过修改telegraf配置文件,完成采集指标的过滤;telegraf中每个组件采集全量的监控存储数据到各自influxdb对应表中,因此产生冗余数据;这里通过对每个采集指标配置fieldpass过滤选取每个指标的采集属性;通过组件指定采集硬件,通过net组件的interfaces配置指定采集的网卡,通过disk组件的mount_points指定采集的磁盘。
[0023]
通过修改telegraf配置文件,进行监控指标的聚合;利用processors.rename组件,设置processors.rename.replace,指定measurement和dest,实现把measurement组件采集的监控数据重定向储存到dest表中;通过field和dest,实现将采集的指标属性重定向到目标表中的字段中;
[0024]
如果采集measurement的field在一个以上的measurement中存在重复项,需要在processors.rename标签下面添加namepass来指定监控数据源组件。
[0025]
通过配置outputs.influxdb,指定database和retention_policy,实现数据的隔离和定期清除。
[0026]
利用cpu组件采集虚机cpu空闲使用率usage_idle(查询时用100减去usage_idle作为cpu使用率),将指标重命名为mongo表的node_cpu_ratio属性;
[0027]
利用mem组件采集虚机memory的used(使用量),used_percent(使用率),将指标重命名为mongo表的node_used_memory和node_used_memory_ratio;
[0028]
利用disk组件,采集虚机数据盘data的used(使用率),将指标重命名为mongo表的node_used_disk;
[0029]
利用net组件采集虚机网卡eth0的bytes_recv(数据接收量)和bytes_send(数据发送量),将指标重命名为mongo表的node_net_recv和node_net_send;
[0030]
利用mongodb组件采集mongodb指标connections_current,delete_command_total,insert_command_total等,将指标重命名到mongo表中;
[0031]
数据查询;监控指标数据存储到influxdb后,查询时只需要对mongo表进行查询即可。
[0032]
本发明的有益效果是
[0033]
能够在不涉及telegraf插件修改的前提下,完成对各种监控指标数据的采集和分类存储,做到只采集汇总有效数据,节约存储成本,提高储存和查询效率。降低方案使用的技术要求,方便使用。
附图说明
[0034]
图1是本发明的部署示意图;
[0035]
图2是本发明的部署实施示意图;
[0036]
图3是本发明数据转换示意图。
具体实施方式
[0037]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038]
本发明提供了一种基于kubernetes的mongodb数据库监控方法主要解决在不修改telegraf源码的基础上采集kubernetes环境docker部署mongodb服务的各项监控指标。不依赖于其他第三方监控工具。精准采集存储监控指标分类存储到influxdb数据库中,减少冗余数据。
[0039]
mongodb部署在kubernetes的docker容器中,kubernetes环境部署influxdb数据库pod,提供虚机可以进行存储的域名,部署提供监控数据查询的cms服务pod。将telegraf部署在mongodb所在的虚机。监控数据采集主要包含数据采集模块和数据存储模块,数据采集模块采用监控工具telegraf,利用插件机制,采集多种资源监控信息,数据存储模块采用influxdb时序数据库。
[0040]
第一个方面,通过ansible在kubernetes环境已创建完成的虚机中利用docker部署mongodb应用。部署环境如附图1所示
[0041]
第二个方面,通过脚本获取部署虚机的id作为采集指标的全局tag resource_id,读取虚机的网卡信息,取ip作为采集指标的全局tag user_ip。通过docker命令启动容器。
[0042]
容器启动时,因采集磁盘信息,需要挂载数据存储的磁盘目录,挂载系统采集磁盘信息的组件目录/proc:/hostfs/proc、/sys:/hostfs/sys,并设置环境变量。
[0043]
第三个方面,通过修改telegraf配置文件,设置全局tag。取docker启动时传入的环境变量resource_id、user_ip等设置[global_tags],这样采集的每条监控数据都具有全局标签,查询时可更具需求进行过滤。
[0044]
第四个方面,通过修改telegraf配置文件,完成采集指标的过滤。telegraf中每个组件采集全量的监控存储数据到各自influxdb对应表中,因此产生冗余数据。这里通过对每个采集指标配置fieldpass过滤选取每个指标的采集属性。通过组件指定采集硬件,通过net组件的interfaces配置指定采集的网卡,通过disk组件的mount_points指定采集的磁盘。
[0045]
第五个方面,通过修改telegraf配置文件,进行监控指标的聚合。利用
processors.rename组件,设置processors.rename.replace,指定measurement和dest,实现把measurement组件采集的监控数据重定向储存到dest表中。通过field和dest,实现将采集的指标属性重定向到目标表中的字段中。如果采集measurement的field在多个measurement中存在重复项,例如mem和disk都存在切需要采集used,需要在processors.rename标签下面添加namepass来指定监控数据源组件。
[0046]
第六个方面,通过配置outputs.influxdb,指定database和retention_policy,实现数据的隔离和定期清除。
[0047]
第七个方面,具体实现方案。利用cpu组件采集虚机cpu空闲使用率usage_idle(查询时用100减去usage_idle作为cpu使用率),将指标重命名为mongo表的node_cpu_ratio属性。利用mem组件采集虚机memory的used(使用量),used_percent(使用率),将指标重命名为mongo表的node_used_memory和node_used_memory_ratio。利用disk组件,采集虚机数据盘data的used(使用率),将指标重命名为mongo表的node_used_disk。利用net组件采集虚机网卡eth0的bytes_recv(数据接收量)和bytes_send(数据发送量),将指标重命名为mongo表的node_net_recv和node_net_send。利用mongodb组件采集mongodb指标connections_current,delete_command_total,insert_command_total等,将指标重命名到mongo表中。具体实现如附图2所示,处理过程如附图3所示。
[0048]
第八个方面,数据查询。监控指标数据存储到influxdb后,查询时只需要对mongo表进行查询即可。可做类似查询
[0049]
select node_cpu_ratio,node_used_memory,ode_used_memory_ratio,node_net_recv,node_net_send,connections_current,delete_command_total,insert_command_total from mongodb.mongo where resource_id=***and user_ip=***
[0050]
定义influxdb数据库中的filed为最小存储单位,定义采集插件对应measurement有n个field,采集指标个数为m,全局tag数量为k那么使用常规telegraf配置方案采集数据所产生的存储量为
[0051][0052]
使用此发明telegraf配置方案采集数据所产生的存储量为m k,数据储存量比例为
[0053][0054]
当指标field个数n,采集指标个数m,全局tag数k增加时,存储量比例变小。由此可以看出当采集指标数量越多,指标field数量越多,全局tag数量越多时,此方案更能节省存储空间。
[0055]
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献