系统日志服务,记录系统日志信息,也可以记录其他主机的日志信息作为日志服务器,也可以将日志记录在数据库中支持MySql,PGSQL,Oralce。在CentOS 5之前有两个服务,syslog和klogd,之后版本都是用rsyslogd代替。可以基于TCP和UDP协议工作,支持SSL和TLS加密协议。

日志格式:

        facility:要收集日志的设备,约束多个程序的日志数据流到同一个管道内,记录的应用信息有auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, local0-local7, syslog等等。

        priority:要收集的日志级别,debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)。用none表示不记录。

        target:日志存储的位置,可以是一个本机文件的位置格式:/var/xxx.log,可以是一个远程主机的位置格式:@host,或者通过管道符 | command。

        facility · priority                 target

启动服务:

        主程序:rsyslogd,启动:service rsyslogd start

        服务脚本:/etc/rc.d/init.d/rsyslog

配置文件:

        配置文件:/etc/rsyslog.conf

        将两个组合起来就是:facility · priority         /var/log/messages

        例:

                kern.*                                                                        /dev/console

                *.info;mail.none;authpriv.none;cron.none                /var/log/messages

                authpriv.*                                                                  /var/log/secure

                mail.*                                                                       -/var/log/maillog

                cron.*                                                                        /var/log/cron

                *.emerg                                                                      *

                uucp,news.crit                                                           /var/log/spooler

                local7.*                                                                      /var/log/boot.log

        第一条:kern.* 中的kern就是kern设备,也就是程序运行的日志,后面的星号“*”就是所有级别权限的意思,就是上面priority列表中的一串级别。/dev/console这一串表示控制台console本地物理终端,就是屏幕。

        第二条:*.info;mail.none;authpriv.none;cron.none 这一串中的 *.info 表示所有的设备的info信息以及比info级别更高的信息都记录,后面的mail.none;authpriv.none;cron.none其中none表示不再记录,意思就是除去了这几项。/var/log/messages是一个日志几种处理文件。

        第四条:mail的记录位置-/var/log/maillog中的“-”表示异步。因为日志量很大,且信息不是很关键,用异步写入减轻磁盘IO压力。

        第六条:*.emerg表示所有设备的最高级别信息,后面写入位置的星号 * 表示通知所有登陆到系统上的用户。意思就是系统服务奔溃之前的消息通知给所有登陆到系统上的用户。

        第七条:uucp,news.crit 表示统一级别的可以用逗号分隔。

        第八条:local7.* 自定义日志,日志文件被放在自定义的地方。

登陆日志:

        有些日志记录二进制格式:/var/log/wtmp,/var/log/btmp

        /var/log/wtmp: 当前系统上成功登录的日志,使用last命令查看。

        /var/log/btmp:当前系统上失败的登录尝试,使用lastb命令查看。

        lastlog命令

rsyslog服务器:

1、接收其他主机发送的日志要打开的配置项:

        $ModLoad imudp

        $UDPServerRun 514

        

        $ModLoad imtcp

        $InputTCPServerRun 514

        可以监听在tcp或udp的514端口,默认使用udp,iptables要开放514端口。

2、在另一台主机上,打开/etc/rsyslog.conf,将存储位置改为网络地址:

        *.info;mail.none;authpriv.none;cron.none                @192.168.96.130

        保存后重启,然后在接收端主机上查看日志文件/var/log/messages的最后一条,看看是否有最新的日志信息,且主机名是发送端的主机的主机名。这样就配置好了。

日志存储到MySQL数据库中:

        1、准备好MySQL服务器,创建用户,授权对Syslog数据库的全部访问权限

        2、安装rsyslog-mysql程序包

        3、创建rsyslog-mysql依赖的数据库:mysql -uUSERNAME -hHOST -pPASSWORD < /usr/share/doc/rsyslog-mysql-VERSION/createDB.sql

        4、配置/etc/rsyslog.conf使用ommysql模块,配置完成后重启rsyslog服务,配置详情如下:

                #### MODULES ####

                $ModLoad ommysql

                #### RULES ####

                facility.priority :ommysql:DBHOST,DB,DBUSER,USERPASS

        5、安装loganalyzer,这是一款基于httpd服务的图形化日志分析工具。

                一、配置webserver, 支持php

                        yum install httpd php php-mysql php-gd

                        service httpd start

                二、将loganalyzer程序文件放入web服务下:

                        cp -r loganalyzer-3.6.5/src /var/www/html/loganalyzer

                        cp loganalyzer-3.6.5/contrib/*.sh /var/www/html/loganalyzer

                        cd /var/www/html/loganalyzer

                        chmod +x *.sh

                        ./configure.sh

                        ./secure.sh

                        chmod 666 config.php

        配置完成后打开浏览器即可查看。