我的服务器有一个 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
正如@Lex Li 指出的那样,该行显示了问题:
每次重新加载服务时,它都会发生。只有在重装上。我仍然不知道该库到底出了什么问题,但我将系统从 SLES 12.0 升级到了 SLES 12 SP4。
现在,库也更新了,使用
libnetsnmpmibs.so.30.0.3
代替libnetsnmpmibs.so.30.0.2
,并且重新加载作为一个魅力。