Estou executando o Nagios 3.5 em uma máquina Centos 7. A configuração é usada para monitorar algumas máquinas Windows via NRPE (comandos check_nrpe). Por enquanto, estou usando os comandos 'alias' pré-configurados que vêm no arquivo 'nsclient-full.ini'. Tudo está funcionando bem até agora.
Eu quero monitorar o estado das atualizações do Windows nos meus hosts, usando o comando 'alias_updates'.
; alias_updates - Alias for alias_updates.
alias_updates = check_updates -warning 0 -critical 0 ShowAll=long
Aqui está a seção onde todos os scripts externos são definidos:
; A list of scripts available to run from the CheckExternalScripts module.
[/settings/external scripts/scripts]
check_updates=C:\Program Files\NSClient++\scripts\check_updates.vbs
É claro que verifiquei se 'check_updates.vbs' existe no caminho que forneci. Afinal, veio junto com o NSClient ++.
Eu ativei a execução de scripts externos:
; Check External Scripts - A simple wrapper to run external scripts and batch files.
CheckExternalScripts = 1
As outras opções de configuração relevantes (na minha opinião) são:
; Section for NRPE (NRPEServer.dll) (check_nrpe) protocol options.
[/settings/NRPE/server]
; COMMAND ARGUMENT PROCESSING
allow arguments = true
; COMMAND ALLOW NASTY META CHARS
allow nasty characters = false
; PORT NUMBER - Port to use for NRPE.
port = 5666
; Section for external scripts configuration options (CheckExternalScripts).
[/settings/external scripts]
; COMMAND ARGUMENT PROCESSING
allow arguments = true
; COMMAND ALLOW NASTY META CHARS
allow nasty characters = false
; SCRIPT DIRECTORY
script path =
; COMMAND TIMEOUT
timeout = 60
No servidor Nagios, no prompt de comando, estou tentando fazer isso:
[root@mama365-account plugins]# ./check_nrpe -H 192.168.10.13 -c alias_updates
A resposta que estou recebendo é esta:
ExternalCommands: failed to create process (C:\Program Files\NSClient++\scripts\check_updates.vbs): it is not an exe file (check NSC.log for more info) - failed to lookup error code: 193( reson: 87)
Eu entendo que o NSClient pode executar plugins que não são executáveis (* .exe), mas apenas scripts. E este é um script VB. Além disso, a mesma mensagem de erro é exibida na GUI do Nagios, na caixa correspondente ao comando.
Alguém tem alguma ideia de como consertar isso? Ler os documentos do NSClient ++ só me trouxe até agora ...
UPDATE 1:
Eu segui as instruções fornecidas por Michael Medin ao pé da letra. Agora meu 'nsclient-full.ini' é assim:
; A list of wrappped scripts (ie. using the template mechanism)
[/settings/external scripts/wrapped scripts]
check_updates=scripts\check_updates.vbs
; VISUAL BASIC WRAPPING -
vbs=cscript.exe //T:30 //NoLogo %SCRIPT% %ARGS%
O problema é que agora estou recebendo outro erro, desta vez algo relacionado à execução do script vb:
C:Program FilesNSClient++scriptscheck_updates.vbs(15, 1) Microsoft VBScript runtime error: Class not defined: 'NagiosPlugin'
Em uma nota lateral, parece que o plugin retornou 'OK', já que a caixa correspondente no Nagios é verde.
UPDATE 2:
Depois de pesquisar nos fóruns do NSClient ++, encontrei alguém com o mesmo problema. Acontece que eu estava faltando um '\':
check_updates=scripts\check_updates.vbs
Deve ser:
check_updates=scripts\check_updates.vbs
Mas ainda não consigo fazer funcionar. Parece que a comunicação e a execução do script estão corretas agora, mas a operação expira. Se eu substituir o tempo limite para 120s com a opção '-t' da linha de comando, recebo esta mensagem de erro:
CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.