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

基于微服务的OneAgent进程的采集与处理方法与流程

2022-10-13 00:02:35 来源:中国专利 TAG:

基于微服务的oneagent进程的采集与处理方法
技术领域
1.本发明涉及进程的采集与处理领域,具体涉及一种基于微服务的oneagent进程的采集与处理方法。


背景技术:

2.随着互联网技术的飞速发展,以及企业数字化转型提速,软件技术架构由单体应用架构转向到垂直应用架构,在转向到soa(service-oriented architecture,面向服务架构)架构,并由soa架构转向微服务架构的过程。目前已有大量企业采用微服务架构对用户提供服务,同时也带来对服务治理难度的提升。
3.进程(process)是计算机中对程序运行的一种描述集合,是系统进行资源分配和调度的基本单位。在传统应用进程监控以及微服务场景下的服务监控中,往往需要预先设置好想要监控的应用进程,此时得到的数据往往比较单一,引起服务发生异常也不一定是服务本身的原因,异常发生的瞬间需要快照能力去复现进而去分析,成本较高,需要分析的数据量过大,纬度较多,存在分析难度大的问题。通过oneagent进程采集器,通过通用的进程组规则库,在采集层面完成对重要进程组的自动监控,同时通过打标签的方式替代传统对应用监控进行的大量配置。相比传统应用进程监控,这种方式可以更加快速地安装运行,并自动化覆盖用户所关注的所有进程,配合平台更加直观地管控主机的进程运行状况。
4.结合平台对同一主机进程组数据分析,往往在服务发生异常问题的瞬间分析相关联的进程组运行状况。同时可以对相关进程组设置监控条件,在服务运行过程中,提前感知到可能发生的异常问题。
5.盛从伟等人在进程管理方法及进程管理装置中对进程采集通过在shell命令中写入查询进程id命令,在进行一系列命令分析得到进程数据,通过主进程获得所有级别的子进程的进程id,从而允许主进程针对特定的目标子进程进行监控和管理。
6.现有技术采集进程数据时不够系统全面,无法直接定位进程提供的服务,数据出来后还需要特定的运维人员确认问题进程。因此在本发明中,利用oneagent进程采集的一系列能力,极大增强对进程运维的自动化能力。
7.现有技术没有考虑到微服务场景下容器级别的进程与主机进程对齐,在微服务场景下很难协助运维解决问题。
8.现有技术需要人为主观或者对接外部运维系统判断进程问题。


技术实现要素:

