На моем сервере есть служба SNMP (NET-SNMP), запущенная с systemd
. Он работает нормально, за исключением того, что каждые 3 дня, в 15:00, происходит сбой службы.
Я замечаю в журнале, что происходит перезагрузка агента. Потом вылетает.
Служба перезагружается из-за логротации журналов. Файл журнала достигает размера, необходимого для logrotate, через 2+ дней, поэтому на 3-й день запускается logrotate. Существует постротация для перезагрузки 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
, прямо перед сбоем: Демон перенастройки
Как указал @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 SP4 с SLES 12.0.
Теперь библиотека также обновлена с использованием libnetsnmpmibs.so.30.0.3
вместо libnetsnmpmibs.so.30.0.2
и перезагрузки ] работает как оберег.