基于端口队列特征判断进程运行状态的方法及装置与流程

文档序号:33371239发布日期:2023-03-08 02:20阅读:19来源:国知局
基于端口队列特征判断进程运行状态的方法及装置与流程

1.本发明涉及软件质量监控技术领域,尤其涉及一种基于端口队列特征判断进程运行状态的方法及装置。


背景技术:

2.对于进程运行状况,在监控形式上大多以守护进程的方式进行,监控的内容多以某进程在系统的状态码是否正常、pid标识是否正常或者是查询进程自己的运行日志是否有异常信息。
3.对于以守护进程监控的形式,在有系统加固项的客户环境,需要配置识别权限,如果存在多个第三方安全组件,却不能互相识别的话,很容易将某守护进程误判为木马进程而杀死,造成软件是去监控功能。如果要协调多方开放权限或配置互信,又会增加实施人员对外沟通成本。
4.对于监控内容,以进程整体状态码为监控标准,难以发现进程中某一单一线程具体关心的指标项,如遇到某一线程卡顿或无法工作,此时进程状态往往还是正常,无法准确获知运行的关键项状态。
5.而依靠进程自身预制好的日志信息来获取异常状态,一旦某进程由于死锁或未知原因卡死,此时是没有机会打印日志文件的,且日志文件无法预知位置问题,并做好异常信息的输出。对于有大量通信交互的线程或进程常会有处理能力异常导致队列占满而丢包的情况,但此时进程的状态是正常的,靠此方法无法感知到这种通信异常的情况。


技术实现要素:

