搜档网
当前位置:搜档网 › 基于rsyslog系统日志的收集与分析_朱晓亮

基于rsyslog系统日志的收集与分析_朱晓亮

基于rsyslog系统

日志的收集与分析

朱晓亮陈云芳陆有为

南京邮电大学物联网学院江苏 210003

摘要:本文提出一种基于rsyslog来收集分析 *nix 系统里面产生的各种日志的大规模日志收集与分析的方法,最终实现一个基于Web架构的完善的系统级日志和应用级日志处理分析系统。实验表明该系统能有效解决大规模日志收集与分析中出现的各类问题。

关键词:*nix日志;Rsyslog;采集与分析

0 引言

本文研究一种基于rsyslog系统日志处理系统,通过收集*nix系统里产生的各种log,分析并确定系统中的问题所在,最终以Web方式展示出来,方便的进行检索和分析,具有较高的理论和实用价值。

1 *nix的日志处理

1.1 *nix平台下的日志

对于*nix平台来说,log主要包括应用层的log、系统层的log以及虚拟机的log。

应用层的log:大部分应用层的log默认会存储在/var/log/下面,如果通过ls列出/var/log/下面的目录文件,我们会看到很多熟悉的名字,比如/var/log/apache2,则代表是由apache2服务产生的log文件;再比如/var/log/samba则代表是由Samba服务产生的log文件。

系统层的log:系统的log信息主要是跟Ubuntu的系统信息相关,跟应用层的log关系不是很紧密,常见的包括用户的认证机制的日志信息,系统的daemon,系统的messages,以及系统所有的压缩文件也就是其本身syslog。

虚拟机的log:对于虚拟机来说,目前主流的包括xen 以及KVM,其中前者使用范围更为广泛,同样,在/var/log/下有xen/目录,该目录下会包含console/目录,记录通过console登录的信息,domain-builder-ng.log文件记录domU 的信息,xen-debug文件以记录xen虚拟机的debug信息等。而对于KVM来说,则包含/var/log/libvirt/目录,该目录下面的文件记录的是KVM相关的log信息。

1.2 Rsyslog日志处理协议

Syslog是一个很著名的网络协议,是一种在Unix和类Unix的计算机系统上使用的协议,它用于转发以太网络中的日志消息。它实施了基本的syslog协议,并且为syslog协议扩增了基于内容的过渡、丰富的过滤功能和灵活的配置选项,还增添了一些重要功能,比如使用TCP进行传输。

(1) rsyslog的功能

Rsyslog通过队列来耦合两个动作,在队列中,一方作为生产者,一方作为消费者,生产者会生产一些东西,一般,“一些东西”通常是syslog信息,当然,队列也可以用于其他的目的。

Rsyslog有一个主队列和多个action(动作)队列,消息输入模块把消息pass到主队列,再由主队列根据rules分给各个action队列。

在配置文件里,可以通过MainMsg和Action分别用来设定主队列和aciton队列的参数。在队列创建前,相同的参数可以指定多次,最后指定的优先。

主队列,在解析完配置文件后,开始创建。Action队列,在每次动作选择时被创建。

Rsyslog支持多种模式,在配置文件里通过$ queuetype来指定。目前有下面三种:

①直接队列,不排队或缓存任何队列元素,直接传递元素到下一个处理机制;

② 内存队列,将队列缓存到内存中,等到一定的触发条件再传递;

③ 磁盘辅助内存队列,将队列缓存到磁盘中,等到一定的触发条件再传递。

(2) rsyslog 的使用

在实际的使用过程中,我们可以通过配置文件和查看相应的日志文件来使用rsyslog 。然而,在许多应用场景下,我们往往需要通过程序产生输出信息并进行记录,也就是说要把一些信息写成日志文件。正常情况下运行程序的人不用关心日志里的内容,只有在出现问题的时候才会查看日志文件里的内容以确定问题所在。

因此,下面设计通过rsyslog 日志系统提供的API 调用接口,来使用程序实现对rsyslog 的使用。

常用的rsyslog 系统调用包括如下四个:

① void openlog(const char *ident, int option, int facility):打开日志设备;

② void syslog(int priority, const char *format, ...):写入日志; ③ void closelog(void):关闭日志设备;

