惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
D
Docker
云风的 BLOG
云风的 BLOG
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
GbyAI
GbyAI
T
Tailwind CSS Blog
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
C
Check Point Blog
I
InfoQ
Microsoft Azure Blog
Microsoft Azure Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
N
Netflix TechBlog - Medium
B
Blog RSS Feed
腾讯CDC
aimingoo的专栏
aimingoo的专栏

博客园 - sunny_2016

xargs的用法 centos 7.9日志关键字搜索 dns-filter 进程病毒,cpu占用高,处理方法 画图工具制作一寸照片 在mysql中innodb_buffer_pool_size=8M,会引起慢SQL吗? 核聚:雷·达里奥的达成目标5步法 英语发单规则一 英语学习三 英语学习笔记二 英语学习笔记一 modbus协议 OPC UA协议学习笔记 限制ssh非法登录 linux添加hosts.deny文件 jmeter的tcp请求示例发送16进制报文 pymodbus模拟modbus slave从站(二) 使用python的pymodbus实现modbus slave 模拟从站一 secure crt使用ssh密钥登录提示未知文件格式 专业的通讯调试工具或者平台有哪些 centos7.9上面卸载中文语言包和中文字体重新安装 linux centos7.9 中文乱码 linux pkill命令的坑 Windows 11 主机上建立反向隧道,实现服务端连接内网客户端主机 互联网上的高危IP,一直在尝试sshd破解 通过/etc/hosts.deny限制一个网段的 SSH 登录尝试 linux查询近8小时ssh登录失败的ip转换为hosts.deny格式打印 多系统集成分析——ERP与OA、PLM、MES、CRM、WMS、SRM、HR ERP也有库存管理、生产管理、流程审批,为什么还要上WMS、MES和OA? gitlab流水线执行发布提示: No such file or directory gitlab-runner注册完提示:New runner. Has not connected yet(新的Runner,尚未连接)
rsyslogd: imjournal: 2475 messages lost due to rate-limit...
sunny_2016 · 2026-09-14 · via 博客园 - sunny_2016

结合你提供的最新日志 rsyslogd: imjournal: 2475 messages lost due to rate-limiting 以及之前的 sudo 高频会话日志,可以得出非常明确的结论。

1. 核心结论:发生了什么?

