You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在systemd-journald存储日志前过滤冗余日志消息

如何在systemd-journald存储日志前过滤冗余日志消息

当然可以实现!systemd-journald本身就支持在日志落地存储前过滤掉你不需要的冗余消息,完全不用依赖外部日志管理器,也和查询时的过滤逻辑完全分开。下面是具体的配置步骤:

1. 使用自定义配置片段(推荐方式)

为了不修改默认的/etc/systemd/journald.conf主配置文件,避免后续系统更新覆盖你的设置,我们可以在/etc/systemd/journald.conf.d/目录下创建独立的过滤配置文件,这样更便于管理和维护。

比如创建一个专门过滤监控登录日志的配置文件:

sudo touch /etc/systemd/journald.conf.d/filter-monitor-logins.conf

2. 添加针对性过滤规则

编辑这个配置文件,根据你的实际需求添加匹配规则。journald支持多种过滤方式,最常用的两种是精确匹配和正则表达式匹配:

方式一:精确匹配固定消息内容

如果你能明确写出要过滤的完整消息文本,可以使用FilterMessage配置项,开头加!表示丢弃匹配到的日志:

[Journal]
# 丢弃包含"monitoring system login"的日志消息
FilterMessage=!monitoring system login

方式二:正则表达式匹配(更灵活)

如果日志消息有固定格式但包含动态内容(比如带时间戳、变量用户名),用正则表达式匹配会更实用,使用FilterMessageRegex配置项:

[Journal]
# 丢弃所有"monitor"用户的登录日志
FilterMessageRegex=!session opened for user monitor

如果你需要批量过滤低优先级日志(比如debug、info级别的冗余消息),还可以用优先级过滤:

[Journal]
# 只存储warning及更高级别的日志(自动丢弃info、debug等低优先级内容)
FilterPriority=warning

3. 重启journald让规则生效

配置完成后,重启systemd-journald服务即可应用新的过滤规则:

sudo systemctl restart systemd-journald

补充小技巧

  • 针对特定服务的日志(比如sshd的登录记录),可以结合服务名编写更精准的正则,比如:!sshd\[.*\]: Accepted publickey for monitor
  • 如果你不想完全丢弃日志,只是想限制高频冗余消息的生成频率,可以用RateLimitIntervalSec和RateLimitBurst配置,比如设置RateLimitIntervalSec=30s和RateLimitBurst=5,表示30秒内同一消息最多记录5次,超出的会被临时丢弃

备注:内容来源于stack exchange,提问作者WoJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:43:15