④ vsyslog :它和syslog 功能类此,只是有不同的参数。 增加一条log 信息的过程(如图1):

图1 rsyslog 系统调用

我们可以通过下面一小段程序来熟悉这几个系统调用:

$ cat log_create.c # include

int main(int argc, char **argv) {

openlog("msgtest",LOG_CONS | LOG_PID, 0); syslog(LOG_INFO,"this msg is createed by '%s'/n",argv[0]);

closelog(); return 0; }

编译运行:

$ gcc log_create.c $ ./a.out

可以在 messages 文件中发现写入的消息:

$ tail -n 1 /var/log/messages

May 22 21:48:38 lvs-1 msgtest[7085]: this msg is created by './a.out'

2 大规模日志收集系统的设计

一个好的日志系统,不但需要一个鲁棒性很高的后端,还需要一个体验很高的前端。对于写操作要求很高的日志系统,我们选用 MySQL 作为我们log 存储的数据库系统,而使用 PHP 这门全球最流行的脚本语言来构成前端。

同时我们使用 MyISAM 作为数据库的存储引擎,也就是默认的引擎,因为这里的应用是不需要事务的,处理的基本的CRUD 操作,而且以 insert 为主。

接下来我们需要建立业务相关的数据库了。数据库的名字命名为 Syslog 。这里需要建立表1、表2。

SystemEvents ,该表存放log 的实际信息,包括惟一标识号 ID ,log 到达logserver 的时间,Facility 级别,Priority 级别,log 的内容 Message 等。

SystemEventsProperties ,该表存放 SystemEvents 的相关属性,包括一个惟一的表示,同时也作为该表的主键 ID 号,以及一些保留的字段等。

表1 Syste5mEvents 表部分条目 条目

型号

备注

ID int unsigned

auto_increment,

primary key

Customer ID bigint

ReceivedAt datetime DeviceReportedTime datetime

Facility smallint Priority smallint From Host

varchar(60)

Message text EventUser varchar(60) SysLogTag varchar(60) EventLogType V archar(60)

表2 SystemEventsProperties 表部分条目 条目 型号 备注

ID int unsigneda

auto_increment, primary key

SystemEventID

int

ParamName V archar(255)

在完成建立表格之后,需要通知rsyslog 以数据库的方式来收集log 信息:

*.* >database-server,database-name, database-userid,database-password

在完成了数据库的设计之后,开始Web 的设计,这里主要包括6大模块。它们分别是如下的:

用户登录登出(Login/Logout); 数据检索(Search); 事件展示(Show Events); 数据分析报告(Statistics); 用户管理(Admin Center); 数据库读写 (DB I/O)。

用户管理则是对登录该系统用户的日常的操作维护,包括用户以及用户组的权限等问题;数据检索主要是通过关键词来准确匹配需要的搜索的内容;事件展示是该log 收集分析系统的主要界面,也就是进入该系统的首页面,会根据默认的情况展示log 收集的数据,以及相应的log 信息的分类、划分的等级等;报告生成主要是对log 信息的分类统计。

3 测试结果与分析 3.1 log 的收集测试

这里通过手动的测试,来测试写入 /var/log/messages 的情况,我们需要一个简单 logger 命令来测试(如图2):

$ logger -p https://www.sodocs.net/doc/4018405213.html, "Msg"

图2 rsyslog 测试示例

第一行日志显示: May 22 17:10:09 lvs-1 yunbg: 11其表示意思如下:第一列:日志产生时间;第二列:产生此日志的主机名称;第三列:产生此日志的应用程序或用户名称;第四列:日志的内容。正如前面所说的,应用程序的日志级别是由应用程序所决定的。部分应用程序可通过配置,定义其日志级别。例如,/etc/ssh/sshd_config 。

3.2 Web 界面下log 的检索和展示

这里根据“Other filters ”包括“Syslog Facility ”“Syslog Severity ”等类别来进行搜索,通过关键词加上符号的形式来

实现,比如“facility:local0 severity: warning ”这个则是搜索 Facility 为local0而severity 为warning 级别的内容。检索界面如图3所示。

图3 log 检索

通过检索生成的报告中,包括 Date 、Facility 、Severity 、Host 、Syslogtag 、Messagetype 、Message 几个栏目,分别表示日志到达的时间、其 Facility 的值、严重等级程度、来自于哪台主机、其 syslog 的 tag 、信息的类型以及最重要的一项其显示的消息,即如图4所示。

