码迷,mamicode.com
首页 > 其他好文 > 详细

rsyslog日志系统

时间:2015-05-14 06:24:33      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:linux rsyslog loganalyzer

rsyslog日志系统

linux上,应用程序和内核都需要记录日志。负责记录应用程序的是syslogd,记录内核的则是klogd。centos 5上使用的是syslog,但由于其功能过于薄弱和单一,在centos 6和7上被rsyslog所取代。事实上rsyslog是一个服务。

日志:历史事件的相关记录。早期时就有航海日志。

记录的内容:事件发生的时间、事件内容。

日志级别:事件的关键性程序,loglevel。

 

1.1 rsyslog的优势

1、支持多线程。

2、能够基于UDP, TCP, SSL, TLS, RELP等协议进行远程日志传输,并且还可以机密。

3、日志可以保存至MySQL, PGSQL, Oracle等多种关系数据库中。

4、支持非常强大的过滤器,可实现过滤系统信息中的任意部分。

5、自定义输出格式。

6、适用于企业级别日志记录需求。

但中等规模站点的日志信息放在数据库中已经不合适了,可能会放在Nosql,分布式系统。比如轻量的日志平台elk:elasticsearch, logstash, kibana。

 

日志生成方:应用程序和内核。而且每个应用程序都可自行记录日志。这样就会造成每个应用程序之间记录日志的格式并不相同,分析起来很不方便。因此,才诞生了syslog这样一个统一的日志服务。内核也可记录日志。

 

1.2 配置文件

rsyslog的配置文件:/etc/rsyslog.conf

 

定义在RULLS中的格式

facility.priority     target

设施.级别             何处

 

facility:设施,从功能或程序上对日志进行分类,并由专门的工具负责记录相应的日志信息。

auth:认证相关的

authpriv:权限,授权相关的

cron:任务计划相关的

daemon:守护进程相关的

kern:内核相关的

lpr:打印相关的

mail:邮件相关的

mark:标记相关的

news:新闻相关的

security:安全相关的,与auth相似

syslog:syslog自己的

user:用户相关的

uucp:unix to unix copy相关的

local0 - local7:用户自定义使用

 

priority:级别

debug:程序或系统的调试信息,最详细的记录。

info:一般信息

notice:不影响正常功能,需要注意的消息

warn, warning:可能影响系统功能,需要提醒用户的重要事件

err, error:错误信息

crit:比较严重的

alert:必须马上处理的

emerg, panic:会导致系统不可用的

 

指定级别的方式:

*:所有级别

none:没有级别

priority:比此级别高的(包含)所有级别的日志信息都会记录

=priority:仅记录指定级别

 

target:

文件路径:将日志记录于指定的文件中。在文件路径之前使用"-",表示异步写入。

用户:将日志信息通知给文件

*:所有用户

日志服务器:@SERVER

管道:| COMMAND

 

文本记录日志文件的格式:

事件产生的时间 主机 进程(PID): 事件

[root ~]# tail /var/log/messages

May  8 19:40:27 www kernel: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready

May  8 19:56:44 www kernel: e1000: eth1 NIC Link is Down

May  9 00:00:30 www xinetd[1060]: START: telnet pid=2528 from=::ffff:172.16.250.130

 

特殊日志文件:

有些日志记录二进制格式,例如,两个日志文件:

成功登录系统的日志:/var/log/wtmp,查看命令:last

失败的登录的尝试:/var/log/btmp,查看命令:lastb

[root ~]# file /var/log/btmp
/var/log/btmp: DBase 3 index file
[root ~]# file /var/log/wtmp
/var/log/wtmp: data

这两个命令可以实现过滤功能

lastlog命令:显示当前系统每个用户各自最近一次的登录信息。

 

1.3 模块

配置文件中$ModLoad表示装载模块。

 

允许从udp/tcp 514端口收集日志信息:

$ModLoad imtcp

$InputTCPServerRun 514

 

$ModLoad imudp

$UDPServerRun 514

一般使用udp,查看rsyslog支持哪些模块:man rsyslog.conf

 

1.4 搞个日志服务器收集其他主机的日志信息

1、启用本机成为日志服务器

使用udp 协议514端口传输

[root ~]# vim /etc/rsyslog.conf
#$ModLoad imudp
#$UDPServerRun 514

2、把日志存储于mysql

a. mysql已经准备就绪,安装rsyslog-mysql

[root ~]# yum install rsyslog-mysql

查看生成的文件:

[root ~]# rpm -ql rsyslog-mysql
/lib64/rsyslog/ommysql.so # 就靠这个模块了
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql # 创建rsyslog依赖的数据库所需的脚本。里面就是创建数据库和表的命令。

b. 创建rsyslog依赖的数据库

[root ~]# mysql < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

进入数据库查看

