温馨提示×

怎样过滤debian syslog信息

小樊
38
2026-10-17 07:50:27
栏目: 智能运维

在 Debian 系统中,syslog 通常由 rsyslog(或较新的 systemd-journald + rsyslog)负责处理。过滤 syslog 信息可以从查看时过滤和**配置时过滤(写入日志前)**两个层面来做。


一、查看已有 syslog 时过滤

1. 使用 journalctl(systemd 系统)

Debian 默认使用 systemd:

# 按服务过滤
journalctl -u ssh.service

# 按优先级(err 及以上)
journalctl -p err

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

# 按关键字
journalctl | grep "error"

2. 查看 /var/log 传统日志

# 查看 syslog
grep "sshd" /var/log/syslog

# 实时过滤
tail -f /var/log/syslog | grep "error"

二、在 rsyslog 中配置过滤(推荐)

1. 按程序/设施过滤

编辑 /etc/rsyslog.conf 或 /etc/rsyslog.d/xxx.conf:

# 只记录 sshd 的 info 以上级别
:programname, isequal, "sshd" info

或忽略某些日志:

# 忽略 cron 的 info
:programname, isequal, "cron" stop

2. 按日志级别过滤

# 只记录 err 及以上
*.err    /var/log/errors.log

3. 按主机名 / IP 过滤

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

4. 丢弃特定日志

:msg, contains, "timeout" stop

修改后重启:

systemctl restart rsyslog

三、使用 logrotate + 过滤(事后管理)

如果你只是想减少日志量:

/etc/logrotate.d/rsyslog

四、常见示例

示例 1:不记录调试信息

*.debug   stop

示例 2:只保留错误到单独文件

*.err    /var/log/errors.log
*.*;*.err  /var/log/syslog

示例 3:屏蔽某服务的所有日志

:programname, isequal, "avahi-daemon" stop

五、调试 rsyslog 配置

rsyslogd -N1

如果你能说明:

  • 是想查看时过滤还是写入前过滤
  • 过滤目标是服务 / 关键字 / 级别

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

0 踩