Plugin Nagios para tirar o instantâneo do processo quando a carga está alta

4

Nós configuramos Nagios com check_load via NRPE plugin para monitorar o carregamento do servidor, ele relata quando o carregamento é alto, mas não tem a opção de obter os principais processos de captura instantânea (como top command) tempo.

Existe algum nagios NRPE plug-ins para isso?

    
por nitins 05.10.2011 / 07:11

3 respostas

12

Você pode fazer isso com manipuladores de eventos .

Primeiro, adicione um manipulador de eventos para sua definição de média de carga:

define service{
    use                     generic-service
    host_name               xx
    service_description     Load_Average
    check_command           check_nrpe!check_load
    event_handler           processes_snapshot!xx
    contact_groups          admin-sms
}

O comando processes_snapshot está definido em commands.cfg :

define command{
    command_name    processes_snapshot
    command_line    $USER1$/eventhandlers/processes_snapshot.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $HOSTADDRESS$
}

Em segundo lugar, escreva um script de manipulador de eventos ( processes_snapshot.sh ):

#!/bin/bash

case "$1" in
    OK)
        ;;
    WARNING)
        /usr/local/nagios/libexec/check_nrpe -H $4 -c processes_snapshot
        ;;
    UNKNOWN)
        ;;
    CRITICAL)
        /usr/local/nagios/libexec/check_nrpe -H $4 -c processes_snapshot
        ;;
esac

exit 0

O comando processes_snapshot é definido em nrpe.cfg no host xx como abaixo:

command[processes_snapshot]=top -cSbn 1 | tail -n +8 | sort -rn -k11 | head > /tmp/proc_snap.txt

PS: Eu não testei esta configuração.

    
por 05.10.2011 / 07:53
7

Veja o que eu fiz para obter um instantâneo da lista de processos diretamente nos e-mails de notificação , com base na ideia de @quanta. Pode conter caminhos específicos para a maneira como o Nagios está instalado em máquinas Debian / Ubuntu:

  1. Criado um script de wrapper /usr/local/sbin/check_load que chama o original e anexa o instantâneo do processo se o código de saída for 1 (WARNING) ou 2 (CRITICAL):

    #!/bin/sh
    /usr/lib/nagios/plugins/check_load "$@" || {
        rc=$?
        echo
        # http://nagios.sourceforge.net/docs/3_0/pluginapi.html
        # | separates long output from perfdata
        COLUMNS=1000 top -cSbn 1|sed -e 's/|/<BAR>/g' -e 's/ \+$//'
        exit $rc
    }
    

    Isso define COLUMNS em um número grande para que os nomes de processos / linhas de comando não sejam truncados para 40 caracteres, executados no modo em lote para uma iteração ( -bn 1 ), solicitados por linhas de comando completas ( -c ) e os tempos de CPU cumulativos ( -S ) a serem mostrados, em seguida, garante que a saída de top não seja truncada no primeiro caractere | , substituindo-a por <BAR> .

    Eu acho que a ordem de classificação padrão do top seja adequada - tentar classificar novamente pelo tempo de CPU cumulativo, como foi sugerido na resposta do @ quanta, coloca daemons do sistema como init ou crond no topo, o que não me ajuda a descobrir qual O script CGI foi responsável pelo pico da CPU. Também desta forma eu consigo manter o cabeçalho do topo.

    Não se esqueça de chmod +x /usr/local/sbin/check_load

  2. Edite /etc/nagios-plugins/config/load.cfg e substitua a entrada check_load

    command_line    /usr/lib/nagios/plugins/check_load --warning='$ARG1$,$ARG2$,$ARG3$' --critical='$ARG4$,$ARG5$,$ARG6$'
    

    com

    command_line    /usr/local/sbin/check_load --warning='$ARG1$,$ARG2$,$ARG3$' --critical='$ARG4$,$ARG5$,$ARG6$'
    
  3. Edite /etc/nagios3/commands.cfg e atualize a entrada notify-service-by-email para incluir $ LONGSERVICEOUTPUT $ nos e-mails gerados. É muito longo para colar aqui; basicamente, encontre o Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail bit e mude para Info:\n\n$SERVICEOUTPUT$\n$LONGSERVICEOUTPUT$\n" | /usr/bin/mail .

  4. Reinicie os nagios: service nagios3 restart .

Eu não tentei isso com o NRPE.

    
por 27.12.2012 / 16:52
1

Eu prefiro:

command[processes_snapshot]=top -cSbn 1 | head -14 | tail -8
    
por 07.09.2013 / 21:49