图4 数据报告展示

对于 Message 这一栏,如果点击,可以得到更加详细的消息信息。整个界面根据时间进行排序,时间越早的排在前面,偏晚的则排在后面,这也符合我们的需求,设计日志系统的主要目的是用来发现问题解决问题的,因此我们可以通过查找过滤关键字来找到我们需要的日志信息。

4 结束语

本文介绍了 *nix 平台下的log ,归纳了应用层、系统层以及虚拟机的log 文件。熟悉rsyslog 的功能以及其核心功能——队列。在此基础上,将log 内容收集到数据库中并以Web 的方式展现出来。保证了数据库的读写效率和在出现系统问

题的情况下,能很快通知并及时解决系统故障。同时,文章也存在可以改进和拓展的方面。在log 的分析方面并不是很完善,可以通过一定的匹配算法实现自动化的过滤、展示以及根据预定的阈值进行报警,以便及时通过log 发现系统中存在的问题,更好的体现log 的作用。

参考文献

[1]乃密斯.Linux 系统管理技术手册.人民邮电出版社.2008. [2]马修.Linux 程序设计-(第3版).人民邮电出版社.2007. [3]Rainer Gerhards, Adiscon GmbH. rsyslog: going up from 40K messages per second to 250K.

[4]张文江,吴庆波.Linux 日志文件系统研究.计算机工程与应

[下转21页]

图4 Babylonia 自我更新

(1) 攻击者将一个可以利用某个漏洞进行传播的功能模块发送到Web 服务器,并在服务器上的可用更新列表上加入该模块的相关信息。

(2) 已经在运行的病毒会定期到Web 服务器上查询可用更新列表,发现该模块后就会下载并安装。 (3) 安装更新后的病毒除了可以使用以前的电子邮件方式传播,还可以借助新的模块利用某个漏洞进行传播。

2 结束语

当前以获取经济利益为目的的计算机病毒越来越多,它们可以盗取用户银行账号和密码、网络游戏账号、即时通讯软件账号等用户信息,还可以留下后门给攻击者,严重威胁着计算机网络的健康发展。对功能型计算机病毒的研究有助于了解此类病毒的运行机理和特点,对防治此类病毒具有十分重要的意义。

参考文献

[1]Computer virus[EB/OL].https://www.sodocs.net/doc/4018405213.html,/wiki/Computer_virus. [2]T ypes of Computer V iruses[EB/OL].http://www . typesofcomputerviruses. net/.

[3]杨亮.网络蠕虫和病毒的共生传播模型研究[D].辽宁:东北大学.2007.

[4]傅建明等.计算机病毒与对抗.武汉大学出版社[M].2005. [5]余宝明.浅析计算机病毒的加载运行技术.科技信息[J].2010.

Function type computer virus running technology analysis and research Li Jun, Li Tonghong

Information security department Hubei University of Police, Hubei,430032,China

Abstract:This paper proposes a functional concept of computer virus, gives the function type of computer virus in the general structure. On the function of computer virus operation technology are analyzed. On the function of computer virus research contributes to the understanding of the virus running mechanism and characteristic, on the prevention and treatment of this kind of virus has very important significance. keywords:computer virus; information theft; host control

[上接7页]

用.2006.

[5]刘丹,赖锋.系统安全中Linux 日志的实用研究.世界电信.2003. [6]李燕南,刘新等.主机日志分析与研究[J].中国高新技术企业.2010.

[7]R. Gerhards. The Syslog Protocol. RFC 5424 (Proposed Standard), March 2009.

Collection and analysis of systems log based the rsyslog Zhu Xiaoliang. Chen Yunfang, Lu Youwei

College of Internet of Things, Nanjing University of Posts and Telecommunications,Jiangsu,210003,China

Abstract:This paper presents a method of collection and analysis of large-scale log * nix systems which produce various log based on the syslog to collect analysis, finally realize the perfect system-level log and application-level log processing and analysis system of a web-based architecture, cope with the several problems in the log. The experiments show that the system can effectively solve the various problems arising in large-scale log collection and analysis. Keywords:*nix log;Rsyslog;collect and analytics

相关主题