1、 RULES-书写规则
格式:日志设备(类型).日志级别 日志处理方式
(1)日志类型分类
auth | pam产生的日志 |
authpriv | ssh,ftp等登录信息的验证信息 |
cron | 时间任务相关 |
kern | 内核 |
lpr | 打印 |
邮件 | |
mark(syslog) | rsyslog服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix主机之间相关的通讯 |
local 1~7 | 自定义的日志设备(类型) |
(2)日志级别分类
debug | 有调试信息的,日志信息最多 |
info | 一般信息的日志,最常用 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
err | 错误级别,阻止某个功能或模块不能正常工作的信息 |
crit | 严重级别,阻止整个系统或整个软件不能正常工作的信息 |
alert | 需要立即修改的信息 |
emerg | 内核崩溃等严重信息 |
none | 什么都不记录 |
备注:从上到小,级别由低到高,记录的信息也越来越少。
(3)连接符号
.xxx | 表示大于等于xxx级别的信息 |
.=xxx | 表示等于xxx级别的信息 |
.!xxx | 表示在xxx之外的等级的信息 |
(4)演示
记录到普通文件或设备文件 | *.* /var/log/file.log #绝对路径 *.* /dev/pts/0 |
转发到远程 | *.* @192.168.0.1 #UDP *.* @@192.168.0.1:10514 #TCP |
发送给用户(在线用户才生效) | *.* root *.* root,test #多个用户使用英文逗号分开 *.* * #*表示所有在线用户 |
忽略,丢弃 | local3.* ~ #忽略所有local3类型的所有级别的日志 |
执行脚本 | local3.* ^/tmp/a.sh #^后跟可执行脚本或程序的绝对路径 #日志内容可作为脚本的第一个参数 |
触发报警 | .. note:: |
备注:日志记录的顺序有先后关系
2、实例
(1)过滤日志,由:号开头
:msg,contains, "error" /var/log/error.log |
:msg,contains, "error" ~ |
:msg,contains, "user vicky" ~ |
:msg, contains, "module-alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write" ~ |
local3.* ~ |
& ~ #忽略所有日志 |
(2)使用模板来定义日志格式
默认模板格式:
$template myFormat, "%rawmsg%\n"
定义模板格式:
详见文档rsyslog的模板
为规则使用模板:
cron.* /var/log/cron;myFormat #分号后面添加模板名
(3)远程发送和接收
*.* @192.168.0.1 #UDP *.* @@192.168.0.1:10514 #TCP
client端:配置发送到哪里,有无端口,使用什么协议发送
server端:配置使用什么协议监听哪个端口,收到的日志保存到哪里
(4)作为server端,将不同client端发送过来的日志保存到不同的文件
:FROMHOST-IP,isequal, "192.168.0.3" /var/log/host3.log :FROMHOST-IP,isequal, "192.168.0.133" /var/log/host133.log :FROMHOST-IP,startwith, "192.168.1." /var/log/network1.log :FROMHOST-IP,startwith, "192.168.2." /var/log/network2.log