鉴于上述已有技术的不足之处,本发明的目的是提供一种能够实时接收和处理多种设备发来的设备日志的管理系统。
根据本发明的一种综合网管设备日志管理系统包括一个系统日志模块,它具有一个系统日志进程模块,用于接收设备发来的设备日志,形成设备日志文件,一个系统日志配置模块,用于配置系统日志进程模块,一个或多个日志文件模块,用于存储所述设备日志文件。本发明的日志管理系统还包括一个设备日志管理系统模块,它具有一个管理系统设备日志接收模块,与所述日志文件模块之间建立管道连接,用于与日志文件模块同时接收所述设备日志文件,一个日志管理系统配置模块,用于配置设备日志管理系统模块,动态切换设备日志分析处理方式。所述设备日志管理系统模块还包括一个日志分析处理模块,用于分析所接收的设备日志文件中的设备日志,一个应用进程处理模块,与所述应用系统的应用进程模块相连接,用于将分析处理后的设备日志发送到应用系统的应用进程模块,和一个数据库存储模块,用于存储分析处理后的设备日志。
本管理系统作为综合网管的设备日志管理模块,能够实时处理所有设备的设备日志。灵活切换处理方式。降低系统的耦合性,便于维护和扩展。很好地解决了已有技术存在的上述问题。
通过设备日志管理系统能够实时接收来自各种设备的设备日志,并根据配置文件的设置需求,将日志记入数据库表进行处理、转发给其他应用处理等多种处理方式,给网管用户提供了按照各种条件查询设备日志的方法和需要的数据。能够使用户及时了解设备的运行情况。
与前面所述的两种已有技术方案相比,本发明具有明显的优点。该系统能够对多种设备的设备日志进行处理。适合运用到综合网管平台或作为单独的设备日志中心。该系统还能够对产生的设备日志能够进行实时处理。能够使用户更加及时、准确掌握设备的运行情况。此外,该系统还能够根据需要灵活变换对设备日志处理的方式,使用户能够了解到需要的信息。
该系统已经通过了严格的单元测试和系统测试,已经证明能够很好地解决现有方案中存在的缺陷。并且表现出处理速度快,使用方便的良好性能。
对本发明的详细内容可以结合对附图的描述得到更清楚的了解。
syslog是UNIX提供的通用日志机制。它的组成包括一是配置文件(/etc/syslog.conf),用来控制系统登录等事件的记录和发送。二是系统监护程序(syslogd),用来从514端口接收和发送系统登录等事件。syslog的消息分类所采用的表示法是facility.severity(功能.安全),如下面的表1、表2所示。表1 syslog的功能表:
设备 |
消息说明 |
User |
由用户进程产生。这是默认的功能:与这里列出的其他功能均不吻合的消息都会被归入这一类 |
Kem |
由系统内核产生 |
Mail |
由电子邮件系统产生 |
daemon |
由系统监护程序产生 |
Auth |
由授权程序login、su和getty产生 |
Lpr |
由打印系统产生 |
News |
由UseNet新闻系统产生 |
Uucp |
由UUCP系统产生 |
Cron |
由cron和at产生 |
local0-7 |
由最多8个本地定义的类型产生,它们的编号为0到7 |
Mark |
由syslog自己产生,为日志盖上时间戳 |
表2 syslog的安全级别表:
安全 |
说明 |
Emerg |
最严重的消息,如立即关闭系统 |
Alert |
需要立即注意的系统状态 |
Crit |
危险的系统状态,例如硬件或软件失效 |
Err |
其他系统错误 |
warning |
警告消息 |
Notice |
需要以后注意的通知 |
Info |
报告性消息 |
Debug |
为调试目的而提供的消息 |
syslog的配置文件/etc/syslog.conf格式如下:
#ident ″@(#)syslog.conf 1.5 99/02/03 SMI″/*SunOS 5.0*/
#
#Copyright(c)1991-1999 by Sun Microsystems,Inc.
#
#syslog configuration file.
#
#This file is processed by m4 so be careful to quote(`')names
#that match m4 reserved words.Also,within ifdefs,arguments
#containing commas must be quoted.
#
*.err;kern.notice;auth.notice /dev/sysmsg
*.err;kern.debug;daemon.notice;mail.crit /var/adm/messages
*.alert;kem.err;daemon.err operator
*.alert root
*.emerg *
#ifa non-loghost machine chooses to have authentication messages
#sent to the loghost machine,un-comment out the following line:
#auth.notice ifdef(`LOGHOST',/var/log/authlog,@loghost)
mail.debug ifdef(`LOGHOST',/var/log/syslog,@loghost)
#
#non-loghost machines will use the following lines to cause″user″
#log messages to be logged locally.
#
ifdef(`LOGHOST',,
user.err /dev/sysmsg
user.err /var/adm/messages
user.alert `root,operator'
user.emerg *
)
#HuaWei Device Area Begin
local0.debug /home/zhaohz/nmsdevlog/log/devlog0.log
local1.debug /home/zhaohz/nmsdevlog/log/devlog1.log
local2.debug /home/zhaohz/nmsdevlog/log/devlog2.log
local3.debug /home/zhaohz/nmsdevlog/log/devlog3.log
#HuaWei Device Area End
UNIX的I/O复用函数select和poll。当TCP客户同时处理两个输入:标准输入和TCP套接口。这种情况下可能遇到的问题是客户阻塞于(标准输入上的)fgets调用,而服务器进程又被杀死。服务器TCP虽正确地给客户TCP发了一个FIN,但客户进程正阻塞于从标准输入读入,它直到从套接口读时才能看到此文件结束符(可能已过了很长时间)。这时需要这样的能力:如果一个或多个I/O条件满足(例如:输入已准备好被读,或者描述字可以承接更多的输出)时,系统就被通知到。这个能力被称为I/O复用,而函数select和poll便支持这种I/O复用。
I/O复用典型地用在下列网络应用场合:当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用;一个客户同时处理多个套接口是可能的,需要使用I/O复用,但这种情况很少出现;如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用;如果一个服务器既要处理TCP,又要处理UDP,一般也要使用I/O复用;如果一个服务器要处理多个服务或者多个协议,一般要使用I/O复用。
复用函数能够轮询处理多个事件,对于需要处理的事件,首先设定好。然后,依次轮询,如果哪个事件准备好需要处理了,select就开始处理该事件。select函数允许进程指示内核等待多个事件中的任一个发生,并仅在一个或多个事件发生时或经过某指定时间后才唤醒进程。
图1表示了已有技术的第一方案。该系统利用syslog机制在设备日志前台接收设备发来的日志。再按时间,即时导入主控模块。经分析处理后,将设备日志文件,存入数据库。其缺点是因为有延时,系统不能实时反应设备的操作。
图2表示了已有技术的另一个方案。它是利用了ftp协议,在一特定的时间内,将设备日志传递给设备日志中心。按指定的用户目录,来形成设备日志文件,同时发送一个Trap消息给网管系统的故障模块,故障模块接收到Trap后将信息转发给设备日志模块。设备日志模块接收到Trap消息后,读取设备日志文件中的日志信息进行分析、然后将设备日志文件存入数据库。这种设备日志管理系统一般只能适用于一种设备的设备日志。根本无法区分设备日志的种类。因此不适用于多网络设备的统一管理。
根据本发明的综合网管设备日志管理系统,它利用了syslog中的功能local0-7及安全级别debug来定义接收设备日志的日志文件。如上述文件所示,设备发来的日志信息分别记录/home/zhaohz/nmsdevlog/log目录下的devlog0.log、devlog1.log、devlog2.log、devlog3.log文件中。有关“tail-Of”命令,即“tail-Of filename”是UNIX提供的一条sh命令。它的主要功能是将名字为filename的文件内容输出到标准输出上,并且当filename文件的内容增加时,也能将新增内容输出到标准输出上。
如图3表示了根据本发明的综合网管设备日志管理系统。该系统包括UNIX系统日志模块100和设备日志管理系统200。UNIX系统日志模块100包括系统日志进程模块10、系统日志配置模块(图中未示出)以及日志文件模块20。设备日志管理系统200包括管理系统设备日志接收模块30、日志管理系统配置模块70、日志分析处理模块40、应用进程处理模块45以及数据库存储模块50。
所述应用进程处理模块45与一个或多个应用系统的应用进程模块(例如,ATM网管应用进程模块60、接入服务器网管应用进程模块61以及路由器应用进程模块62)采用复用方式相连接,并且采用复用方式发送所述分析处理后的设备日志到所述应用系统的应用进程模块。所谓复用方式是指:例如使用select和poll I/O复用函数,该函数能够轮询处理多个事件,对于需要处理的事件,首先设定好。然后,依次轮询如果哪个事件准备好需要处理了,select就开始处理该事件。
系统日志进程模块10采用UNIX系统提供的syslog机制接收所有设备(例如ATM交换机1、接入服务器2、路由器3)发来的设备日志,并存储到日志文件模块20。
由系统日志配置模块对UNIX系统日志模块进行配置。管理系统设备日志接收模块30通过UNIX系统提供的shell命令“tail-Offilename”建立与设备日志文件模块20的管道连接。重新定向tail的输出到管理系统设备日志接收模块30的输入。使设备日志管理系统能够实时接收到所有设备发来的设备日志,以便日志分析处理模块40对其进行实时处理。
同时,设备日志管理系统提供默认写入数据库50和转发等多种处理方式,将经过日志分析处理模块40分析处理的日志数据写入到数据库存储模块50。应用进程处理模块根据日志管理系统配置模块70对系统进行的动态配置,根据需要将分析处理后的日志文件数据转发到应用进程60、61、62。这些操作通过日志管理系统配置模块配置文件进行动态控制、切换。
一般情况下,设备日志管理系统将分析后的日志记入数据库50中。如果某种设备的设备日志需要特殊处理。该设备的应用进程模块(例如,ATM网管应用进程模块60、接入服务器网管应用进程模块以及路由器应用进程模块62)可以建立与应用进程处理模块45的连接,并进行注册。如果设备日志管理系统的应用进程处理模块45判断出注册表中有该设备的注册,就将属于该设备的设备日志转发给该应用模块进行特殊处理。这样用户能够更加及时准确地掌握设备的运行情况,并了解到需要的信息。
在本发明中,所述应用进程处理模块45,根据日志管理系统配置模块决定是否将分析处理后的设备日志发送到应用系统的应用进程模块(例如,ATM网管应用进程模块60、接入服务器网管应用进程模块以及路由器应用进程模块62)。所述应用进程处理模块与应用系统的应用进程模块采用复用方式相连接,并且采用复用方式发送所述分析处理后的设备日志到所述应用系统的应用进程模块。
以下对系统功能作进一步说明。设备日志管理系统启动时,读取设备日志管理系统配置模块70中的配置文件和UNIX系统日志配置文件(/etc/syslog.conf)。这样,便可获得对设备日志的处理方式,以及由UNIX系统日志配置文件(/etc/syslog.conf)中指定的local0-7.debug所对应的日志文件名。该功能的实现主要是利用UNIX系统提供的函数打开文件分行读取配置信息,然后进行分析、判断得出日志文件名。
利用UNIX命令“tail-Of filename”建立管理系统设备日志接收模块30与各日志文件20的管道连接。该功能的实现是通过pipe(UNIX的系统调用)建立一个管道,然后系统fork(UNIX建立子进程的系统调用) 出一个子进程。在父进程中关闭输入描述符,在子进程中关闭输出描述符,同时在子进程中利用dup2(UNIX系统调用)复制标准输出为子进程中管道的输入。使命令“tail-Of filename”的输出重新定向到了管道的输入。因此,管理系统设备日志接收模块30就能够实时接收到由设备(例如ATM交换机1、接入服务器2、路由器3)发来的设备日志。
建立应用进程(例如,ATM网管应用进程模块60、接入服务器网管应用进程模块以及路由器应用进程模块62)与设备日志管理系统应用进程处理模块45的连接,应用进程处理模块45接收注册信息。该功能的实现是利用进程间通信,以设备日志管理系统作为服务器,应用进程60、61和62作为客户端。运用套接口(socket)建立连接。设备日志管理系统应用进程处理模块45建立一个链表,记录应用进程的连接套接口号和设备标识(sysobjectid)。
设备日志管理系统的调度功能。该功能通过输入/输出(I/O)复用方式实现。所述管理系统设备日志接收模块30与所述日志文件模块20之间建立的管道连接,为复用方式的管道连接。所述应用进程处理模块45与应用系统的应用进程模块60、61和62也采用复用方式相连接。具体说就是利用select(UNIX的函数)等待建立的多个管道连接描述符和套接口连接描述符中,任意一个事件发生,就进行相应的处理。例如ATM交换机日志文件到达,则对其中的日志进行接收、分析、处理以及传送等操作。通过本发明的这种调度功能,便同时实现了对多种设备日志的实时管理。
动态切换设备日志处理方式的功能。该功能的实现主要是通过修改日志管理系统配置模块70的配置文件。然后向设备日志管理系统进程发送HUP信号,进程在接收到HUP信号后,重新读取配置文件。从而起到改变处理方式的作用,另外,此配置文件的读取过程是动态实时地进行的。这样,在不中断系统工作的情况下,即可按照需要灵活修改配置文件,系统对配置文件进行动态读取,并根据配置相应改变日志的处理方式,从而实现了对日志处理方式的灵活切换。
本发明保护范围阐明于所附权利要求书中。但是,凡是在本发明的宗旨之内的,显而易见的修改亦应归于本发明的保护范围之内。