利用Rsyslog集中收集系统日志和用户操作记录以及相关处理方法
相信从事linux服务器运维的筒子们都和我一样,每天都在和各种系统日志、服务日志打交道。这些日志记录了系统或服务每天发生的各种状态。通过观察日志我们可以及时的解决掉很多系统和服务故障。
今天主要写的是利用rsyslog集中收集系统日志和用户操作记录,以及对收集到的日志进行相关处理的方法。例如服务器异常监控和用户行为审计。
部署架构:
角色:应用服务器、日志汇总服务器、数据库、日志监控和日志查询
这里针对上图做下说明:
1、 把应用服务器上的日志汇总到日志汇总服务器上。
2、 把汇总服务器上的日志写到数据库中。
3、 针对汇总日志进行相关处理,例如日志监控和历史查询。
实验环境:
操作系统:Centos 5.8 x86_64
一、配置日志收集部分
在日志汇总服务器上操作:
因为Centos 5.8 x86_64默认使用syslog服务,所以这里的日志汇总服务器需要手工安装rsyslog。
1
2
3
|
service syslog stop chkconfig --del syslog yum -y install rsyslog
|
1
2
3
|
vim /etc/sysconfig/rsyslog
#SYSLOGD_OPTIONS="-m 0"
SYSLOGD_OPTIONS= "-c 2 -r 514 -x -m 240"
|
各参数作用:
-c 指定运行兼容模式。
-r 指定监听端口。
-x 在接收客户端消息时,禁用DNS查找。需和-r参数配合使用。
-m 标记时间戳。单位是分钟,为0时,表示禁用该功能。
1
2
3
|
chkconfig rsyslog on service rsyslog start ps -ef| grep rsyslog
|
在应用服务器上操作:
1
2
|
echo "*.* @192.168.154.128" >> /etc/syslog .conf
service syslog restart |
1
2
|
vim /etc/bashrc
export PROMPT_COMMAND= '{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
|
1
|
source /etc/bashrc
|
我们在应用服务器上随便输入几个命令,看看日志汇总服务器上是否都已正常收到。
应用服务器上随便输几个命令。
日志汇总服务器:
1
|
tail -f /var/log/messages
|
配置日志入库部分
创建数据库和表结构:
1
|
cat /usr/share/doc/rsyslog-mysql-3 .22.1 /createDB .sql
|
1
|
mysql < /usr/share/doc/rsyslog-mysql-3 .22.1 /createDB .sql
|
1
2
|
flush privileges ;
|
日志汇总服务器上操作:
1
|
yum –y install rsyslog-mysql
|
1
2
3
|
vim /etc/rsyslog .conf
$ModLoad ommysql
*.* :ommysql:192.168.154.128,Syslog,rsyslog_user,rsyslog_pass
|
格式:*.* :ommysql:IP:库名:用户:密码
1
|
service rsyslog restart |
在数据库验证是否正常入库
完成上述几步,就可以着手进行日志处理相关方面的工作了。
关于日志处理部分
常见的日志处理大致有以下几种方法:
1、使用nagios对日志进行进行状态监控,例如发现error状态就发消息给管理员。让管理员及时的处理服务器相关故障。
2、对日志进行分析,例如loganalyzer日志分析工具。
3、查询数据库中的日志信息,可检索某用户对某台机器都进行了哪些操作。
今天先写到这里,如果大家有不明白的地方,欢迎和我沟通^_^。
本文转自 cyr520 51CTO博客,原文链接:http://blog.51cto.com/cyr520/1214850