Qual é a maneira correta de parar o daemon nagios ndo2db?

1

Qual é a maneira correta de matar o daemon ndo2db do Nagios?

Quando encerro nagios e ndo2db , faço o seguinte:

/etc/init.d/nagios stop e /etc/init.d/ndo2db stop

e vejo o seguinte em nagios.log :

[1311865619] Caught SIGTERM, shutting down...
[1311865619] Successfully shutdown... (PID=12422)
[1311865619] ndomod: Shutdown complete.
[1311865619] Event broker module '/usr/local/nagios/bin/ndomod.o' deinitialized successfully.

No entanto, /etc/init.d/ndo2db stop envia a seguinte mensagem para o console:

ndo2db was not running... could not stop

Se eu ps -ax | grep nagios , ainda vejo um processo ndo2db em execução:

12381 ? Ss 0:00 /usr/local/nagios//bin/ndo2db -c /usr/local/nagios//etc/ndo2db.cfg

Qual eu então tenho que matar manualmente antes de reiniciar o ndo2db, senão fico:

[root@nag01 nagios]# /etc/init.d/ndo2db start
Starting ndo2db:Could not bind socket: Address already in use
 done.
[root@nag01 nagios]#

Existe uma maneira mais limpa de fazer isso?

Estou correndo:

  • Nagios 3.2.3 construído a partir da fonte
  • NDO Utils 1.4b9 construído a partir da origem
  • Centreon 2.2.1 Estável
  • Centos 5,5 x64
  • MySQL 5.5 x64

Atualização:

Uma das coisas estranhas (?) que notei é que quando o ndo2db e o nagios estão rodando, eu vejo duas instâncias do ndo2db:

12753 ? Ss 0:00 /usr/local/nagios//bin/ndo2db -c /usr/local/nagios//etc/ndo2db.cfg
12792 ? S  0:00 /usr/local/nagios//bin/ndo2db -c /usr/local/nagios//etc/ndo2db.cfg

Isso é normal? Se sim, meu palpite é que a parte stop do script init.d está apenas matando um processo?

    
por Kev 28.07.2011 / 17:25

1 resposta

2

Eu encontrei o culpado - era o construtor de arquivos de configuração do Centreon.

ndo2db tem uma configuração de lock_file que está faltando na interface do usuário de configuração do Centreon.

Quando o Centreon gera os arquivos de configuração, ele também gera ndo2db.cfg - mas sem o valor de configuração lock_file .

Há um problema em aberto sobre isso:

No lock_file field in Configuration - Centreon - ndo2db.cfg

Tendo spelunked o código-fonte, quando ndo2db daemonises e se não houver uma configuração lock_file , ele ignorará isso e continuará, e nenhum arquivo de bloqueio será gravado contendo o PID.

Isso, é claro, significa que a função stop no script init não será capaz de identificar o id do processo ndo2db para que ele possa ser eliminado.

Atualização:

Para resolver esse problema, adicionei manualmente uma nova coluna à tabela cfg_ndo2db no banco de dados centreon :

ALTER TABLE 'cfg_ndo2db'
    ADD COLUMN 'lock_file' VARCHAR(255) NULL DEFAULT NULL;

Em seguida, preenchi o caminho do arquivo de bloqueio do ndo2db:

UPDATE 'cfg_ndo2db' SET 'lock_file'='/usr/local/nagios/var/ndo2db.lock' WHERE 'id'=1;

Isso forçará o centro a escrever a configuração lock_file cada vez que a configuração for gerada. Isso também parece sobreviver às atualizações, embora eu sempre verifique os scripts de atualização do banco de dados para garantir que isso não ocorra como uma correção não documentada.

    
por 28.07.2011 / 18:57

Tags