O pacote EPEL para Nagios no RedHat Enterprise Linux 6 foi atualizado há algumas semanas da versão 3.4 para a versão 4.3. A atualização foi feita por um simples comando yum update
, e nada indicou uma alteração importante na versão.
Embora após a atualização o Nagios pareça estar funcionando bem (todos os serviços estão devidamente visíveis na interface da Web), pouco está realmente funcionando: as verificações de serviço não são realizadas e os e-mails também não são enviados. Dezenas de mensagens de erro são visíveis em /var/log/messages
:
Jan 26 15:58:55 srv1 nagios: Unable to send check for host 'srv3' to worker (ret=-2)
Jan 26 15:58:58 srv1 nagios: Unable to run check for service 'Total Processes' on host 'srv4'
Jan 26 15:59:05 srv1 nagios: Unable to run check for service 'Lab Home Partition' on host 'srv1'
Além disso, tentar reiniciar o nagios acaba em um erro que não estava presente antes da atualização: No usable PID found in /var/run/nagios/nagios.pid
. Esta parte do problema parece ter uma solução aqui: Nagios não quer começar, agora não vai parar!
Depois de perceber que a atualização criou um arquivo /etc/nagios/nagios.cfg.rpmnew
, executei um diff
com o arquivo de configuração original do 3.5.1 RPM para ver quais eram as diferenças e alterei o arquivo de configuração real de acordo. As mudanças são principalmente relativas à posição de alguns arquivos usados em tempo de execução (aqui estão os valores da nova versão):
object_cache_file=/var/spool/nagios/objects.cache
precached_object_file=/var/spool/nagios/objects.precache
lock_file=/var/run/nagios/nagios.pid
temp_file=/var/spool/nagios/nagios.tmp
check_result_path=/var/spool/nagios/checkresults
Isso resolve o problema de parada / reinicialização mencionado acima, mas quebra a interface web, que agora exibe Error: Could not read object configuration data!
. E as verificações de serviço ainda não são executadas.
Mensagens de erro também estão presentes em /var/log/audit/audit.log
, indicando que o problema provavelmente está relacionado ao SELinux (o sistema está sendo executado no modo imposto):
type=AVC msg=audit(1516991640.421:263116): avc: denied { getattr } for pid=29_exec_t:s0 tclass=file
type=SYSCALL msg=audit(1516991640.421:263116): arch=c000003e syscall=4 success=n fsgid=494 tty=(none) ses=4000 comm="check_procs" exe="/usr/lib64/nagios/plugins
De fato, a configuração temporária do SELinux para o modo permissivo resolve completamente o problema; no entanto, isso não é uma solução. Como atualizar corretamente as configurações do SELinux enquanto mantém o SELinux em modo de execução?