Monitorizar o serviço web com o Nagios verificar http
o url que estou a tentar monitorizar inclui o parâmetro url.
e acontece que o 'plugin' check_htttp irá ignorar o parâmetro url ao verificar.
Com a minha configuração.'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
define service{
use local-service ; Name of service template to use
host_name pear
service_description HTTP
check_command check_http!-u http://pear.com/total?eId=12345&env=abcde
notifications_enabled 0
}
1 answers
Tente substituir o valor passado para -u
por um caminho relativo em vez do URL completo.
Neste exemplo, o nome da máquina (-H
) será fornecido por $HOSTADDRESS$
que é retirado do campo address
da definição da máquina pear
.
O valor passado para o parâmetro -u
deve ser um caminho relativo, por exemplo: /total?eId=12345&env=abcde
.
Vamos adicionar a definição de comando -u
à definição de comando check_http_with_args
para não Termos de a passar como parte dos nossos parâmetros na nossa definição de serviço.
define host {
host_name pear
alias pear
address pear.com
use linux-server
contact_groups admins
notification_interval 0
notification_period 24x7
notifications_enabled 1
register 1
}
define command{
command_name check_http_with_args
command_line $USER1$/check_http -H $HOSTADDRESS$ -u $ARG1$
}
define service {
service_description pear_total_http
use generic-service
check_command check_http_with_args!/total?eId=12345&env=abcde
host_name pear
contact_groups admins
notification_interval 0
notification_period 24x7
notifications_enabled 1
flap_detection_enabled 1
register 1
}
Na fim, o comando que Nagios executa deve ser traduzido para algo parecido com isto:
/usr/local/nagios/libexec/check_http -H pear.com -u /total?eId=12345&env=abcde
Você pode tentar executar o acima a partir da linha de comando para se certificar de que funciona para você.
Nota: Substitua a localização de check_http
pela localização real correspondente à sua localização de instalação no seu servidor de Nagios.
Partes relevantes das páginas de homem check_http
estamos a referir-nos:
-H, --hostname=ADDRESS Host name argument for servers using host headers (virtual host) Append a port to include it in the header (eg: example.com:5000) ... -u, --url=PATH URL to GET or POST (default: /)
Fonte: https://www.monitoring-plugins.org/doc/man/check_http.html
Editar:
Para responder às suas perguntas do comentário, o -k
ou {17]} permitir-lhe-á passar em cabeçalhos.
-k, --header=STRING Any other tags to be sent in http header. Use multiple times for additional headers
Fonte: https://www.monitoring-plugins.org/doc/man/check_http.html
Para especificar um cabeçalho Accept, eu modificaria o seguinte para parecer:
define command{
command_name check_http_with_args
command_line $USER1$/check_http -H $HOSTADDRESS$ -u "$ARG1$" -k "$ARG2$"
}
define service {
service_description pear_total_http
use generic-service
check_command check_http_with_args!/total?eId=12345&env=abcde!Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
host_name pear
contact_groups admins
notification_interval 0
notification_period 24x7
notifications_enabled 1
flap_detection_enabled 1
register 1
}
...adicionar -k "$ARG2$"
ao {[19] } da definição de command
e adicionando a Accept: <MIME types>
(por exemplo Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
) à check_command
da definição de service
.
Também, eu embrulhei $ARG1$
de -u "$ARG1$"
parte da command_line
em aspas duplas, pois suspeito que o &
em eId=12345&env=abcde
está a fazer com que a shell pense que o fim do comando está terminado pouco antes do &
. Envolver o parâmetro em aspas duplas deve fazê-lo ver a string inteira como um argumento inteiro.