使用mysql来存放rsyslog记录
---------------为什么使用mysql来存放日志记录
使用mysql来存放系统rsyslog日志
后端存查日志支持的客户端多,MySQL就成为诸多选择中的首选
兼容系统已有的'syslog.conf'配置文件
可将消息过滤后再次转发
配置文件中可以写简单的逻辑判断
有现成的前端web展示程序
---------------
安装及初始配置
Debian下需要安装具体包:rsyslog-mysql
# aptitude install rsyslog-mysql
# apt-get install rsyslog-mysql
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会安装下列额外的软件包:
dbconfig-common mysql-client mysql-client-5.1 mysql-common
建议安装的软件包:
mysql-server
下列【新】软件包将被安装:
dbconfig-common mysql-client mysql-client-5.1 mysql-common rsyslog-mysql
升级了 0 个软件包,新安装了 5 个软件包,要卸载 0 个软件包,有 85 个软件包未被升级。
...
Creating config file /etc/dbconfig-common/config with new version
正在设置 mysql-common (5.1.66-0+squeeze1) ...
正在设置 mysql-client-5.1 (5.1.66-0+squeeze1) ...
正在设置 mysql-client (5.1.66-0+squeeze1) ...
正在设置 rsyslog-mysql (4.6.4-2) ...
dbconfig-common: writing config to /etc/dbconfig-common/rsyslog-mysql.conf
Creating config file /etc/dbconfig-common/rsyslog-mysql.conf with new version
Creating config file /etc/rsyslog.d/mysql.conf with new version
Reloading enhanced syslogd: rsyslogd.
登录进mysql服务器,创建初始的库表的连接用户。
mysql>create database if not exists syslog;
mysql>grant select,insert,update on syslog.* to loger@'192.168.18.%' identified by 'passlog';
mysql>use syslog;
mysql>\. /usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql
会建立起两张表:SystemEvents、SystemEventsProperties,日志也记录在第一张表里。
查看表里已有的日志:
mysql>SELECT * from SystemEvents\G
Debian下有配置文件"/etc/dbconfig-common/rsyslog-mysql.conf",修改它的内容貌似不起作用。
---------------
配置rsyslog
a、在'/etc/rsyslog.conf'中载入支持模块(mysql),这里它独立位于'/etc/rsyslog.d/mysql.conf'文件中。
$ModLoad ommysql
*.* :ommysql:192.168.18.100,syslog,loger,passlog
'ommysql'之后分别时:数据库服的地址,数据库名称,登录数据库的用户名,登录数据库的密码
b、修改'/etc/rsyslog.conf'中的段落,打开tcp/udp监听端口
# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
只需要打开其一即可,这样这台机器可以接受并记录其它机器通过网络发过来的日志记录。
c、修改相应的日志处理方式,如下面两行,将local7和user的日志写到mysql中,默认是将所有的日志写到数据库里。
local7.* :ommysql:127.0.0.1,Syslog,rsyslog_write,password
user.* :ommysql:127.0.0.1,Syslog,rsyslog_write,password
在确认到mysql的连接及授权无误后,重启'rsyslog'服务,登录新终端或执行命令,再通过查询数据库即可得知配置是否成功。
---------------
开启日志转发
要在需要日志记录到远程的服务器的配置文件添加如下的一行即可,就可以将需要记录的日志通过网络转发到日志服务器上,当然日志服务器上的端口要是可访问的。
*.* @@rsyslog.freeoa.net #tcp
*.* @rsyslog.freeoa.net #udp
Restart the rsyslog service.
Test that you can reach the rsyslog server on port 514 by using telnet.
---------------
简单调试
可使用指令'rsyslogd -d'(应先关闭系统的服务),这样会打出更多的处理过程,以帮助解决问题。
---------------
关于'rsyslog.conf'
配置文件/etc/rsyslog.conf中有很多内容,但最主要的是指定需要记录哪些服务和需要记录什么等级的信息。示例如下面:
A *.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
B mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
C *.emerg *
# Save news errors of level crit and higher in a special file.
D uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
A:把所有大于info级别的信息都记录到/var/log/messages中,但不要记录mail,authpriv和cron服务产生的信息
B:把mail产生的信息都记录到/var/log/maillog中
C:把所有服务输出的大于emergy级别的信息显示给每个在线的人,通过wall工具
D:把uucp和news输出的大于crit级别的信息记录到/var/log/spooler中
信息的等级及其在配置文件中指定的方式
七种信息等级
1)info
2)notice
3)warning或warn
4)err或error
5)crit
6)alert
7)emerg或panic:导致系统几乎要死机
信息等级的指定方式
1). xxx: 表示大于xxx级别的信息
2).=xxx:表示等于xxx级别的信息
3).!xxx:表示在xxx之外的等级的信息
更多关于系统日志,请参考文章尾部的文章链接。
---------------
日志的查看
除了直接从mysql中提供,需要更为直观的方法,比如像使用'phplogcon'这样的第三方软件。
---------------
参考连接:
认识linux rsyslog
Linux系统日志简介