6.本发明针对现有进程运行状态监控存在的对第三方软件关联互信的沟通成本高、普通进程状态或日志无法预料或感知到的通信异常情况等问题,提出一种基于端口队列特征判断进程运行状态的方法及装置,采用系统权限定时启动调用的方式,避开守护进程被误判杀死的情况,减少对第三方软件关联互信的沟通成本;对于通信进程关心的通信量、信道状态做专门的检测,以解决普通进程状态或日志无法预料或感知到的通信异常情况,为后续的及时处理提供准确可靠的检测结果,确保系统正常运行。
7.为了实现上述目的,本发明采用以下技术方案:本发明一方面提出一种基于端口队列特征判断进程运行状态的方法,包括:步骤1:通过系统cron定时器设置进程运行状态定时检查任务;步骤2:cron定时检查任务被触发后,首先通过每个进程的pid文件中记录的进程号,查询该进程是否存在返回值为0的情况,若是则记为正常;步骤3:若步骤2中不存在返回值为0的情况,则通过systemd模块查询每个进程的详细信息,并通过正则过滤出关键字段“active”、“process”、“cgroup”,确认进程的状态、关联组件是否完整,返回值为0记为正常;步骤4:若步骤3中返回值不为0,则指定配置文件“file1”获取tomcat的通信配置
文件“file2”,以进行指定端口进程运行状态的检查;步骤5:重复执行步骤2至步骤4,当所有端口的返回值都为0时,说明所有端口的通信都正常,跳出循环,此时检查的总返回值记为0;若所有端口的返回值存在不为0的情况,则重置tomcat进程,转至步骤2。
8.进一步地,所述步骤4包括:步骤4.1、通信配置文件“file2”匹配线程已经开启的通信信道端口号并记入端口队列list_port中;步骤4.2、调用系统通信监控模块,逐一检查指定进程的指定端口是否存在list_port中,若是则执行步骤4.3,若否,则开启对应端口,转至步骤4.1;步骤4.3、查询端口通信队列当前报文数量,记在arr_a_size[num]数组中;其中a表示进程;步骤4.4、若检查发现传回的端口队列报文数arr_ a _size[num]为空,则该队列通信异常,此时该队列指定状态参数check_ a _result记为2,并跳出循环,进入下一个端口的检查;步骤4.5、若检查发现arr_ a _size[num]不为空但为0,则信道通信正常,且没有报文积压,跳出循环,check_ a _result记为0;步骤4.6、若检查发现arr_ a _size[num]不为空且不为0,如果是第一次循环,则记录该值,传入check_ a _tmp中,作为下一个循环的记录;如果不是第一次循环,则将check_ a _tmp与该值比较:若不等,说明处理线程还在正常工作,check_ a _result记为0,退出循环,如果相等,则存在队列积压已满的风险,check_ a _result记为1,进入下一个比较的循环。
[0009]
本发明另一方面提出一种基于端口队列特征判断进程运行状态的装置,包括:定时器设置单元,用于通过系统cron定时器设置进程运行状态定时检查任务;进程运行状态第一检查单元,用于cron定时检查任务被触发后,首先通过每个进程的pid文件中记录的进程号,查询该进程是否存在返回值为0的情况,若是则记为正常;进程运行状态第二检查单元,用于若进程运行状态第一检查模中不存在返回值为0的情况,则通过systemd模块查询每个进程的详细信息,并通过正则过滤出关键字段“active”、“process”、“cgroup”,确认进程的状态、关联组件是否完整,返回值为0记为正常;进程运行状态第三检查单元,用于若进程运行状态第二检查单元中返回值不为0,则指定配置文件“file1”获取tomcat的通信配置文件“file2”,以进行指定端口进程运行状态的检查;进程运行状态检查结果返回单元,用于重复执行进程运行状态第一检查单元至进程运行状态第三检查单元,当所有端口的返回值都为0时,说明所有端口的通信都正常,跳出循环,此时检查的总返回值记为0;若所有端口的返回值存在不为0的情况,则重置tomcat进程,转至进程运行状态第一检查单元。
[0010]
进一步地,所述进程运行状态第三检查单元具体用于:步骤4.1、通信配置文件“file2”匹配线程已经开启的通信信道端口号并记入端口队列list_port中;
步骤4.2、调用系统通信监控模块,逐一检查指定进程的指定端口是否存在list_port中,若是则执行步骤4.3,若否,则开启对应端口,转至步骤4.1;步骤4.3、查询端口通信队列当前报文数量,记在arr_a_size[num]数组中;其中a表示进程;步骤4.4、若检查发现传回的端口队列报文数arr_ a _size[num]为空,则该队列通信异常,此时该队列指定状态参数check_ a _result记为2,并跳出循环,进入下一个端口的检查;步骤4.5、若检查发现arr_ a _size[num]不为空但为0,则信道通信正常,且没有报文积压,跳出循环,check_ a _result记为0;步骤4.6、若检查发现arr_ a _size[num]不为空且不为0,如果是第一次循环,则记录该值,传入check_ a _tmp中,作为下一个循环的记录;如果不是第一次循环,则将check_ a _tmp与该值比较:若不等,说明处理线程还在正常工作,check_ a _result记为0,退出循环,如果相等,则存在队列积压已满的风险,check_ a _result记为1,进入下一个比较的循环。
[0011]
与现有技术相比,本发明具有的有益效果:1、对于有多方软件(尤其是第三方安全控制软件)并存的场景,本发明采用不用守护进程而用系统定时器的方式,可以避免守护进程自身运行健壮性问题导致检测失效的风险。
[0012]
2、本发明使用系统自带定时器和root权限,可以将特权控制收拢到同一区域,方便监管和降低沟通成本。
[0013]
3、本发明通过特定进程端口队列等关键信息方式监控进程在某一特定功能的运行状况,更加直接且准确。
附图说明
[0014]
图1为本发明实施例一种基于端口队列特征判断进程运行状态的方法的流程示意图。
具体实施方式
[0015]
下面结合附图和具体的实施例对本发明做进一步的解释说明:如图1所示,本发明的一种基于端口队列特征判断进程运行状态的方法,该监控形式是以调用系统cron定时器,触发定时任务的形式,获得root权限执行检查任务。在检查时从三个方面检查,包括:步骤1:通过系统crontab配置文件配置cron定时器以进行进程运行状态定时检查任务。
[0016]
步骤2:cron定时检查任务被触发后,首先通过每个进程的pid文件(linux系统文件,具体用于保存进程的id)中记录的进程号,查询该进程是否存在返回值为0的情况,若是则记为正常。
[0017]
步骤3:若步骤2中不存在返回值为0的情况,则通过systemd模块(linux系统模块,具体用于管理远程节点的systemd服务)查询每个进程的详细信息,并通过正则过滤出关键
字段“active”“process”“cgroup”,确认进程的状态、关联组件是否完整,返回值为0记为正常。
[0018]
步骤4:若步骤3中返回值不为0,则指定配置文件“file1”获取tomcat的通信配置文件“file2”,以进行指定端口进程运行状态的检查。
[0019]
步骤5:重复执行步骤2至步骤4,每一轮后,当所有端口的返回值都为0时,说明所有端口的通信都正常,跳出循环,此时检查的总返回值记为0;若所有端口的返回值存在不为0的情况,则重置tomcat进程,转至步骤2。
[0020]
进一步地,所述步骤4包括:步骤4.1、通信配置文件“file2”匹配线程已经开启的通信信道端口号并记入端口队列list_port中;步骤4.2、调用系统通信监控模块,逐一检查指定进程的指定端口是否存在list_port中,若是则执行步骤4.3,若否,则开启对应端口,转至步骤4.1;步骤4.3、查询端口通信队列当前报文数量,记在arr_a_size[num]数组中;其中a表示进程;步骤4.4、若检查发现传回的端口队列报文数arr_ a _size[num]为空,则该队列通信异常,此时该队列指定状态参数check_ a _result记为2,并跳出循环,进入下一个端口的检查;步骤4.5、若检查发现arr_ a _size[num]不为空但为0,则信道通信正常,且没有报文积压,跳出循环,check_ a _result记为0;步骤4.6、若检查发现arr_ a _size[num]不为空且不为0,如果是第一次循环,则记录该值,传入check_ a _tmp中,作为下一个循环的记录;如果不是第一次循环,则将check_ a _tmp与该值比较:若不等,说明处理线程还在正常工作,check_ a _result记为0,退出循环,如果相等,则存在队列积压已满的风险,check_ a _result记为1,进入下一个比较的循环。
[0021]
作为一种可实施方式,当进程a为syslog时,其对应的默认端口为514,步骤4具体展开如下:步骤4.1s、通信配置文件“file2”,匹配线程已经开启的通信信道端口号记入端口队列list_port中。
[0022]
步骤4.2s、调用系统通信监控模块,检查指定进程syslog的指定端口514是否存在list_port中,若是则执行步骤4.3s,若否,则开启对应端口,转至步骤4.1s。
[0023]
步骤4.3s、查询端口通信队列当前报文数量,记在arr_syslog_size[num]数组中,该数组最大记录20次。
[0024]
步骤4.4s、若检查发现传回的端口队列报文数arr_syslog_size[num]为空,说明该队列通信异常,此时返回该队列指定状态参数check_syslog_result记为2,并跳出循环,进入下一个端口的检查。
[0025]
步骤4.5s、若检查发现arr_syslog_size[num]不为空但为0,说明信道通信正常,且没有报文积压,也跳出循环,check_syslog_result记为0。
[0026]
步骤4.6s、若检查发现arr_syslog_size[num]不为空且不为0,如果是第一次,则记录该值,传入check_syslog_tmp中,作为下一个循环的记录。如果不是第一次,则将
check_syslog_tmp与该值比较:若不等,说明处理线程还在正常工作,check_syslog_result记为0,退出循环。如果相等,则有可能出现队列积压已满的风险,进入check_syslog_result记为1,进入下一个比较的循环。
[0027]
值得说明的是,当触发进程通信功能异常时,除了自动做出应急处置外,还会在日志中记录应急处置的触发时间、触发条件信息、触发处理行为记录。以便工作人员定期维护时审计使用。
[0028]
在上述实施例的基础上,本发明另一方面提出一种基于端口队列特征判断进程运行状态的装置,包括:定时器设置单元,用于通过系统cron定时器设置进程运行状态定时检查任务;进程运行状态第一检查单元,用于cron定时检查任务被触发后,首先通过每个进程的pid文件中记录的进程号,查询该进程是否存在返回值为0的情况,若是则记为正常;进程运行状态第二检查单元,用于若进程运行状态第一检查模中不存在返回值为0的情况,则通过systemd模块查询每个进程的详细信息,并通过正则过滤出关键字段“active”、“process”、“cgroup”,确认进程的状态、关联组件是否完整,返回值为0记为正常;进程运行状态第三检查单元,用于若进程运行状态第二检查单元中返回值不为0,则指定配置文件“file1”获取tomcat的通信配置文件“file2”,以进行指定端口进程运行状态的检查;进程运行状态检查结果返回单元,用于重复执行进程运行状态第一检查单元至进程运行状态第三检查单元,当所有端口的返回值都为0时,说明所有端口的通信都正常,跳出循环,此时检查的总返回值记为0;若所有端口的返回值存在不为0的情况,则重置tomcat进程,转至进程运行状态第一检查单元。
[0029]
进一步地,所述进程运行状态第三检查单元具体用于:步骤4.1、通信配置文件“file2”匹配线程已经开启的通信信道端口号并记入端口队列list_port中;步骤4.2、调用系统通信监控模块,逐一检查指定进程的指定端口是否存在list_port中,若是则执行步骤4.3,若否,则开启对应端口,转至步骤4.1;步骤4.3、查询端口通信队列当前报文数量,记在arr_a_size[num]数组中;其中a表示进程;步骤4.4、若检查发现传回的端口队列报文数arr_ a _size[num]为空,则该队列通信异常,此时该队列指定状态参数check_ a _result记为2,并跳出循环,进入下一个端口的检查;步骤4.5、若检查发现arr_ a _size[num]不为空但为0,则信道通信正常,且没有报文积压,跳出循环,check_ a _result记为0;步骤4.6、若检查发现arr_ a _size[num]不为空且不为0,如果是第一次循环,则记录该值,传入check_ a _tmp中,作为下一个循环的记录;如果不是第一次循环,则将check_ a _tmp与该值比较:若不等,说明处理线程还在正常工作,check_ a _result记为0,退出循环,如果相等,则存在队列积压已满的风险,check_ a _result记为1,进入下一个比较的循环。
[0030]
综上,对于有多方软件(尤其是第三方安全控制软件)并存的场景,本发明采用不用守护进程而用系统定时器的方式,可以避免守护进程自身运行健壮性问题导致检测失效的风险。本发明使用系统自带定时器和root权限,可以将特权控制收拢到同一区域,方便监管和降低沟通成本。本发明通过特定进程端口队列等关键信息方式监控进程在某一特定功能的运行状况,更加直接且准确。
[0031]
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1