[root ~]# mysql
MariaDB [(none)]> SHOW DATABASES; # 查看库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |
| mysql              |
| performance_schema |
| test               |
+--------------------+
MariaDB [(none)]> use Syslog; # 此库就是脚本建立的了
MariaDB [Syslog]> SHOW tables; # 查看表
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
MariaDB [Syslog]> DESC SystemEvents; # 表的结构
+--------------------+------------------+------+-----+---------+----------------+
| Field              | Type             | Null | Key | Default | Extra          |
+--------------------+------------------+------+-----+---------+----------------+
| ID                 | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| CustomerID         | bigint(20)       | YES  |     | NULL    |                |
| ReceivedAt         | datetime         | YES  |     | NULL    |                |
| DeviceReportedTime | datetime         | YES  |     | NULL    |                |
| Facility           | smallint(6)      | YES  |     | NULL    |                |
| Priority           | smallint(6)      | YES  |     | NULL    |                |
| FromHost           | varchar(60)      | YES  |     | NULL    |                |
| Message            | text             | YES  |     | NULL    |                |
| NTSeverity         | int(11)          | YES  |     | NULL    |                |
| Importance         | int(11)          | YES  |     | NULL    |                |
| EventSource        | varchar(60)      | YES  |     | NULL    |                |
| EventUser          | varchar(60)      | YES  |     | NULL    |                |
| EventCategory      | int(11)          | YES  |     | NULL    |                |
| EventID            | int(11)          | YES  |     | NULL    |                |
| EventBinaryData    | text             | YES  |     | NULL    |                |
| MaxAvailable       | int(11)          | YES  |     | NULL    |                |
| CurrUsage          | int(11)          | YES  |     | NULL    |                |
| MinUsage           | int(11)          | YES  |     | NULL    |                |
| MaxUsage           | int(11)          | YES  |     | NULL    |                |
| InfoUnitID         | int(11)          | YES  |     | NULL    |                |
| SysLogTag          | varchar(60)      | YES  |     | NULL    |                |
| EventLogType       | varchar(60)      | YES  |     | NULL    |                |
| GenericFileName    | varchar(60)      | YES  |     | NULL    |                |
| SystemID           | int(11)          | YES  |     | NULL    |                |
+--------------------+------------------+------+-----+---------+----------------+

3、配置rsyslog启用ommysql模块。在rsyslog配置文件的MODULES字段中定义。

[root ~]# vim /etc/rsyslog.conf 
#### MODULES ####
$ModLoad ommysql

4、定义某facility把日志记录至指定的数据库的指定表中,RULES段中定义。

#### RULES ####
*.info;mail.none;authpriv.none;cron.none  :ommysql:127.0.0.1,Syslog,rsyslog,rsyslog

5、数据库中创建rsyslog用户并授权

MariaDB [(none)]> GRANT ALL ON Syslog.* TO ‘rsyslog‘@‘127.0.0.1‘ IDENTIFIED BY ‘rsyslog‘;
MariaDB [(none)]> GRANT ALL ON Syslog.* TO ‘rsyslog‘@‘localhost‘ IDENTIFIED BY ‘rsyslog‘;
MariaDB [(none)]> FLUSH PRIVILEGES;

6、重启服务

[root ~]# service rsyslog restart

7、测试

[root ~]# yum install -y zsh
[root ~]# tail -1 /var/log/messages
May  9 05:44:07 www rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="924" x-info="http://www.rsyslog.com"] exiting on signal 15. # 没有yum的日志信息

进入数据库查看,测试OK

MariaDB [Syslog]> use Syslog;
MariaDB [Syslog]> SELECT * FROM SystemEvents\G


1.5 使用loganalyzer(WebGUI)来展示日志信息

由于是web工具,所以依赖lamp。lamp已然就绪,并且php没有问题。config.php是该工具的主配置文件,如果第一次配置错误,将该文件内容清空即可。

1、解压程序包

[root ~]# tar xf loganalyzer-3.6.5.tar.gz -C /vhosts/a.com/htdocs/
[root ~]# cd /vhosts/a.com/htdocs/

2、搞定一些文件

[root htdocs]# mv loganalyzer-3.6.5/src/ log
[root htdocs]# cd log
[root log]# cp ../loganalyzer-3.6.5/contrib/* . # 两个脚本文件

3、执行脚本

[root log]# chmod +x configure.sh secure.sh 
[root log]# ./configure.sh 
[root log]# ./secure.sh 
[root log]# chmod 666 config.php # 此文件就是该工具的主配置文件
[root log]# chown -R daemon.daemon ./* 将所有文件的属主属组改为httpd进程的属主

4、浏览器访问http://172.16.45.10/log/

技术分享 

点击here之后,一路下一步

技术分享 

    就是这么个情况:技术分享


rsyslog日志系统

标签:linux rsyslog loganalyzer

原文地址:http://10042224.blog.51cto.com/10032224/1651061

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!