Nagios plugins / comandos de saída para o syslog

2

Você sabe se existe alguma maneira fácil de enviar a saída de cada verificação executada pelo nagios para o syslog?

    
por Matt 05.12.2011 / 18:19

2 respostas

0

Eu escrevi um pequeno script que pode ser usado como notificação e / ou manipulador de eventos. Isso foi benéfico na época, pois eu não queria registrar estados de erros suaves e a compilação com a qual eu estava trabalhando não conseguia separar os dois. Também fornece algumas opções de formatação.

Isso é fácil de usar, adicionando um syslog de usuário com as opções notify-by-syslog definidas. Basta adicionar esse usuário como um contato onde você deseja que um serviço específico faça o login no syslog.

O comando Nagios no arquivo de configuração:

define command{
        command_name    notify-service-by-syslog
        command_line    /usr/bin/perl $USER1$/send_syslog.pl \
                 --state $SERVICESTATE$ --host $HOSTADDRESS$ \
                --msg "$HOSTADDRESS$ $SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGSERVICEOUTPUT$" --hard $SERVICESTATETYPE$
        }
define command{
        command_name    notify-host-by-syslog
        command_line    /usr/bin/perl $USER1$/send_syslog.pl \
                --hard $HOSTSTATETYPE$ --state $HOSTSTATE$ --host $HOSTADDRESS$ \
                --msg "$HOSTADDRESS$: $HOSTSTATE$ $HOSTOUTPUT$ $LONGHOSTOUTPUT$"
         }

O script send_syslog.pl

#!/usr/bin/perl -w

use Sys::Syslog qw(:standard :macros);
use strict;
use Getopt::Long;
&Getopt::Long::config('bundling');

my $help;
my $hard;
my $state;
my $host;
my $msg;

get_options();
run_process();

sub run_process
{
    if( $hard eq "SOFT" )
    {
        return 0;
    }
    my $alert=LOG_DEBUG;
    $alert=LOG_EMERG    if $state eq  "DOWN";
    $alert=LOG_INFO     if $state eq  "UP";
    $alert=LOG_CRIT     if $state eq  "CRITICAL";
    $alert=LOG_WARNING  if $state eq  "WARNING";
    $alert=LOG_INFO     if $state eq  "OK";

    openlog('nagios','','daemon');
    syslog($alert,"$host     $msg");
}

sub get_options
{
    GetOptions
        ("help|h"        => \$help,
         "hard:s"        => \$hard,
         "state:s"       => \$state,
         "host:s"        => \$host,
         "msg:s"         => \$msg
         );
    if( defined($help) )
    {
        print "--help called\n\n";
        print_usage();
    }
}
sub print_usage
{
    print "--help | -H: Print this screen\n";
    print "--hard <HOSTSTATETYPE|SERVICESTATETYPE>\n";
    print "  with a SOFT or HARD state; only alerts on the HARD states.\n";
    print "--state <HOSTSTATE|SERVICESTATE>";
    print "--host <HOSTADDRESS>\n";
    print "--msg <Message Body>: Defines the message body to render\n";
    exit 1;
}
    
por 05.12.2011 / 20:25
2

Você configurou a opção use_syslog na configuração do Nagios?

link

    
por 05.12.2011 / 18:38

Tags