先看现象。排查故障时发现某段时间的日志整段缺失,查询时提示有消息被抑制,可应用明明一直在报错,重启服务之后日志才又恢复正常。

原因不止一个,得分开看。默认对同一服务做速率限制。还有一种是短时间刷了大量相同的日志。

少数情况下是限流参数没有按业务调整。

先确认是否被限流

journalctl -u app | grep -i suppressed

然后看当前限流配置

grep -i ratelimit /etc/systemd/journald.conf

接着放宽突发条数

sed -i 's/^#RateLimitBurst=.*/RateLimitBurst=10000/' /etc/systemd/journald.conf

等前面都确认过,再重启服务确认

systemctl restart systemd-journald

同事提醒我看一下最近一次发布,时间点确实对得上。

命令输出我都留了记录,免得改完记不清原来的值。

改之前先确认了最近有没有人动过配置,避免白查一遍。

恢复的判定其实很直接。复现故障时日志完整,查询不再提示有消息被抑制。

限流本身是保护磁盘的手段,关掉之后一定要配合轮转策略和容量告警,否则日志量会把分区写满,排查故障反而更难。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189