rsyslog常用配置
近期在思考一种简单的系统日志统一分析监控方案。在开始后面的内容之间先说下rsyslog,rsyslog目前是redhat、Ubuntu等常见linux发行版上自带的日志管理软件,其配置也比较简单。其主配置文件是/etc/rsyslog.conf 。
一、日志类型和级别
1、日志设备(可以理解为日志类型)
- auth –pam产生的日志
- authpriv –ssh,ftp等登录信息的验证信息
- cron –时间任务相关
- kern –内核
- lpr –打印
- mail –邮件
- mark(syslog)–rsyslog服务内部的信息,时间标识
- news –新闻组
- user –用户程序产生的相关信息
- uucp –unix to unix copy, unix主机之间相关的通讯
- local 1~7 –自定义的日志设备
2、日志级别
- debug –有调式信息的,日志信息最多
- info –一般信息的日志,最常用
- notice –最具有重要性的普通条件的信息
- warning –警告级别
- err –错误级别,阻止某个功能或者模块不能正常工作的信息
- crit –严重级别,阻止整个系统或者整个软件不能正常工作的信息
- alert –需要立刻修改的信息
- emerg –内核崩溃等严重信息
- none –什么都不记录
从上到下,级别从低到高,记录的信息越来越少
3、日志连接
日志设备(类型).(连接符号)日志级别,构成日志处理方式(action)。
1.xxx: 表示大于等于xxx级别的信息
2.=xxx:表示等于xxx级别的信息
3.!xxx:表示在xxx之外的等级的信息
二、日志存储和发送
1、本地保存
1kern.*;*.warn /var/log/kern.log
2*.info;mail.none;authpriv.none;cron.none /var/log/messages
3authpriv.* /var/log/secure
4mail.* /var/log/maillog
5cron.* /var/log/cron
2、远程转发
1*.* @192.168.0.1 # 使用UDP协议转发到192.168.0.1的514(默认)端口
2*.* @@192.168.0.1:10514 # 使用TCP协议转发到192.168.0.1的10514(默认)端口
3、发送本地用户
1*.* root
2*.* root,kiosk,zabbix # 使用,号分隔多个用户
3*.* * # *号表示所有在线用户
三、高级用法
1、忽略、丢弃
1local3.* ~ # 忽略所有local3类型的所有级别的日志
2local3.* ^/tmp/a.sh # ^号后跟可执行脚本或程序的绝对路径
2、过滤日志
过滤特定的日志到文件, 忽略(丢弃)包含某个字符串的日志:
1# 过滤日志, 由:号开头
2:msg, contains, “error” /var/log/error.log
3:msg, contains, “error” ~ # 忽略包含error的日志
4:msg, contains, “user nagios” ~
5local3.* ~
四、远程传输
1、配置服务端(接收)
1vi /etc/rsyslog.conf #在文件开始加上,同时确保514端口能够被客户端用tcp访问
2$ModLoad imtcp.so # needs to be done just once #使用tcp方式
3$InputTCPMaxSessions 500 # tcp接收连接数为500个
4$InputTCPServerRun 514 # tcp接收信息的端口
5$template logformat,”%TIMESTAMP:::date-mysql% %FROMHOST-IP%%msg%\n” # 定义一个名为logformat模板, 为信息加上日志时间
6$template DynFile,”/var/log/tlog%$year%%$month%%$day%.log” # 定义日志文件的名称,按照年月日
7:rawmsg, contains, “sdns_log” ?DynFile;logformat # 把rawmsg(也可以使用msg)日志中包含sdns_log标志的信息写到DynFile定义的日志文件里
8:rawmsg, contains, “sdns_log” ~ # 这个表示丢弃包含sdns_log标志的信息, 一般都加上它, 以免多个日志文件记录重复的日志
如果要把不同服务器发送过来的日志保存到不同的文件, 可以这样操作:
1:fromhost-ip, isequal, “192.168.0.160″ /var/log/host160.log
2:FROMHOST-IP, isequal, “192.168.0.161″ /var/log/host161.log
3:FROMHOST-IP, startswith, “192.168.1.” /var/log/network1.log
4:FROMHOST-IP, startswith, “192.168.2.” /var/log/network2.log
2、配置客户端(发送)
1vi /etc/rsyslog.conf #在文件开始加上
2#把包含sdns_log的信息通过tcp发到192.168.1.2 @@表示tcp @表示udp
3:rawmsg, contains, “sdns_log” @@192.168.1.2 # 默认514端口
4#这个表示丢弃包含sdns_log标志的信息,防止这个信息写到本机的/var/log/message
5:rawmsg, contains, “sdns_log” ~
可以使用如下方法进行测试:
1在客户端上执行
2logger -p user.info “sdns_log 34334″
3在服务端的/var/log/目录里是否有tlog*日志产生
需要日志轮转的,可以使用logrotate进行配置。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/rsyslog-config/6250.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.