rsyslog 配置是什么
rsyslog 决定哪些日志写到哪个文件或转发到哪台机器:每条日志按节点(facility,产生日志的子系统)与级别(severity)匹配规则,命中的规则决定落盘位置或转发目标。配置分布在主配置文件与配置目录下的片段里,改完要校验语法再重启服务。它是日志治理的地基——日志丢失、日志重复、磁盘被日志写满,很多时候问题都出在这里。
基本信息
| 适用平台 | 主流 GNU/Linux 发行版(rsyslog 服务) |
|---|---|
| 配置文件 | /etc/rsyslog.conf 与 /etc/rsyslog.d 下的片段 |
| 匹配语法 | facility.severity 后面跟目标 |
| 常见目标 | 文件路径、远端转发地址、登录用户终端 |
| 转发标记 | 单符号表示 UDP,双符号表示 TCP |
| 生效流程 | 改配置、语法校验、重启服务、造日志验证 |
典型使用场景
- 把特定服务的日志单独分流到独立文件,便于排查与轮转。
- 把日志集中转发到日志服务器,做统一留存与检索。
- 控制哪些级别的日志落盘,避免信息级日志写满磁盘。
- 排查某个程序的日志为何没有出现在预期文件里。
- 调整日志限速,避免突发日志被静默丢弃。
规则与生效流程
规则与生效流程
# 以下规则片段通常放在 /etc/rsyslog.d/ 下的独立文件里
*.info;mail.none;authpriv.none;cron.none /var/log/messages # 默认分流
# authpriv.* /var/log/secure # 认证日志单独存放
# *.emerg :omusrmsg:* # 紧急日志通知登录用户
# *.* @@10.0.0.20:514 # TCP 转发到日志服务器校验与验证
校验与验证
rsyslogd -N1 # 只校验配置语法,不启动服务
systemctl restart rsyslog # 语法通过后再重启
logger -t test 'hello' # 造一条测试日志
tail -n 3 /var/log/messages # 确认按预期落盘
systemctl status rsyslog --no-pager # 确认服务状态与最近报错配置要素读法
| 要素 | 含义 | 使用要点 |
|---|---|---|
| facility | 日志来源子系统 | 如 authpriv、cron、mail、local0 |
| severity | 日志级别 | 从 emerg 到 debug,规则里可用通配 |
| none | 排除某类日志 | 常用于把某来源从默认规则中剔除 |
| 文件路径 | 落盘目标 | 注意目录权限与轮转配置 |
| 单符号与双符号 | 转发标记 | 单符号 UDP,双符号 TCP |
| omusrmsg | 通知登录用户 | 应急场景使用,不能替代留存 |
单符号是 UDP、双符号是 TCP:跨机房收集优先用 TCP 转发,投递更可靠,但要同时确认对端在监听且防火墙已放行,否则日志会静默丢失。
默认规则通常挂在配置目录下的独立文件里,把默认规则整段注释掉会连带停掉系统日志写入。改动前先备份,改完必须做语法校验并造一条日志验证。
rsyslog 自带限速机制,突发大量日志时可能被丢弃并只在内核日志里留下提示。排查「日志缺了一段」时要检查限速设置与内部统计。