9.本发明提供了一种基于微服务的oneagent进程的采集与处理方法。
10.本发明通过oneagent快速收集系统及微服务场景下进程数据并处理为进程组数据。本发明利用进程组规则库快速对进程组打标签,从更多角度描述进程组,对进程组分类。本发明通过丰富的进程组描述信息,精确识别僵尸进程、孤儿进程,可对系统进程进行快速且精确的治理。本发明服务发生异常时,可以通过平台快速定位异常进程运行状况。本
发明具备远端自动启动进程组能力。
11.一种基于微服务的oneagent进程的采集与处理方法,包括:1)oneagent采集器通过proc文件夹轮询递归去采集进程基本信息,采集容器的运行信息,结合进程使用端口情况,匹配得到系统进程与虚拟容器的关联关系;2)oneagent采集器通过进程组规则库对进程组匹配所使用的开发语言以及通过进程组规则库对进程组匹配是否为中间件,得到匹配后更新的进程信息;3)将步骤1)得到的进程基本信息、系统进程与虚拟容器的关联关系以及步骤2)匹配后更新的进程信息发送到数据存储的微服务模块。
12.本发明中,先进行预处理得到进程组数据,通过预先配置的进程组规则库,对进程组数据进行打标签操作,最终将处理后的数据上报平台,平台将聚合历史上报的进程组数据同时分析进程组状态数据,平台还作为视图层展示进程组基础信息及统计结果,同时平台对无法归类到进程组的僵尸进程以及孤儿进程进行治理。在服务发生异常情况时,平台通过进程组数据快速定位异常主机及相关进程组运行状况。
13.步骤1)中,所述的进程基本信息包括:进程id、进程名、进程启动命令参数、进程内存占用数据、cpu占用信息、进程使用输入输出数据、进程使用端口情况;通过proc文件夹轮询递归,具体包括:读取proc文件夹的进程目录,得到进程id;读取proc文件夹的启动命令参数文件,里面包含进程名、进程启动命令参数;读取proc文件夹的输入输出文件,包含进程使用输入输出数据;读取proc文件夹的状态文件,包含进程内存占用数据;读取proc文件夹的cpu占用文件,包含cpu占用信息;通过proc文件夹的文件句柄目录和文件类型找到进程使用端口情况,包括端口占用、协议类型以及端口状态;进程组数据:进程及子进程基础数据,同时还包含进程组规则库分析出的标签数据:状态、端口占用情况、语言、中间件、技术栈。
14.采集容器的运行信息,具体包括:通过容器api接口获取容器运行的列表,容器运行的列表包括容器id和容器名;通过容器运行的列表中的端口号占用得到容器运行时端口占用列表。
15.容器的运行信息包括:容器id、容器名、容器运行时端口占用列表。
16.步骤2)中,进程组规则库,包括:2.1)进程组匹配所使用的开发语言,通过进程基本信息的进程启动命令参数使用正则表达式得到进程使用开发的语言,将进程使用开发的语言加入进程信息中;2.2)进程组匹配是否为中间件,通过进程基本信息的进程名进行匹配,如果匹配得到中间件信息,则该中间件信息加入进程信息中;进程组规则库:用于分析原始进程数据,通过对不同字段对分析,得到进程组数据。
17.进程是执行中的程序,一个程序加载到内存中即为进程。oneagent通过定时轮询系统进程描述信息,如linux下通常会有 proc 表对应的文件结构用于描述进程运行状况,包含进程id、进程名、进程启动命令参数、进程内存占用数据、cpu占用信息、进程使用输入
输出数据、进程使用端口,oneagent启动后通过定时器,主动拉去进程文件,读取文件信息,解析对应的数据,这些数据oneagent将它定义为进程原始数据。得到原始数据后,缓存当前采集的数据,当下一次在进行采集的时候可以与第一次cpu、内存数据进行运算,得到该进程cpu、内存占用情况,同时通过oneagent配置好的数据处理方法,有字符匹配逻辑与正则表达式匹配方式,这些规则以过滤器模式被安装在oneagent中,过程中不断匹配,得到结果会以标签的加入到原本的进程数据上,最终被输出到进程组的数据结构,上报到数据中心。
18.与现有技术相比,本发明具有如下优点:一、自动化程度高,可扩展标签,多角度丰富进程组数据;二、基于进程组的采集更精确的对系统进程治理;三、oneagent采集模式效率高,资源消耗低,无需跟踪进程id,自动对齐重启后的进程组。
附图说明
19.图1是本发明提供的基于微服务的oneagent进程的采集与处理方法的整体流程图。
20.图2是本发明提供的基于微服务的oneagent进程的采集与处理方法的进程采集流程图。
21.图3是本发明提供的基于微服务的oneagent进程的采集与处理方法的进程组规则处理流程图;图4是本发明提供的基于微服务的oneagent进程的采集与处理方法的平台处理流程图。
22.图5是本发明提供的基于微服务的oneagent进程的采集与处理方法的采集进程数据流程图。
具体实施方式
23.本发明是为了解决基于微服务的oneagent进程组采集及进程组治理而进行的,目的在于通过oneagent进程组采集模块采集到关键进程组信息来监控进程组提前预警可能会发生的异常情况。如图1所示,主要包括一下六个模块:进程数据采集、进程组规则库、进程组数据处理、平台数据存储、告警模块、展现模块。
24.一、进程数据采集进程采集主要采集进程基本信息,还包含容器情况下的进程采集,linux下采集进程数据具体包括:1.读取 /proc/{pid}/ 目录, {pid} 为进程id数据;2.读取 /proc/{pid}/cmdline文件,里面包含进程名、进程启动命令参数;3.读取 /proc/{pid}/io文件,包含进程使用io情况;4.读取 /proc/{pid}/status文件,包含进程使用内存情况;5.读取 /proc/{pid}/stat文件,包含进程使用cpu情况;6.通过 /proc/{pid}/fd目录找到进程使用端口情况;7.进程基本信息:进程id、进程名、进程启动命令参数、用户信息、内存使用信息、
cpu占用信息、io使用信息、网络使用情况;8.容器场景:包含进程基本信息,同时会排除容器代理进程,代理进程占用的端口会合并到原始进程信息,对应的容器id将会作为标签打包到数据结构中。
25.如图2所示,是本发明提供的基于微服务的oneagent进程组采集器及进程组治理方法的进程采集流程图,包括:a.读取proc文件夹的进程目录,得到进程id;b.读取proc文件夹的启动命令参数文件,里面包含进程名、进程启动命令参数;c.读取proc文件夹的输入输出文件,包含进程使用输入输出数据;d.读取proc文件夹的状态文件,包含进程内存占用数据;e.读取proc文件夹的cpu占用文件,包含cpu占用信息;f.通过proc文件夹的文件句柄目录和文件类型找到进程使用端口情况,包括端口占用、协议类型以及端口状态;g.通过容器api接口获取容器运行的列表。
26.进程数据采集示例:1)、命令获取:读取/proc/5286/cmdline 文件,获得以下关键参数:/usr/share/elasticsearch/jdk/bin/javaorg.elasticsearch.bootstrap.elasticsearch;2)、端口占用获取:读取/proc/5286/fd/socket:[xxxxx]等socket类型文件,结合/proc/net/tcp、/proc/net/tcp6 网络端口占用文件句柄匹配得出该进程网络端口占用情况;3)、分别读取 /proc/5286/io、/proc/5286/status、/proc/5286/stat等文件定时获取两个时刻数据,进而分析得到该进程内存、cpu、io占用情况。
[0027]
二、进程组规则库如图3所示,是本发明提供的基于微服务的oneagent进程组采集器及进程组治理方法的进程组规则处理流程图,包括:a.导入进程组数据:包含进程id、进程名、进程启动命令参数、进程内存占用数据、cpu占用信息、进程使用输入输出数据、进程使用端口情况;b.导入进程组开发语言规则库:匹配进程使用的开发语言;c.导入进程组中间件规则库:匹配进程是否为规则库内的中间件;d.匹配到的开发语言与中间件数据合并到进程组数据中,上报数据。
[0028]
进程组规则库是一个具有扩展性质的匹配规则描述,进程组规则库主要包含以下信息:1.进程组匹配所使用的开发语言规则库(java、python、golang、nodejs、dotnet);2.进程组匹配该进程是否为主流中间件规则库,如nginx、tomcat、数据库中间件;3.通过服务的特征信息收集,定义可实现的规则库;4.通用的规则处理方法,将规则库进行分类,目前常用的类型有正则表达式;5.典型服务规则库示例:5.1)、识别elasticsearch服务具体规则:正则表达式匹配上一步采集得到的命令行数据,与以下两组正则表达式规则匹配,都匹配成功则确认为elasticsearch服务本身;
a、org.elasticsearch.bootstrap.elasticsearch;b、(.*)(java) ;5.2)、识别mysql服务具体规则:正则表达式匹配上一步采集得到的命令行数据,与以下正则表达式规则匹配,匹配成功则确认为mysql服务本身;a、(.*)(mysqld) ;5.3)、识别tomcat服务具体规则:正则表达式匹配上一步采集得到的命令行数据,与以下两组正则表达式规则匹配,匹配成功则确认为tomcat服务本身;a、org.apache.catalina.startup.bootstrap;b、(.*)(java) ;6.通用正则表达式处理方法:abstract method: function(regex, sourcedata) boolean。
[0029]
三、进程组数据处理进程组数据处理模块,追加新的属性,并规整微服务部署场景下的进程数据:1.进程组数据进过进程组规则库处理后会新增开发语言、主流中间件、端口占用等标签;2.通过cri(container runtime interface)接口获取主机容器数据,主要包含容器id、容器名、容器占用资源、容器网络信息;3.容器内的进程与外部主机进程对齐,包含容器相关的关键字段;4.采集到的进程列表如有关联的容器将会把容器id与之对应。
[0030]
四、平台数据存储进程组历史数据将会保存一段时间用于分析定位问题:1. oneagent进程采集器将处理过的进程组数据上报给平台;2.平台将收集到的大量主机上报的进程组数据存入数据中心的分布式系统。
[0031]
五、告警模块1.平台预置进程组资源使用相关数据的告警阈值,可以修改;2.平台收集进程组资源数据过程中通过告警处理模块,提前预警可能存在的资源占用问题。
[0032]
六、展现模块平台提供bs架构用于交互操作:1.快速定位对应主机下的进程组,实时展示进程组资源消耗情况;2.平台预警一些进程组资源使用过高风险。
[0033]
如图4所示,是本发明提供的基于微服务的oneagent进程组采集器及进程组治理方法的平台处理流程图,包括:a.oneagent采集数据上报平台;b.平台接收数据;c.平台处理数据;
d.经过阈值规则处理发现问题数据,进而发起告警;e.进程数据存储;f.页面展示进程组数据。
[0034]
如图5所示,是本发明提供的基于微服务的oneagent进程组采集器及进程组治理方法的采集进程数据流程图,包括:a.开始采集数据;b.轮询proc文件夹;c.采集进程信息;d.保留上次采集数据;e.统计进程资源占用情况;f.采集容器数据;g.规整主机与进程数据;h.上报数据。
[0035]
本发明中的方法无需特定的操作系统类型,进程数据指的是操作系统级别的进程,只需要按照不同的系统做适配兼容即可。
[0036]
进程组规则库分为对进程程序语言分析库和主流中间件匹配库,可以根据语言以及中间件进行扩展,一种语言或中间件可以具备多种匹配规则,最终可以通过逻辑运算符或者权重打分的方式获得最终的结论,通过进程组规则库的方式更加便捷智能的分析出进程组更丰富的数据,使得后续对进程组监控更加精确易用。
[0037]
对比传统对进程监控,往往得到的进程数据都是杂乱的,得到一堆进程数据,治理无法下手,通过一系列进程组采集,容器进程的对齐,再结合进程组规则库匹配,得到的进程数据更加明确丰富,配合平台展示,直观地看到进程组运行状况,相关开发或运维人员快速就能找到部署的应用运行状况。
[0038]
本发明全程自动的规整进程组数据,从原本几百个杂乱的进程中梳理出用户关注的进程组,同时快速定位僵尸进程、孤儿进程,结合平台快速帮助系统进行进程治理与资源回收。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献