rsyslog 最重要的两个内容.note
1、filter:
# 定义如何处理日志
用于决定:
哪些日志应该写到指定文件
哪些日志应该发到指定服务器
哪些日志应该丢弃
哪些日志应该单独分类# 常见 facility/severity:
facility:(表示日志属于哪一来源)
kern //内核日志
user //用户级程序日志
mail //邮件系统日志(如:postfix、dovecot、sendmail)
daemon //系统守护进程日志
auth //认证相关日志(如sshd、radius等)
authpriv //私有认证日志(如:sshd、sudo、PAM、登陆失败等比auth更敏感的信息)
syslog //syslog系统日志
cron //计划任务日志
local0 ~ local7 //本地自定义facility
severity:(表示日志的严重程度)
0(emerg):系统不可用(极严重故障,几乎不能正常运行)
1(alert):必须立刻处理(紧急告警)
2(crit):严重错误(严重服务异常)
3(error):错误(服务失败、命令失败、认证失败)
4(warning):警告(异常但未必失败)
5(notice):正常但重要(重要状态变更)
6(info):一般信息(常规运行信息)
7(debug):调试信息(详细调试输出)
# 常见变量:
$hostname //日志中声明的来源主机名
$fromhost //rsyslog识别的来源主机名
$fromhost-ip //来源IP
$programname //程序名(如:sshd、sudo、nginx)
$msg //日志消息正文内容
$timereported //日志报告时间
$timegenerated //日志接收时间·示例:
按照facility过滤:
vim /etc/rsyslog.conf
默认的这些就是
按照日志严重等级过滤(可以和facility结合):

按照程序名过滤:

按照来源IP进行过滤:

(重点)可以额外关联 template,自定义日志输出格式:

template根据下面的操作来定义
2、tempalte:
用于定义日志输出的格式
# 常见变量:
## 与filter类似,但是是用两个百分号%包裹变量的
%hostname% //主机名
%fromhost-ip% //来源IP
%programname% //程序名
%$YEAR% //年
%$MONTH% //月
%$DAY% //日
%$HOUR% //时
%$MINUTE% //分
%$SECOND% //秒·示例:
输出以时间变量命名:
template(name="DailyFile" type="string"
string="/var/log/remote/%$YEAR%-%$MONTH%-%$DAY%.log")template 结合 filter:
template(name="SSHFmt" type="string"
string="time=%timegenerated% host=%HOSTNAME% ip=%fromhost-ip% msg=%msg%\n")
if $programname == 'sshd' then {
action(type="omfile" file="/var/log/sshd.log" template="SSHFmt")
}