温馨提示×

centos syslog怎样过滤

小樊
39
2026-10-17 13:53:33
栏目: 智能运维

在 CentOS 中,“syslog”通常指 rsyslog(CentOS 6/7/8 默认使用 rsyslog)。下面按常见使用场景说明如何“过滤”日志。


一、按服务 / 级别过滤(最常用)

1️⃣ 按 facility + priority 过滤

配置文件一般在:

/etc/rsyslog.conf
/etc/rsyslog.d/*.conf

示例:

# 只记录 mail 的 error 及以上
mail.err    /var/log/mail-error.log

# 忽略 cron 的 info 以下
cron.info   ~

常见字段:

  • facility:auth, cron, mail, kern, local0~local7
  • priority:debug, info, notice, warning, err, crit, alert, emerg

二、过滤并丢弃某些日志(不记录)

2️⃣ 丢弃指定日志

# 忽略所有来自 local2 的日志
local2.*    stop

或旧写法:

local2.*    ~

三、按关键字过滤(文本匹配)

3️⃣ 使用 contains

# 包含 "timeout" 的日志单独存
:msg, contains, "timeout"    /var/log/timeout.log

4️⃣ 使用正则

:msg, regex, "error|fail"    /var/log/err.log

四、按主机名 / IP 过滤(集中日志时常用)

:hostname, contains, "web01"    /var/log/web01.log

或:

:fromhost-ip, isequal, "192.168.1.10"   /var/log/node10.log

五、把某些日志“不写”到 messages

例如 不把 cron 写进 /var/log/messages:

cron.*    -/var/log/cron
& stop

& stop 表示后续规则不再处理。


六、使用 journalctl 过滤(CentOS 7+)

如果是 systemd 日志:

# 按服务
journalctl -u nginx

# 按级别
journalctl -p err

# 按时间
journalctl --since "2024-01-01" --until "2024-01-02"

# 按关键字
journalctl | grep timeout

七、修改后重载 rsyslog

systemctl restart rsyslog
# 或
service rsyslog restart

八、示例:综合过滤配置

# 只记录 ssh 错误
:programname, isequal, "sshd"   /var/log/sshd.log
& stop

# 忽略调试信息
*.debug   /dev/null

如果你能告诉我:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 想过滤 本机日志 还是 接收的远程日志
  • 想 丢弃 / 单独存 / 不写 messages

我可以给你更精确的配置示例。

0 踩