现象解释:‌
系统发生了‌日志雪崩‌。之前看到的每秒数十次的 sudo 会话创建,产生了海量的日志消息。由于日志产生速度超过了 rsyslog(通过 `imjournal模块从 systemd-journald读取日志)的处理能力或默认限速阈值,导致 ‌2475 条日志被直接丢弃‌。

危害升级:‌

关键信息丢失‌:这 2475 条丢失的日志中,可能包含其他服务的报错、安全审计记录或系统状态信息。一旦丢失,无法恢复。
掩盖真实故障‌:如果系统此时真的有严重错误(如磁盘满、内核恐慌前兆),这些错误日志也会因为“通道堵塞”而被丢弃,导致你无法排查真正的问题。
资源耗尽风险‌:高频的日志生成和丢弃过程会消耗大量的 CPU 和 I/O 资源,可能导致系统响应变慢。
2. 根本原因定位

触发源依然是那个高频执行 sudo 的进程。‌

之前的分析指出是 sudo 在极短时间内频繁开闭会话。现在 rsyslog 报错证实了这种高频行为已经击穿了系统的日志缓冲机制。

链路如下‌:
某个脚本/程序(疑似监控Agent或配置错误的Cron)在 08:40:00 - 08:40:04 期间疯狂调用 sudo。
每次 sudo 调用都触发 systemd 记录 Started Session 和 pam_unix 日志。
短时间内产生数千条日志。
systemd-journald 将日志传递给 rsyslog 的 imjournal 模块。
rsyslog 发现速率超过限制(默认配置通常较严格),开始丢弃后续日志并记录 messages lost due to rate-limiting。
3. 紧急排查与解决步骤
第一步:找出“元凶”进程(必须执行)

由于部分日志已丢失,我们需要在日志恢复正常后,或者通过其他手段找到是谁在调 sudo。

方法 A:查看 Audit 日志(最可靠)‌
auditd 通常比 syslog 更底层,可能记录了完整的命令执行详情,且不受 rsyslog 限流影响(除非 auditd 自身也限流)。

bash
# 搜索该时间段内 sudo 的执行记录
ausearch -sc execve -ts "09/14/2026 08:39:00" -te "09/14/2026 08:43:00" | grep sudo


关注输出中的 exe= 和 key= 字段,以及父进程 PID。

方法 B:实时监控进程树(如果问题仍在持续)‌
打开一个终端,运行以下命令,观察当 sudo 频繁出现时,它的父进程(PPID)是谁:

bash
# 实时打印包含 sudo 的进程及其父进程
watch -n 1 "ps -eo pid,ppid,cmd | grep sudo | grep -v grep"


一旦看到大量 sudo 进程,记下它们的 PPID,然后 ps -fp <PPID> 查看父进程是什么。

方法 C:检查常见的监控 Agent 配置‌
根据经验,90% 的此类情况来自以下软件,请优先检查:

Zabbix Agent‌: 检查 /etc/zabbix/zabbix_agentd.conf 或 /etc/zabbix/zabbix_agentd.d/ 下的自定义脚本。是否有 UserParameter 调用了 sudo 且频率很高(如每几秒一次)?
Prometheus Node Exporter‌: 检查是否有 textfile collector 脚本在频繁执行特权命令。
Cloud Init / Config Management‌: 如 Ansible, Puppet, SaltStack 是否在后台频繁运行?
第二步:临时缓解日志丢失(治标)

为了防止后续再次丢失关键日志,可以临时调整 rsyslog 和 journald 的限流策略。

1. 调整 systemd-journald 限流‌
编辑 /etc/systemd/journald.conf:

ini
[Journal]
# 将速率限制放宽或关闭(生产环境建议放宽而非完全关闭,避免磁盘爆满)
RateLimitIntervalSec=30s
RateLimitBurst=10000 # 默认可能是 1000,调大至 10000 或更高


重启 journald:

bash
systemctl restart systemd-journald


2. 调整 rsyslog imjournal 限流‌
编辑 /etc/rsyslog.conf,在模块加载部分(通常在文件顶部)添加或修改:

bash
module(load="imjournal"
StateFile="imjournal.state"
Ratelimit.Interval="60"
Ratelimit.Burst="20000"
)


注意:不同版本的 rsyslog 参数名可能略有不同,旧版可能是 $ImJournalRatelimitInterval。
重启 rsyslog:

bash
systemctl restart rsyslog

第三步:根治问题(治本)

找到第一步中确定的“元凶”脚本或服务后:

如果是监控脚本‌:

优化权限‌:不要在该脚本中使用 sudo。将该脚本需要执行的命令配置在 /etc/sudoers 中允许特定用户无密码执行,或者最好直接以 root 身份运行该监控代理(如果安全策略允许)。
降低频率‌:检查监控项的采集间隔,是否设置得过短(如 1s 一次)?改为 10s 或 60s。
合并命令‌:如果脚本需要执行多个特权命令,尽量合并为一个 sudo 调用,而不是每个命令都加 sudo。

如果是错误的 Cron 任务‌:

修正 Crontab,移除不必要的 sudo,或增加 sleep 时间。
总结
当前状态‌:系统正在经历日志风暴,导致‌关键日志丢失‌。
直接原因‌:rsyslog 的 imjournal 模块触发了速率限制。
根本原因‌:某个进程(极大概率是监控 Agent 或自动化脚本)在极高频地调用 sudo。
下一步行动‌:
立即‌使用 ausearch 或 ps 找到调用 sudo 的具体命令和父进程。
临时‌调大 journald 和 rsyslog 的 RateLimitBurst 以防更多日志丢失。
最终‌优化该脚本/配置,减少 sudo 调用频率或消除不必要的提权操作。