我的服务器有一个用 启动的 SNMP 服务 (NET-SNMP) systemd
。它运行良好,只是每 3 天下午 3:00,服务就会崩溃。
我在日志中注意到代理已重新加载。然后它崩溃了。
由于日志的 logrotate,服务重新加载。日志文件在 2 天后达到 logrotate 所需的大小,因此在第 3 天,logrotate 开始。有一个 postrotate 来重新加载 snmpd(以及未启用的 snmptrapd)。
但如下所示,它无法重新加载。
这是来自的日志/var/log/messages
。该机器是 SLES 12。
2019-01-16T15:00:01.261639+01:00 myserver systemd[1]: Reloading LSB: Net-SNMP agent.
2019-01-16T15:00:01.270020+01:00 myserver kernel: [4192068.189683] floppy: error -5 while reading block 0
2019-01-16T15:00:01.270032+01:00 myserver kernel: [4220891.794129] snmpd[37667]: segfault at 0 ip 00007ff808105224 sp 00007ffc65011420 error 4 in libnetsnmpmibs.so.30.0.2[7ff80806a000+180000]
2019-01-16T15:00:01.271016+01:00 myserver snmpd[49093]: Reload service snmpd:..done
2019-01-16T15:00:01.282082+01:00 myserver systemd[1]: Reloaded LSB: Net-SNMP agent.
2019-01-16T15:00:01.282290+01:00 myserver snmpd[49101]: Shutting down snmpd:..done
2019-01-16T15:00:01.291082+01:00 myserver systemd[1]: Unit snmptrapd.service cannot be reloaded because it is inactive.
2019-01-16T15:00:01.481446+01:00 myserver systemd[1]: Reloading System Logging Service.
net-snmpd.log
崩溃之前,文件的最后一行日志是:Reconfiguring daemon
答案1
正如@Lex Li 指出的那样,问题出现在该行:
2019-01-16T15:00:01.270032+01:00 myserver kernel: [4220891.794129] snmpd[37667]: segfault at 0 ip 00007ff808105224 sp 00007ffc65011420 error 4 in libnetsnmpmibs.so.30.0.2[7ff80806a000+180000]
每次服务重新加载,然后它发生了。只有在重新加载。我仍然不知道该库到底出了什么问题,但是我将系统从 SLES 12.0 升级到了 SLES 12 SP4。
现在,该库也已更新,使用libnetsnmpmibs.so.30.0.3
而不是libnetsnmpmibs.so.30.0.2
,并且重新加载很有魅力。