相信从事linux服务器运维的筒子们都和我一样,每天都在和各种系统日志、服务日志打交道。这些日志记录了系统或服务每天发生的各种状态。通过观察日志我们可以及时的解决掉很多系统和服务故障。

   今天主要写的是利用rsyslog集中收集系统日志和用户操作记录,以及对收集到的日志进行相关处理的方法。例如服务器异常监控和用户行为审计。


部署架构:

角色:应用服务器、日志汇总服务器、数据库、日志监控和日志查询

image

这里针对上图做下说明:

1、 把应用服务器上的日志汇总到日志汇总服务器上。

2、 把汇总服务器上的日志写到数据库中。

3、 针对汇总日志进行相关处理,例如日志监控和历史查询。


实验环境:

操作系统:Centos 5.8 x86_64


一、配置日志收集部分

在日志汇总服务器上操作:

因为Centos 5.8 x86_64默认使用syslog服务,所以这里的日志汇总服务器需要手工安装rsyslog。

service syslog stop
chkconfig --del syslog
yum -y install rsyslog
vim /etc/sysconfig/rsyslog
    #SYSLOGD_OPTIONS="-m 0"
    SYSLOGD_OPTIONS="-c 2 -r 514 -x -m 240"

各参数作用:

-c 指定运行兼容模式。

-r 指定监听端口。

-x 在接收客户端消息时,禁用DNS查找。需和-r参数配合使用。

-m 标记时间戳。单位是分钟,为0时,表示禁用该功能。

image

chkconfig rsyslog on
service rsyslog start
ps -ef|grep rsyslog

image


在应用服务器上操作:

echo "*.* @192.168.154.128" >> /etc/syslog.conf
service syslog restart
vim /etc/bashrc
    export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'

image

source /etc/bashrc

我们在应用服务器上随便输入几个命令,看看日志汇总服务器上是否都已正常收到。

应用服务器上随便输几个命令。

image

日志汇总服务器:

tail -f /var/log/messages

image


配置日志入库部分

创建数据库和表结构:

cat /usr/share/doc/rsyslog-mysql-3.22.1/createDB.sql

image

mysql < /usr/share/doc/rsyslog-mysql-3.22.1/createDB.sql
grant all on Syslog.* to rsyslog_user@'%' identified by 'rsyslog_pass';
flush privileges;

image

日志汇总服务器上操作:

yum –y install rsyslog-mysql
vim /etc/rsyslog.conf
    $ModLoad ommysql
    *.* :ommysql:192.168.154.128,Syslog,rsyslog_user,rsyslog_pass

格式:*.* :ommysql:IP:库名:用户:密码

image

service rsyslog restart

在数据库验证是否正常入库

image

完成上述几步,就可以着手进行日志处理相关方面的工作了。


关于日志处理部分

常见的日志处理大致有以下几种方法:

1、使用nagios对日志进行进行状态监控,例如发现error状态就发消息给管理员。让管理员及时的处理服务器相关故障。

2、对日志进行分析,例如loganalyzer日志分析工具。

3、查询数据库中的日志信息,可检索某用户对某台机器都进行了哪些操作。


今天先写到这里,如果大家有不明白的地方,欢迎和我沟通^_^。