1,准备
master:10.1.5.241slave01:10.1.5.242在服务器端和客户端分别安装rsyslog[root ~]# yum -y rsyslog[root ~]# rsyslogd -versionrsyslogd 5.8.10, compiled with: FEATURE_REGEXP: Yes FEATURE_LARGEFILE: No GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes Runtime Instrumentation (slow code): NoSee http://www.rsyslog.com for more information.2,配置配置文件如下:[root ~]# egrep -v '^#|^$' /etc/rsyslog.conf$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)$ModLoad imklog # provides kernel logging support (previously done by rklogd)$ModLoad immark # provides --MARK-- message capability$ModLoad imudp 打开ucp连接,通过ucp传日志$UDPServerRun 514$ModLoad imtcp 打开tcp连接,通过tcp传日志$InputTCPServerRun 10514 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat$IncludeConfig /etc/rsyslog.d/*.conf*.info;mail.none;authpriv.none;cron.none /var/log/messagesauthpriv.* /var/log/securemail.* -/var/log/maillogcron.* /var/log/cron*.emerg *uucp,news.crit /var/log/spoolerlocal7.* /var/log/boot.log例子1,简单配置:将所有系统log都放入服务器端下的/var/log/all.log下。配置:服务器:/etc/rsyslog.conf文件最后添加*.* /var/log/all.log[root ~]# /etc/init.d/rsyslog restart客户端:/etc/rsyslog.conf文件最后添加*.* @@10.1.5.241:10514 通过tcp传[root@slave01 ~]# /etc/init.d/rsyslog restart测试:tail -f /var/log/all.log例子2,自定义测试,配置:服务器:/etc/rsyslog.conf文件最后添加:fromhost,isequal, “slave01″ /var/log/all.log #过滤来自lave01的日志,放入/var/log/all.log:fromhost,isequal, “slave01″ ~[root@master ~]# /etc/init.d/rsyslog restart客户端:*.* @10.1.5.241:514 #通过udp传[root@slave01 ~]# /etc/init.d/rsyslog restart测试:[root@slave01 ~]# logger "hello world" [root@master ~]# tail -f /var/log/all.log例子3,自定义测试,配置:服务器:/etc/rsyslog.conf文件最后添加local5.* /var/log/all.log #过滤local5级别的日志,放入/var/log/all.loglocal5.* ~[root@master ~]# /etc/init.d/rsyslog restart客户端:local5.* @10.1.5.241:514 #通过udp传[root@slave01 ~]# /etc/init.d/rsyslog restart测试:[root@slave01 ~]# logger -p local5.info "hello world" # 这里必须指定local5级别[root@master ~]# tail -f /var/log/all.log例子4,自定义测试,配置:服务器:/etc/rsyslog.conf文件最后添加$template logfile, "/var/log/logfile_%$year%%$month%%$day%.log":msg,contains, "muyushan" ?logfile[root@master ~]# /etc/init.d/rsyslog restart客户端::msg,contains, "muyushan" @@10.1.5.241:10514 #通过tdp传[root@slave01 ~]# /etc/init.d/rsyslog restart测试:[root@slave01 ~]# logger -t muyushan "hello world" # 在日志正文每行记录加上“muyushan”标签[root@master ~]# tail -f /var/log/all.log例子5,apache日志管理配置:服务器:mkdir /data/apache/logs chown apache:apache /data/apache/logs /etc/rsyslog.conf文件最后添加$template access_log, "%msg:2:$%\n" $template error_log, "%msg%\n" # web1-access-log $template access_log_file_web1, "/data/apache/logs/%$NOW%/access-log/web1-access_log" # web1-error-log $template error_log_file_web1, "/data/apache/logs/%$NOW%/error-log/web1-error_log" # web1-access-log if $syslogfacility-text == 'local6' and $syslogtag == 'http-access:' and $fromhost-ip == '10.1.5.241' then -?access_log_file_web1;access_log # web1-error-log if $syslogfacility-text == 'local6' and $syslogtag == 'http-error:' and $fromhost-ip == '10.1.5.241' then -?error_log_file_web1;error_log [root@master ~]# /etc/init.d/rsyslog restart客户端:vim /etc/http/conf/httpd.conf 找到以下选项并将此选项标注# CustomLog logs/access_log combined ErrorLog logs/error_log 分别在此2个选项下添加如下内容 CustomLog "|/usr/bin/logger -p local6.info -t http-access" combined ErrorLog "| /usr/bin/logger -p local6.info -t http-error" /etc/rsyslog.conf文件最后添加local5.* /var/log/all.log #过滤local5级别的日志,放入/var/log/all.loglocal5.* ~[root@slave01 ~]# /etc/init.d/rsyslog restart测试:[root@master ~]# tail -f /data/apache/logs/%$NOW%/access-log/web1-access_log[root@master ~]# tail -f /data/apache/logs/%$NOW%/error-log/web1-error_log附录:日志设备(可以理解为日志类型)
日志设备/类型 | 说明 |
auth | –pam产生的日志 |
authpriv | –ssh,ftp等登录信息的验证信息 |
cron | –时间任务相关 |
kern | –内核 |
lpr | –打印 |
–邮件 | |
mark(syslog) | –rsyslog服务内部的信息,时间标识 |
news | –新闻组 |
user | –用户程序产生的相关信息 |
uucp | –unix to unix copy, unix主机之间相关的通讯 |
local 1~7 | –自定义的日志设备 |
日志级别
从上到下,级别从低到高,记录的信息越来越少 详细的可以查看手册: man 3 syslog
级别 | 说明 | 级别值 |
debug | –有调式信息的,日志信息最多 | 7 |
info | –一般信息的日志,最常用 | |
notice | –最具有重要性的普通条件的信息 | |
warning | –警告级别 | 4 |
err | –错误级别,阻止某个功能或者模块不能正常工作的信息 | |
crit | –严重级别,阻止整个系统或者整个软件不能正常工作的信息 | |
alert | –需要立刻修改的信息 | |
emerg | –内核崩溃等严重信息 | |
none | –什么都不记录 |
连接符号
连接符号 | 说明 |
.xxx | 表示大于等于xxx级别的信息 |
.=xxx | 表示等于xxx级别的信息 |
.!xxx | 表示在xxx之外的等级的信息 |
示例:
:msg,contains,"error" # 选择包含 error 的日志 :hostname,isequal, "host1" # 选择主机名为 host1 的日志 :msg,!regex,"fatal .* error" # 选择不匹配指定正则表达式的日志
logger的使用
logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。
logger -it error -p local5.info "hello world"
-i 在每行都记录进程ID
-t 日志中的每一行都加一个error标签
-p 指定自定义的日志设备,和配置文件的local5.*对应,配置文件里没有.info。
说明,如果是自己写的程序,在生成日志的代码中需要用logger命令转到系统的日志接口。
参考:
使用说明:http://w.gdu.me/wiki/Linux/rsyslog_logrotate.html
配置介绍:http://blog.clanzx.net/2013/12/31/rsyslog.html
http://www.cnblogs.com/blueswu/p/3564763.html
http://www.tuicool.com/articles/Jv2eUvn