CN100514962C - 大型网络中主机性能采集代理*** - Google Patents
大型网络中主机性能采集代理*** Download PDFInfo
- Publication number
- CN100514962C CN100514962C CNB2004100811328A CN200410081132A CN100514962C CN 100514962 C CN100514962 C CN 100514962C CN B2004100811328 A CNB2004100811328 A CN B2004100811328A CN 200410081132 A CN200410081132 A CN 200410081132A CN 100514962 C CN100514962 C CN 100514962C
- Authority
- CN
- China
- Prior art keywords
- alarm
- host
- performance
- information
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开的是一种大型网络中主机性能采集代理***,通过主机信息获取模块获取主机的基本性能数据和统计性能数据;接口模块提供标准SNMP接口,响应性能采集SNMP请求,提供实时的性能数据;TRAP告警生成模块和MIB表更新模块接收告警条件设置,实时检查性能数据,性能指标超过告警阈值则主动发送包含具体信息的SNMP TRAP告警。适用于Linux、Solaris等类Unix操作***平台的主机。
Description
技术领域
本发明涉及一种网络中主机的监控报警装置,特别涉及一种大型网络中主机性能采集代理***。
背景技术
在信息技术高速发展的今天,网络管理也越来越受到人们的重视,相应的网管软件也是层出不穷。它们大多数都提供了某些针对网络主机的监控功能,不过还是不够完善。
目前市场上一些比较有代表性的网管产品,如:HP的Openview。它支持广泛的应用程序和工具的集成,能够满足不同的网络和***危险需求,并能够对局域网或广域网中所涉及的每一个环节中的关键网络设备及主机部件(包括CPU、内存、主板等)进行实时监控,及时发现问题,并自动根据网络管理员预先制定的策略进行响应。IBM的Netview是在HP Openview的基础之上发展起来的。它加入了大量的应用,提供了强大的信息过滤能力,并通过设置阀值来减少部分冗余警告。可是它不具备理解网络设备间的依赖关系的能力,对大规模的主机服务器监控还不是十分的完备。
上述提到的两种网管产品以及其他大多数的产品,其性能数据的采集都是基于标准简单网络管理协议SNMP(Simple NetworkManagement Protocol)协议。主机资源MIB(Management InformationBase)组(RFC1790)定义了一系列的对象,包括磁盘容量、***用户数、当前运行进程数以及当前安装的软件信息。常见发行版Linux***和Solaris***自身集成的SNMP代理有的不包含主机资源MIB组,有的能采集到的性能信息太少,不能满足管理和监控的需要。另外SNMP预定义的7种TRAP(陷阱)信息也远远不能满足实际管理中对故障的定义和通知需要。
发明内容
本发明克服了现有技术的缺陷,提供了一种可采集程序的SNMP查询请求,提供性能信息,分析数据并产生告警信息的主机性能采集代理***。
为了实现上述目的,本发明是通过如下的技术方案来实现的。
一种大型网络中主机性能采集代理***,该主机性能采集代理***包括:主机信息获取模块,其获取主机的基本性能数据和统计性能数据;MIB表更新模块,其提供标准SNMP接口,响应性能采集SNMP请求,提供实时的性能数据;TRAP告警生成模块,其接收告警条件设置,实时检查性能数据,性能指标超过告警阈值则主动发送包含具体信息的SNMP TRAP告警;及接口模块;
该主机性能采集代理***通过所述接口模块分别与外部的主机监控界面、性能采集程序和告警服务器进行交互;TRAP告警生成模块产生的告警信息通过所述接口模块发送给外部的告警服务器,外部的性能采集程序请求的MIB信息通过所述接口模块向MIB表更新模块请求得到,外部的告警服务器转发告警信息给主机监控***,由主机监控界面通过所述接口模块给MIB表更新模块发送配置数据和告警条件,并进行相应配置数据的更新;
所述主机信息获取模块执行如下功能:循环地获取由主机进程的信息、用户登录信息、文件***使用信息和文件***卷空间使用信息构成的基本性能数据,以及由进程数目、CPU占用率最高的进程和内存占用率最高的进程构成的统计性能数据,并实时更新;
所述MIB表更新模块,执行如下功能:读取从主机信息获取模块得到的性能数据后进行MIB表刷新;读取从所述接口模块接收的外部的主机监控界面获得的配置数据后写配置数据,然后进行MIB表刷新并处理设置请求;
所述TRAP告警生成模块,执行如下功能:将从主机信息获取模块获得的相应的性能数据和从存放告警条件的配置文件中读取的告警阈值周期性地进行比对,如果所述性能数据超过告警阈值则以标准SNMPTRAP的方式发送告警信息;告警信息的类型包括进程数目变化、总的CPU占用率超标、进程CPU占用率超标和进程内存占用率超标四种;
所述接口模块包括三个标准的SNMP接口,一个是所述接口模块和外部的性能采集程序的接口,用于响应SNMP请求,提供性能数据;一个是所述接口模块与外部的告警服务器的接口,用于发送TRAP告警;另一个是所述接口模块和外部的主机监控界面的接口,用于响应SNMP的设置请求,更改当前监控进程及各项告警条件。
所述TRAP告警生成模块对分别用来存放消失的进程和正在告警的进程信息的两个列表进行维护,以使正常运行的进程消失后发送一次进程消失的TRAP告警,进程反复重启多次或进程当前数目与配置的数目持续不符时也只发送一条告警。
所述TRAP告警生成模块包括三个计数器,所述三个计数器分别对应于总的CPU占用率超标、进程CPU占用率超标和进程内存占用率超标这三类告警,分别用于过滤掉CPU占用率、进程CPU占用率和进程内存占用率的瞬间峰值。
在计数器的基础上增加一个计数指数模块,以延长当某项性能持续超标或用户配置告警阀值错误时告警发送的周期。
所述主机信息获取模块具体执行如下功能:利用shell脚本得到基本性能数据后用包括tail,awk或grep的工具对存储性能数据的文件进行解析,把所需数据存放到相应文件;通过对主机进程的信息再处理获得统计性能数据,并存放到相应文件。
所述MIB表更新模块具体执行如下功能:当主机信息获取模块发出查询请求时读取性能数据文件并进行一定的格式转换并更新相应的OID;以与读取性能数据的方法相同读取配置数据;接收从接口模块取得的主机监控***的设置命令后,进行解析,然后更新相应的配置文件来写配置数据。
所述主机性能采集代理***采用控制交互式程序的工具Expect进行主机性能采集代理的部署,用非交互的方式实现了所有交互式的功能,完成大量的主机性能采集代理部署工作。
本发明的优点在于:
1、能够提供标准的SNMP所不能提供的信息,使管理员获得更充实的信息。由于设置了主机信息获取模块,可通过SHELL脚本程序来获得如下信息:(1)管理员指定的主机进程详细信息,包括进程ID、用户名、命令名称、CPU占用率、内存占用率、占用虚拟内存大小、占用物理内存大小、启动时间、运行时间和优先级;(2)用户登录信息,包括用户名、终端名和登陆机器IP;(3)文件***inode节点详细信息,包括卷名称、所有inode数量、已用inode数量、可用inode数量、已用inode百分比和挂载点;(4)文件***分区详细信息,包括卷名称、所有卷空间、已用卷空间、可用卷空间、已用卷空间百分比和挂载点,并且进行实时的更新,使管理员获得了更充实的信息。
2、能够分析数据并产生告警,实现对主机更有效的监控。由于设置了TRAP告警生成模块,可通过接口模块向告警服务器发送下列告警信息:(1)指定监控的进程的数目变化告警;(2)总的CPU占用率超标告警;(3)进程CPU占用率超标告警;(4)进程内存占用率超标;并且能够对各项告警条件进行灵活设置,以实现对主机更有效的监控。
3、可降低TRAP告警误报率,提高告警准确性。对总的CPU占用率超标、进程CPU占用率超标和进程内存占用率超标三类告警每一类都增加一个计数器,过滤掉CPU占用率、进程CPU占用率和进程内存占用率的瞬间峰值。对三类告警增加一个计数指数,延长当某项性能持续超标或用户配置告警阀值错误时告警发送的周期。
附图说明
图1为本发明在所管理网络中的位置以及与整个网络管理***关系示意图;
图2为本发明在整个***中的体系结构图;
图3为本发明的流程图;
图4为本发明的模块结构示意图;
图5为主机信息获取模块流程图;
图6为读性能信息方法流程图;
图7为写配置信息方法流程图;
图8为MIB表刷新方法流程图;
图9为进程数目告警生成流程图;
图10为数组1与数组2比较生成告警信息的流程图;
图11为CPU占用率、进程CPU占用率和进程内存占用率告警生成流程图;
图12为接口模块的功能示意图;
图13为进程数目告警生成改进流程图;
图14为CPU占用率、进程CPU占用率和进程内存占用率告警生成改进流程图;
图15为利用代理机制进行部署简要流程图;
图16为本发明安装流程图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的描述。
本发明的主要载体是运行在每一台受监控主机上的一个主机性能采集代理,主要功能是获取标准SNMP所不提供的数据信息,并以特定方式进行保存;提供标准SNMP接口,响应性能采集程序发来的SNMP请求,提供实时的性能数据,并且实时检查性能数据,若有某告警指标超标等情况则主动向告警服务器发送TRAP告警,告警内容为相应的具体信息;接受主机监控***界面发来的命令以设置监控进程和告警条件。
本发明在所管理网络中的位置以及与整个网络管理***关系示意图如图1所示,因为是持续运行在远程的主机上,必须有很高的稳定性;为了达到实时监控的目的以及满足性能采集程序的采集要求,还必须有很高地执行效率和数据的实时性和准确性;另外为防止重复持续的告警给主机监控***界面和用户造成信息拥堵,还必须对告警进行过滤,避免垃圾告警,降低告警误报率,提高告警信息的准确性和有效性。
1.功能设计
主要的功能包括:
1.响应进程采集程序的SNMP查询请求,提供如下性能信息:
(1)主机进程(管理员指定)的详细信息,包括进程ID、用户名、命令名称、CPU占用率、内存占用率、占用虚拟内存大小、占用物理内存大小、启动时间、运行时间和优先级;
(2)CPU使用率信息;
(3)用户登录信息,包括用户名、终端名和登陆机器IP;
(4)文件***inode使用量信息,包括卷名称、所有inode数量、已用inode数量、可用inode数量、已用inode百分比和挂载点;
(5)文件***卷空间使用量信息,包括卷名称、所有卷空间、已用卷空间、可用卷空间、已用卷空间百分比和挂载点;
2.分析数据并产生告警信息,以SNMP TRAP报文形式提交给告警服务器(在主机监控***界面中进行告警显示,通知管理员及时进行维护和查找原因)。
(1)进程数目变化,既管理员指定监控的进程的个数变化;
(2)总的CPU占用率超标;
(3)进程CPU占用率超标;
(4)进程内存占用率超标;
(5)接收主机监控界面的用户的配置,响应SNMP的set请求,变更当前监控进程及各项告警条件。
2.***体系结构设计
在这个部分中,我们将描述主机性能采集代理在整个***中的体系结构的设计方案。
主机性能采集代理需要分布在整个内部的一个大型网络上的每一台主机,负责获取本地主机的相关性能数据并提供接口,主动发送告警信息,接受主机监控***上层界面发来的命令以设置监控进程和告警条件,在整个***中与主机监控***上层界面、性能采集程序以及告警服务器之间存在着很重要的交互过程。
主机性能采集代理的体系结构设计如图2所示。主机监控***是网络主机监控***界面显示的性能信息全部从数据库中读取,而这些数据是由性能采集程序采集入库的,其中进程信息、用户登陆信息等性能数据是由主机性能采集代理向性能采集程序提供;性能采集程序与主机性能采集代理之间的通信是通过标准SNMP协议的接口实现;主机监控***(上层界面)显示的部分告警信息来自主机性能采集代理发出的TRAP告警(TRAP告警是简单网络管理协议中设备的异常通告信息),这些TRAP信息经过告警服务器解析和处理之后在界面显示出来。主机监控***界面对主机性能采集代理的操作是配置所要监控的进程并设置告警阀值,这些操作也是通过标准SNMP协议的接口来实现。
3.***的流程与模块
3.1 ***的流程结构
***运行时的流程图如图3所示:首先是初始化,定义新的MIB组,确定通信端口号,然后开始侦听信号,如果有性能采集程序的采集请求则读取本地性能信息更新MIB表,返回请求的数据;如果没有,则直接进入告警检查。本地的性能数据采集是在初始化时启动并周期性持续进行的一个功能模块;周期性的检查性能数据,如果有超过告警条件的指标则发送TRAP告警,如果没有,则直接回到侦听部分。
该***在被监控主机的后台继续运行,没有意外情况不会结束。
3.2 ***的模块结构
根据功能把***分为主机信息获取模块、MIB表更新模块、TRAP告警生成模块和接口模块,另外还有一定数量的配置文件和性能数据文件。这四个模块在***中的位置和相互关系如图4所示:
主机性能采集模块产生的性能数据,供MIB表更新模块使用,同时用做TRAP告警产生模块的数据来源;TRAP告警模块产生的告警信息,通过接口模块发出;外部性能采集程序请求的MIB信息通过接口模块向MIB表更新模块请求得到;外部告警设置程序通过接口模块给MIB表更新模块发送配置数据,MIB表更新模块相应请求,并且进行相应配置数据的更新。
3.2.1 主机信息获取模块
该模块获取本地的性能数据信息,并将性能数据存在本地,并且由于网络管理***实时性的要求,这些性能数据以一个较短的周期更新。
该模块通过一个Shell脚本程序(一种作为用户和操作***之间的接口的命令解释程序)来实现,在循环中依次使用适当的Shell命令获取所需的数据,并重定向到各个文件中。MIB表更新模块和TRAP告警生成模块可以通过读取相应的文件获得性能数据。
1、信息内容及获取时相应Shell命令
这些性能数据分为两大类,第一类是主机基本的性能数据,这类数据可以通过简单的Shell命令即可获得,包括:
(1)主机进程(管理员指定)的详细信息,包括进程ID、用户名、命令名称、CPU占用率、内存占用率、占用虚拟内存大小、占用物理内存大小、启动时间、运行时间和优先级;
(2)CPU使用率信息;
(3)用户登录信息,包括用户名、终端名和登陆机器IP;
(4)文件***inode使用量信息,包括卷名称、所有inode数量、已用inode数量、可用inode数量、已用inode百分比和挂载点;
(5)文件***卷空间使用量信息,包括卷名称、所有卷空间、已用卷空间、可用卷空间、已用卷空间百分比和挂载点。
其中,所要获得的进程详细信息不是主机上所有进程的信息,而是指定的一个或几个进程的信息,所以还需要有针对性地获取,可以通过grep过滤工具来实现,即表中“ps-eo…”执行结果重定向(“|”)作为“grep-f configFileName”的输入,configFileName即存放指定的进程名称的配置文件。
在执行Shell命令得到的结果中第一行为每一列的标题,这不是所需要的,需要将结果使用“tail”工具来取掉第一行或者只取最后的需要的几行;结果中的很多列也不是所需要的,需要“awk”和“print”工具来选取。
获取了相应的性能数据之后还需要把这些数据重定向到文件,实现是简单的使用“)”符号然后接指定存放数据的文件名。
第一大类性能数据与相应的完整的采集Shell命令对照如表3.1所示:
表3.1 性能数据与相应完整的Shell命令对照表1
另一大类是统计性能数据,这类数据不能通过简单的Shell命令直接获得,但是可以对第一大类的性能数据中的进程信息文件进行一定的处理获得,这些数据包括:
(1)进程数目,既指定的相同名称进程的个数;
(2)CPU占用率最高的进程;
(3)内存占用率最高的进程。
同样的把这些数据重定向到指定存放数据的文件名,完整的Shell命令如表3.2所示:
表3.2 性能数据与相应完整的Shell命令对照表2
2、主机信息模块流程图
流程图如图5所示:主机信息获取模块在整个***启动时开始运行,每休眠5秒钟后依次执行获取进程信息;获取CPU使用率信息;获取用户登陆信息;获取文件***inode使用信息;获取文件***卷空间使用信息;统计进程信息中的进程数目;查找CPU占用率最高的进程;查找内存占用率最高的进程。然后周期性执行,获取最新的性能数据。
3.2.2 MIB表更新模块
每一类主机性能信息和配置信息都对应着一个MIB表,而一类信息的每一项信息对应着一个OID(简单网络管理协议中的管理对象标识符),例如用户登陆信息对应着一个MIB表,而用户名、终端名和登陆机器IP则分别用这个MIB表下面的三个OID。
当性能采集程序查询请求某一个或几个OID时该模块读取相应的性能数据文件,对性能数据进行解析,并转换成规定的格式,即更新相应OID对应的值;当主机监控***(上层界面)设置告警阀值时即通过SNMP set命令对某一OID的值进行设置,该模块获得该OID新的值,解析转换之后更新相应的配置文件。
采用面向对象的方法,利用agent++开发工具包提供的MibTable类作为基类,每一个MIB表作为MibTable类的一个派生类,每个类里定义成员函数完成相应的功能,共有下列9个类:
(1)进程信息MIB表 class:ProcessTable
(2)***CPU占用率信息MIB表 class:CpuTable
(3)用户登陆信息MIB表 class:LoginTable
(4)文件***inode使用量信息MIB表 class:DfkTable
(5)文件***卷空间使用量信息MIB表 class:DfiTable
(6)进程数目配置MIB表 class:ConfigTable
(7)***CPU占用率告警阀值MIB表 class:CpuAlarmTable
(8)进程CPU占用率告警阀值MIB表 class:PcpuAlarmTable
(9)进程内存占用率告警阀值MIB表 class:PmemAlarmTable
在这9个MIB表中可以分为两大类,前5个为性能数据MIB表,后4个为配置信息MIB表。性能数据MIB表只是在有查询请求时读取性能数据文件中的性能数据,更新表里的OID;配置信息MIB表在有查询请求时读取配置文件中的配置信息,更新表里的OID,并且接受设置(set)命令时将设置的新的配置值写到相应的配置文件中。
(1)性能数据MIB表。主要方法有:读取性能信息;MIB表刷新等。
(2)配置信息MIB表。主要方法有:读取配置信息;写配置信息;MIB表刷新;处理设置请求等。
其中,读取性能信息功能是读取性能数据文件中的数据并进行一定的格式转换并更新相应的OID,其流程如图6所示。其过程为:首先打开性能数据文件,读取性能数据,关闭性能数据文件,然后将读取的性能数据转换成规定的数据格式,最后对相应的OID进行刷新。
读配置信息方法功能和结构都与读性能信息类似,所不同的是所读取的数据是配置信息。
写配置信息方法功能是接受设置(set)命令时,将设置的新的配置值写到相应的配置文件中,其流程如图7所示。其过程为:首先获取新设置的OID值,将OID值解析为规定的文件格式。
MIB表刷新方法的功能如流程如图8所示,在接受到非set信号时执行读性能信息方法或者读配置信息方法,首先写***日志,然后判断是否为设置(set)请求,如果是,则结束,否则开始同步执行加锁,然后调用读性能信息方法(或者读配置数据信息方法),最后同步执行解锁。
处理设置请求方法的功能是在接受到set信号时执行写配置信息方法,具体流程不再赘述。
3.2.3 TRAP告警生成模块
周期性的检查各项性能数据,与告警条件相比较,如果有某项性能指标超过了告警阀值则产生告警,告警信息尽可能包含更多的信息。告警的类型包括:
(1)进程数目变化,既管理员指定监控的进程的个数变化;
(2)总的CPU占用率超标;
(3)进程CPU占用率超标;
(4)进程内存占用率超标。
具体设计是周期性的分别从相应的性能数据文件和存放告警条件的配置文件中读取数据,进行比对,如果发现性能数据满足告警条件则将相应信息以特定格式保存,发送告警信号调用TRAP方式进行发送。
根据告警类型的不同分为两大类来实现,进程数目变化告警作为第一类,其他三种告警作为第二类。
第一大类即进程数目变化告警生成过程如图9所示:从性能数据文件中读取各个进程及其数目,存入数组1,然后在进程数目配置文件中查找相同名称进程,存入数组2;如果没有找到则生成进程消失的告警信息,如果找到则比较其数目是否一致,不一致则生成进程数目增加或减少的告警信息。
其中,对数组1和数组2进行比较生成告警信息的流程如图10所示。其过程为:首先从数组1里面读取一个进程及其数目,判断是否在数组2中,如果不在,生成进程消失告警信息,回到开始处;如果在,则判断数目是不是相同,如果不同,生成进程数目变化告警信息,如果相同,继续读取数据1,直到所有数据比较完毕。
第二大类告警包括总的CPU占用率超标、进程CPU占用率超标和进程内存占用率超标三种告警,实现时只要将当前值与配置文件中相应的告警阀值进行比较,如果超标则发送告警信息,流程如图11所示,其过程为:首先读取当前值和告警阈值,然后比较当前值是否超过阈值,如果超标,则发送告警信息,否则结束此流程。
3.2.4 接口模块
主机性能采集代理与其他模块的接口是标准SNMP协议接口,该接口所要实现的功能是响应性能采集程序的查询请求,提供性能数据;发送TRAP告警;响应主机监控***(上层界面)用户的配置即响应SNMP的set请求,变更当前监控进程及各项告警条件。
设计如图12所示,其中(1)是本模块和性能采集程序的接,相应SNMP的get、get-next、get-bulk、walk等数据查询请求。(2)是本模块和告警服务器的接口,向其发送SNMP的TRAP告警。(3)为本模块和主机监控UI的接口,响应SNMP的设置(set)请求。
4.***实现中的技术难点及关键技术
4.1 降低TRAP告警误报率问题
TRAP告警功能是周期性的检查各项性能数据,与告警条件相比较,如果有某项性能指标超过了告警阀值则产生告警,告警的类型包括进程数目变化、总的CPU占用率超标、进程CPU占用率超标、进程内存占用率超标四种。
在实际的运行中,即使在正常运行情况下主机的各项性能指标都可能在某瞬间或者一小段时间内出现高峰的现象,例如某瞬间***总的CPU占用率达到100%或者某瞬间某进程占用的CPU资源或内存资源极高,但是这些情况都是正常的。如果TRAP告警生成模块捕捉到这些瞬间的超标情况并发送了TRAP告警,那么这就是告警的误报。
另外,用户在所监控的主机上运行着一个或几个关键的进程,也就是网络管理***所要监控的进程。这些进程出于设计上或者其他方面的原因在运行一段时间会停止退出,于是用户就是用另外一个监控进程来探测这些进程,如果发现某个进程停止退出了该监控进程会自动将其重新启动。但是这样带来的问题是,在进程退出到重新启动的这一段时间里TRAP告警生成模块捕捉到进程的消失并发送了告警,而在用户看来这是正常的,所以这也是一种告警的误报。
还有一种情况必须考虑,这就是用户在工作中出现失误将配置文件中设置了错误的进程数目或者过低的性能告警阀值,这样与实际的情况一直不符,因此告警生成模块就会每个周期发现告警,从而发送大量的TRAP告警。
大量的误报的告警会降低告警信息的准确性,增加网络管理***的负担,影响用户对其网络中主机运行状态的判断,所以这里提出了如何降低TRAP告警误报率、提高告警准确性的问题。
之所以会出现告警误报的问题,原因如下:主机信息获取模块持续更新性能数据文件,周期很短,能够比较实时地反映主机的状态,当然也能够捕捉到很多主机某瞬间出现峰值或某小段时间进程的消失的情况;同时告警生成模块也在以一个较短的周期检查各项性能数据,一旦发现有某项性能数据达到告警条件则马上发出告警,这样某些瞬间出现的超标情况或者进程消失情况都以TRAP告警方式发送出来。如果用户在配置文件中错误配置了进程数目或性能告警阀值,在每一个告警周期也都会发送TRAP告警。
另外一个原因是被监控主机上的关键进程的反复重新启动,甚至有一部分主机上的进程重启频率比较高,相应的告警生成模块也会生成较多的TRAP告警,而当某进程停止后却没能重新启动时也同样的按周期发送着重复的告警,这些都导致了告警准确度的降低。
要解决这个问题,需要在告警生成模块中加入一定的处理,最大程度的过滤掉瞬间峰值的情况以及进程瞬间消失的情况,并对持续的告警的数量加以控制。
(1)对进程数目告警生成流程的改进
在程序中维护两个列表,分别用来存放消失的进程名称和正在告警的进程(专指数目发生变化的进程);
之前正常运行的进程消失后发送一次告警类型“进程消失”的TRAP告警,并把该进程的名称放入已消失进程列表,在之后的告警周期再次发现此进程依然没有重新启动则不在发送告警,直到此后发现该进程重新启动恢复正常时把该进程名称从列表中删除;
之前正常运行的进程的数目发生变化(增加或减少,不包括消失的情况)发送一次告警类型为“进程数目增加(减少)”的TRAP告警,并把该进程名称放入告警进程列表中,在之后的告警周期再次发现该进程的数目依然没有恢复正常则不发送告警,直到此后发现该进程的数目恢复正常时把该进程的名称从列表中删除。
采用这种方法可以做到进程消失之后只发送一条“进程消失”的告警,进城反复重启多次被捕捉到或者进程当前数目与配置的数目持续不符时也只发送一条告警。
详细流程如图13所示,其过程为:首先从配置文件中读取进程及其数目,放入数组,然后从性能文件中读取进程及其数目,放入数组2,再从数组1取一个进程及其数目,判断其是否再数组2中,如果再,再判断数目是否相同,是则回到从数组1取一个进程及其数目。否则再判断是否再告警列表中,如果在,继续读完数组1,否则发送告警并且加到告警列表。然后继续读完数组1;当在数组1中进程不在数组2中时,再判断其是否在消失列表中,不在则发送告警,并且添加到小时列表,否则回到继续读数组1。数组1读完则退出此流程。
(2)对CPU占用率、进程CPU占用率和进程内存占用率告警生成流程的改进
要尽可能的过滤掉CPU占用率、进程CPU占用率和进程内存占用率的瞬间峰值,可以采用一种“多次确认”机制,即在程序里对上述三类告警的每一类都增加一个计数器,开始时给计数器赋一个大于0的计数初值,当检测到该项性能指标超过了告警阀值时计数器减1但不生成告警,直到该类告警的计数器减为0时发送告警,并给计数器重新赋初值;如果该项性能依然持续超标则计数器重新计数,重复上面的过程;当某一个周期发现该项性能恢复正常则将计数器恢复到原始值。
针对告警条件设置有误而导致的持续超标的情况,在计数器的基础上增加一个计数指数,当计数器减为0并发送告警之后计数器的计数初值是上次初值基础上乘以计数指数的平方(采用平方的原因是为了更大幅度的增大计数器的计数初值,从而明显的延长两次相同告警间的时间间隔,减少重复次数);如果该项性能依然持续超标,则每次发送告警后计数器的计数指数也随之加1,当计数指数增加到某一指定的最大值之后该项告警将不再发送;当某一次发现该项性能恢复正常时计数器初值和技术指数都恢复到相应的原始值。
采用这种机制,可以过滤掉大多数的瞬间峰值情况从而大大降低告警误报率,而且当某项性能持续超标或者用户错误配置告警阀值时可以逐步延长告警发送的周期从而较少垃圾告警的数量,提高告警的准确度。
详细流程如图14所示。其过程为:首先分别读取性能数据当前值和配置值,判断是否超标,如果否,就继续读取下一个值,如果超标,则判断计数器(count)是否为0,如果不为0就把计数器的值减1,继续读取下一个值,如果计数器为0,则判断计数指数(index)是否小于最大规定值(max),如果不小于,则继续读下一个值,如果小于的话,将计数指数(index)值加1,并且,改变计数器(count)值为count*index*index,继续读取下一个值。直到读取完所有性能数据当前值和配置值,产生所有告警信息。
4.2 主机性能采集代理部署问题
主机性能采集代理运行在被管网络中每一台主机服务器上。由于这些服务器群承担了繁重而且关键的企业业务,并且在数量上非常庞大,地理分布上又分布在不同的地区,所以在布署时必须采用一种安全、有效的远程操作的方法进行,既要高效又不能影响主机服务器当前的正常运行。
要远程安装主机性能采集代理需要经过下列几个步骤,首先把主机性能采集代理的可执行文件和相应的配置文件打成压缩包后放到本地一台ftp服务器上,然后通过telnet或者ssh等方式登陆到远程主机上继续进行以下操作,通过ftp方式获得主机性能采集代理压缩包,解压缩,执行可执行文件。
在远程安装过程中还有两个问题必须考虑,第一个问题是主机性能采集代理的升级,当有新版本的主机性能采集代理发布时必须杀掉当前运行的版本,用新的程序文件覆盖原来的程序文件并重新启动执行;第二个问题是主机服务器重新启动时主机性能采集代理必须能够自动启动,这个问题可以通过修改标准SNMP代理进程文件snmpd,在标准代理进程启动的同时启动主机性能采集代理。
为了解决这个问题,可以借助第三方软件——Expect工具。
Expect是一个控制交互式程序的工具。用非交互的方式实现了所有交互式的功能。一个Expect程序员可以写一个脚本来描述程序和用户的对话。接着Expect程序可以非交互的运行“交互式”的程序。写交互式程序的脚本和写非交互式程序的脚本一样简单。Expect还可以用于对对话的一部分进行自动化,因为程序的控制可以在键盘和脚本之间进行切换。简单的说,脚本是用一种解释性语言写的。(也有C和C++的Expect库可供使用,但这超出了本文的范围)。Expect提供了创建交互式进程和读写它们的输入和输出的命令。Expect是由于它的一个同名的命令而命名的。
由于Expect工具集成在主机监控***界面中,这里所要实现只是Expect脚本的设计。下面详细描述脚本中执行操作的详细流程,流程如图15所示。
为了避免防止目标主机不可达(unreachable)情况,在流程中增加代理机制,即先从本地登陆到一台代理主机服务器上再以该主机为跳板登陆到其他的主机上,这台代理主机必须是网络中骨干节点,通过它可以到达网络中其他的目标主机。登陆到目标主机之后即可进行主机性能采集代理的安装操作,具体流程如图16所示是通过ftp获取压缩包、snmpd文件和killproc(一个用于杀掉所有同名进程的脚本程序),将原来的安装目录重新命名,杀掉当前运行的版本(如果有的话),然后解压缩新版本、修改权限启动执行,最后修改snmpd以保证***重启时主机性能采集代理也同时启动,重新启动SNMP服务。
Claims (7)
1、一种大型网络中主机性能采集代理***,其特征在于,
该主机性能采集代理***包括:主机信息获取模块,其获取主机的基本性能数据和统计性能数据;MIB表更新模块,其提供标准SNMP接口,响应性能采集SNMP请求,提供实时的性能数据;TRAP告警生成模块,其接收告警条件设置,实时检查性能数据,性能指标超过告警阈值则主动发送包含具体信息的SNMP TRAP告警;及接口模块;
该主机性能采集代理***通过所述接口模块分别与外部的主机监控界面、性能采集程序和告警服务器进行交互;TRAP告警生成模块产生的告警信息通过所述接口模块发送给外部的告警服务器,外部的性能采集程序请求的MIB信息通过所述接口模块向MIB表更新模块请求得到,外部的告警服务器转发告警信息给主机监控***,由主机监控界面通过所述接口模块给MIB表更新模块发送配置数据和告警条件,并进行相应配置数据的更新;
所述主机信息获取模块,执行如下功能:循环地获取由主机进程的信息、用户登录信息、文件***使用信息和文件***卷空间使用信息构成的基本性能数据,以及由进程数目、CPU占用率最高的进程和内存占用率最高的进程构成的统计性能数据,并实时更新;
所述MIB表更新模块,执行如下功能:读取从主机信息获取模块得到的性能数据后进行MIB表刷新;读取从所述接口模块接收的外部的主机监控界面获得的配置数据后写配置数据,然后进行MIB表刷新并处理设置请求;
所述TRAP告警生成模块,执行如下功能:将从主机信息获取模块获得的相应的性能数据和从存放告警条件的配置文件中读取的告警阈值周期性地进行比对,如果所述性能数据超过告警阈值则以标准SNMPTRAP的方式发送告警信息;告警信息的类型包括进程数目变化、总的CPU占用率超标、进程CPU占用率超标和进程内存占用率超标四种;
所述接口模块包括三个标准的SNMP接口,一个是所述接口模块和外部的性能采集程序的接口,用于响应SNMP请求,提供性能数据;一个是所述接口模块与外部的告警服务器的接口,用于发送TRAP告警;另一个是所述接口模块和外部的主机监控界面的接口,用于响应SNMP的设置请求,更改当前监控进程及各项告警条件。
2、根据权利要求1所述的大型网络中主机性能采集代理***,其特征在于,所述TRAP告警生成模块还执行如下功能:对分别用来存放消失的进程和正在告警的进程信息的两个列表进行维护,以使正常运行的进程消失后发送一次进程消失的TRAP告警,进程反复重启多次或进程当前数目与配置的数目持续不符时也只发送一条告警。
3、根据权利要求1所述的大型网络中主机性能采集代理***,其特征在于,所述TRAP告警生成模块包括三个计数器,所述三个计数器分别对应于总的CPU占用率超标、进程CPU占用率超标和进程内存占用率超标这三类告警,并分别用于过滤掉CPU占用率、进程CPU占用率和进程内存占用率的瞬间峰值。
4、根据权利要求3所述的大型网络中主机性能采集代理***,其特征在于,所述TRAP告警生成模块还包括计数指数模块,用于延长当某项性能持续超标或用户配置告警阀值错误时告警发送的周期。
5、根据权利要求1所述的大型网络中主机性能采集代理***,其特征在于,所述主机信息获取模块具体执行如下功能:利用shell脚本得到基本性能数据后用包括tail,awk或grep的工具对存储性能数据的文件进行解析,把所需数据存放到相应文件;通过对主机进程的信息再处理获得统计性能数据,并存放到相应文件。
6、根据权利要求1所述的大型网络中主机性能采集代理***,其特征在于,所述MIB表更新模块具体执行如下功能:当主机信息获取模块发出查询请求时读取性能数据文件并进行一定的格式转换并更新相应的OID;以与读取性能数据的方法相同的方法来读取配置数据;接收从接口模块取得的主机监控***的设置命令后,进行解析,然后更新相应的配置文件来写配置数据。
7、根据权利要求1所述的大型网络中主机性能采集代理***,其特征在于,所述主机性能采集代理***采用控制交互式程序的工具Expect进行主机性能采集代理的部署,用非交互的方式实现了所有交互式的功能,完成大量的主机性能采集代理部署工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100811328A CN100514962C (zh) | 2004-09-30 | 2004-09-30 | 大型网络中主机性能采集代理*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100811328A CN100514962C (zh) | 2004-09-30 | 2004-09-30 | 大型网络中主机性能采集代理*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1756257A CN1756257A (zh) | 2006-04-05 |
CN100514962C true CN100514962C (zh) | 2009-07-15 |
Family
ID=36689188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100811328A Expired - Fee Related CN100514962C (zh) | 2004-09-30 | 2004-09-30 | 大型网络中主机性能采集代理*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100514962C (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101345657B (zh) * | 2008-08-28 | 2012-03-07 | 中兴通讯股份有限公司 | 基于简单网络管理协议集群管理多个网元的方法及*** |
CN102136925A (zh) * | 2010-01-27 | 2011-07-27 | 新奥特(北京)视频技术有限公司 | 一种基于snmp协议的被动收集数据的方法和*** |
CN102136923A (zh) * | 2010-01-27 | 2011-07-27 | 新奥特(北京)视频技术有限公司 | 一种被动收集数据的方法及其*** |
CN101938374A (zh) * | 2010-08-24 | 2011-01-05 | 中兴通讯股份有限公司 | 一种***性能监控及告警方法和*** |
CN102480749B (zh) * | 2010-11-25 | 2015-05-27 | ***通信集团浙江有限公司 | 一种远程采集主机进程信息的方法、装置和*** |
CN102075348A (zh) * | 2010-12-14 | 2011-05-25 | 深圳市金宏威实业发展有限公司 | 一种远端网络监控方法、***及交换机 |
CN102073777A (zh) * | 2011-01-26 | 2011-05-25 | 北京中星微电子有限公司 | 一种基于脚本的验证芯片性能的方法和装置 |
CN102291253A (zh) * | 2011-07-05 | 2011-12-21 | 苏州阔地网络科技有限公司 | 一种网络通信中消息安全的预警方法及装置 |
CN102521099A (zh) * | 2011-11-24 | 2012-06-27 | 深圳市同洲视讯传媒有限公司 | 一种进程监控方法及进程监控*** |
CN103036714B (zh) * | 2012-12-10 | 2016-01-20 | 上海斐讯数据通信技术有限公司 | 设备无关的性能指标获取方法、装置及相应的网管*** |
CN104184629A (zh) * | 2013-05-27 | 2014-12-03 | 同程网络科技股份有限公司 | 基于ota酒店***的性能监控方法 |
CN104461820B (zh) * | 2014-10-29 | 2018-10-09 | 中国建设银行股份有限公司 | 一种设备监控的方法及装置 |
CN104363113A (zh) * | 2014-10-29 | 2015-02-18 | 中国建设银行股份有限公司 | 一种业务连续性检测方法 |
CN105024880A (zh) * | 2015-07-17 | 2015-11-04 | 哈尔滨工程大学 | 一种面向关键任务计算机集群的弹性监控方法 |
CN109286534A (zh) * | 2017-07-20 | 2019-01-29 | 北京国双科技有限公司 | 服务监控方法及装置 |
CN107832195B (zh) * | 2017-11-23 | 2021-03-23 | 中国银行股份有限公司 | 主机环境管理方法、装置及*** |
CN109039785B (zh) * | 2018-09-27 | 2021-05-04 | 郑州云海信息技术有限公司 | 基于SNMP的Trap告警恢复方法和装置 |
CN110460470A (zh) * | 2019-08-15 | 2019-11-15 | 成都西加云杉科技有限公司 | 一种告警管理*** |
CN113574502A (zh) * | 2020-02-12 | 2021-10-29 | 深圳元戎启行科技有限公司 | 无人驾驶车辆操作***的数据采集方法和装置 |
CN113626806A (zh) * | 2021-07-28 | 2021-11-09 | 北京达佳互联信息技术有限公司 | 数据监控方法及数据监控装置 |
-
2004
- 2004-09-30 CN CNB2004100811328A patent/CN100514962C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1756257A (zh) | 2006-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100514962C (zh) | 大型网络中主机性能采集代理*** | |
EP1604486B1 (en) | Relational model for management information in network devices | |
CN107317724B (zh) | 基于云计算技术的数据采集***及方法 | |
CN110650038B (zh) | 面向多类监管对象的安全事件日志采集处理方法和*** | |
CN105282772B (zh) | 无线网数通设备监控***及设备监控方法 | |
CN100456687C (zh) | 网络故障实时相关性分析方法及*** | |
CN110971614A (zh) | 物联网适配方法、***、计算机设备及存储介质 | |
US20040210877A1 (en) | Method of providing open access to application profiling data | |
JP2008519327A (ja) | ネットワーク管理アプライアンス | |
EP1790130A2 (en) | Agile information technology infrastructure management system | |
CN110912782B (zh) | 一种数据采集方法、装置及存储介质 | |
Virmani et al. | Netmon: network management for the SARAS softswitch | |
CN110598051A (zh) | 一种电力行业监控***、方法及装置 | |
CN115333966A (zh) | 一种基于拓扑的Nginx日志分析方法、***及设备 | |
CN115328928A (zh) | kudu表更新方法、装置、设备及存储介质 | |
CN109495501B (zh) | 网络安全动态资产管理*** | |
CN112149975B (zh) | 一种基于人工智能的apm监控***及监控方法 | |
CN109189652A (zh) | 一种封闭网络终端行为数据的采集方法及*** | |
US20060053021A1 (en) | Method for monitoring and managing an information system | |
CN102656572A (zh) | 用于形成包括配置信息的获取受到限制的配置要素在内的***的配置要素的配置信息的***、程序及方法 | |
CN114390093A (zh) | 一种虚拟网关模拟*** | |
CN112463167A (zh) | 一种银行账户动账通知服务*** | |
CN110597681A (zh) | 服务器硬件监控*** | |
Oppenheimer et al. | Monitoring, analyzing, and controlling internet-scale systems with acme | |
JP2004234560A (ja) | ネットワーク統合管理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090715 Termination date: 20160930 |
|
CF01 | Termination of patent right due to non-payment of annual fee |