rsyslog 是什么
rsyslog 负责把系统与应用日志按规则写到文件或转发出去。主配置 /etc/rsyslog.conf 会用包含语句引入 /etc/rsyslog.d/ 下的片段,所以自定义规则通常写成该目录里的独立文件,按文件名前缀排序加载。规则语法是选择器加动作,选择器由来源类别与级别两部分组成,动作为落文件、转发或停止处理。
基本信息
| 适用平台 | RPM 系与 DEB 系通用(包名 rsyslog) |
|---|---|
| 主配置 | /etc/rsyslog.conf |
| 自定义目录 | /etc/rsyslog.d/*.conf |
| 生效方式 | systemctl restart rsyslog |
| 语法检查 | rsyslogd -N1 |
典型使用场景
- 把某个应用的日志单独落到独立文件,便于分析与轮转
- 按级别过滤,只把 err 以上级别单独留存或告警
- 把认证类日志分到安全团队可读的文件
- 排障时临时调大某模块日志级别,事后恢复
- 与 logrotate 配合控制文件大小与保留周期
分流规则示例
分流规则示例
# /etc/rsyslog.d/10-myapp.conf
if $programname == 'myapp' then /var/log/myapp.log # 按程序名单独落文件
& stop # 命中后停止,避免重复落盘
authpriv.* /var/log/secure # 认证类日志
*.info;mail.none;authpriv.none;cron.none /var/log/messages # 综合日志排除噪音
# 生效与验证
rsyslogd -N1 # 语法检查,看结尾是否成功
systemctl restart rsyslog # 重载配置
logger -p user.info 'rsyslog test' # 造一条测试日志
tail -5 /var/log/messages # 确认落地选择器怎么读
| 写法 | 来源类别 | 级别范围 |
|---|---|---|
| authpriv.* | 认证与授权 | 全部级别 |
| *.info | 所有来源 | info 及以上 |
| mail.none | 邮件相关 | 不记录 |
| cron.err | 计划任务 | err 及以上 |
| local0.debug | 自定义本地通道 | debug 及以上 |
落点对照:RPM 系常见 messages、secure、cron、maillog,DEB 系对应 syslog、auth.log、cron.log;应用日志可以走 local0 到 local7 这些本地通道,避免和系统日志混在一起。
动作写法对照
| 动作 | 写法 | 说明 |
|---|---|---|
| 落文件 | /var/log/xx.log | 路径前加减号表示异步写入,降低丢日志风险 |
| 转发 | @@10.0.0.9:514 | 两个 @ 表示走 TCP,一个 @ 表示走 UDP |
| 停止处理 | & stop | 命中后不再匹配后续规则 |
| 设置模板 | $template 名称,格式 | 统一日志行格式,便于集中分析 |
同一条日志可能同时命中多条规则并按顺序多次落盘;出现重复记录时先核对规则顺序与有无停止处理,再决定精简哪一条。