Monitorizar o serviço web com o Nagios verificar http

Estou a tentar monitorizar um serviço web com o check_http plug-in de Nagios.

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
    }
Author: Yogeshree Koyani, 2015-10-09

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_httpestamos 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.

 5
Author: Joe Young, 2015-10-12 08:19:32