Announcement

Collapse
No announcement yet.

"Executed Check Command Line" OK mais plugin renvoi No output returned from plugin

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • iisaurralde13
    replied

    Hello I am new with Nagios and Centreon environments.

    I'm having a problem similar to yours, wanting to execute a command of my own on a service assigned to a Host, it goes gray and I get the error "No output returned from plugin" But if I consult from an external console with "watch -n 5 snmpget" I get the correct answer.

    I wanted to open a new topic in the forum but I can not find the option. Could you help me please?


    Goodbye, sorry for the inconvenience.

    Leave a comment:


  • LaBanane
    replied
    he ben on peut dire qu'il est actif se forum .....
    Bon j'ai résolue mon problème, je suis passé du perl au shell et ... hop ça fonctionne !

    Voici la même mais en shell:
    Code:
    #! /bin/sh
    ##upsBasicStateOutputState (ro) .1.3.6.1.4.1.318.1.1.1.11.1.1
    #Retour:    .1.3.6.1.4.1.318.1.1.1.11.1.1.0 = STRING: "0001010000000000001000000000000000000000000000000000000000000000"
    #     Flag 1: Abnormal Condition Present
    #     Flag 2: On Battery
    #
    ##upsAdvBatteryRunTimeRemaining (ro) .1.3.6.1.4.1.318.1.1.1.2.2.3
    #Retour:    .1.3.6.1.4.1.318.1.1.1.2.2.3.0 = Timeticks: (262500) 0:43:45.00
    #Valeur = temps restant sur batterie
    #
    ##upsBasicBatteryTimeOnBattery (ro) .1.3.6.1.4.1.318.1.1.1.2.1.2
    #Retour:    inconnue, s'affiche uniquement quand l'onduleur est sur batterie ?
    #
    #upsAdvBatteryCapacity (ro) .1.3.6.1.4.1.318.1.1.1.2.2.1
    #Retour:    .1.3.6.1.4.1.318.1.1.1.2.2.1.0 = Gauge32: 100
    
    STATE_OK=0
    STATE_WARNING=1
    STATE_CRITICAL=2
    STATE_UNKNOWN=3
    
    num_args=$#
    if [ $num_args -ne 2 ]; then
        echo "Usage: ./onduleur.pl \@IP Community"
        exit
    fi
    
    COM=$2
    IP=$1
    
    # On test dabord si la commande fonctionne et que l'hote distant répond
    TestTimeout=$(snmpwalk $IP -v 1 -c $COM 1.3.6.1.4.1.318.1.1.1.11.1.1 2>&1 | grep "Timeout")
    if [ $? -eq 0 ]; then
        echo "Timeout:: host unreachable ? "
        exit $STATE_UNKNOWN
    fi
    
    ################################# Recup des flags #################################
    # Ensuite il faut voir si un état anormale est présent sur l'onduleur. Pour cela on récupère les flags !
    OnduleurFlag=$(snmpwalk $IP -v 1 -c $COM 1.3.6.1.4.1.318.1.1.1.11.1.1)
    # On éclate le resultat pour récupérer uniquement les flags (suite de 0 et 1)
    res="$(echo $OnduleurFlag | cut -d\" -f 2)"
    # On peut fixer des valeurs pour tester
    #$res = "0001010000000000001000000000000000000000000000000000000000000000"
    
    # Ensuite on découpe nos flags 1 par 1
    # Flag 1: Abnormal Condition Present
    Flag1=${res:0:1}
    # Flag 2: On Battery
    Flag2=${res:1:1}
    # Replace Battery
    Flag5=${res:4:1}
    ###################################################################################
    
    # On test une condition anormale avec le flag 1
    if [ "$Flag1" = "0" ]; then
        #L'onduleur est OK
        # On affiche le % de charge de l'onduleur
        OnduleurBatCap=$(snmpwalk $IP -v 1 -c $COM 1.3.6.1.4.1.318.1.1.1.2.2.1)
        res2=$(echo $OnduleurBatCap | cut -d: -f 4)
        echo "Tout est OK. Batterie onduleur $res2 %"
        exit $STATE_OK
    else
    # L'onduleur n'est pas OK /!\
        #On test si l'onduleur est sur batterie avec le flag 2
        if [ "$Flag2" = "0" ]; then
        # L'onduleur n'est pas sur batterie, mais quelque chose ne vas pas.
            if [ "$Flag5" = "0" ]; then
                # La batterie est bonne
                echo "L'onduleur repport un état anormale mais pas de coupure électrique voir pour plus d information http://$IP "
                exit $STATE_WARNING
            else
                echo "L'onduleur indique qu'il faut changer la batterie."
                exit $STATE_WARNING                
            fi
        else
            # L'onduleur est sur batterie, une coupure de courant est en cours ou un autre problème d'alimentation electrique !
            # On effectue d'autre snmpwalk pour avoir le temps restant sur batterie!
            OnduleurRunTimeRemaining=$(snmpwalk $IP -v 1 -c $COM 1.3.6.1.4.1.318.1.1.1.2.2.3)
            echo $OnduleurRunTimeRemaining | cut -d")" -f 2
            exit $STATE_CRITICAL
        fi
    fi

    Leave a comment:


  • LaBanane
    replied
    Bon j'ai pas mal cherché et j'ai vérifié d'autre point.

    Mon plugin est en centreon:centreon (owner:group). avec des droits en 775.
    Quand je test ma commande: sudo -u centreon-engine /usr/lib/nagios/plugins/check_onduleur.pl X.X.X.X comSNMP
    Le retour est OK: Tout est OK. Batterie onduleur en pourcentage 100
    Le echo $? retourne 0 ou 1 ou 2 ou 3 en fonction de mon exit.

    Mais j'ai tjs un retour: (No output returned from plugin) et le service reste tjs en vert quoi qu'il arrive.

    Donc je ne comprends pas. J'avais déjà fait des scripts simple sur Nagios je n'avais pas eu ce problème.

    Voila donc quelqu'un avec une idée passe par la ...

    Cordialement,

    Leave a comment:


  • "Executed Check Command Line" OK mais plugin renvoi No output returned from plugin

    Bonjour,

    Je viens de développer un petit plugin pour monitorer quelques valeurs de base pour des onduleurs, mais visiblement quelque chose cloche.

    - quand je l’exécute en ligne de commande OK (Avec le user Nagios ou centreon)
    Retour: Tout est OK ! Batterie onduleur en % 97

    - quand je l'exécute avec "Argument Example" dans la création/modification de commande OK
    {"data-align":"none","data-size":"full","title":"1536152263-test-commande-centreon.jpg","data-attachmentid":153457}

    - quand je regarde la "Executed Check Command Line" dans les services détails de mon host monitoré j'ai la commande qui s'affiche bien.
    /usr/lib/nagios/plugins/check_onduleur.pl X.X.X.X com_snmp

    Mais sur mon monitoring j'ai un (No output returned from plugin), et je ne comprends pas pourquoi.

    Voici mon plugin en question:

    Code:
    #! /usr/bin/perl -W
    
    ##upsBasicStateOutputState (ro) .1.3.6.1.4.1.318.1.1.1.11.1.1
    #Retour:    .1.3.6.1.4.1.318.1.1.1.11.1.1.0 = STRING: "0001010000000000001000000000000000000000000000000000000000000000"
    #     Flag 1: Abnormal Condition Present
    #     Flag 2: On Battery
    #
    ##upsAdvBatteryRunTimeRemaining (ro) .1.3.6.1.4.1.318.1.1.1.2.2.3
    #Retour:    .1.3.6.1.4.1.318.1.1.1.2.2.3.0 = Timeticks: (262500) 0:43:45.00
    #Valeur = temps restant sur batterie
    #
    ##upsBasicBatteryTimeOnBattery (ro) .1.3.6.1.4.1.318.1.1.1.2.1.2
    #Retour:    inconnue, s'affiche uniquement quand l'onduleur est sur batterie ?
    #
    #upsAdvBatteryCapacity (ro) .1.3.6.1.4.1.318.1.1.1.2.2.1
    #Retour:    .1.3.6.1.4.1.318.1.1.1.2.2.1.0 = Gauge32: 100
    
    use warnings;
    
    my $num_args= $#ARGV + 1;
    if($num_args != 2){
        print "\nUsage: ./onduleur.pl \@IP Community \n";
        exit;
    }
    
    my $COM=$ARGV[1];
    my $IP=$ARGV[0];
    
    #$1=SNMP Community / [email protected] host
        # On test dabord si la commande fonctionne et que l'hote distant répond
        my $OnduleurStatus = 'snmpwalk '.$IP.' -v 1 -c '.$COM.' 1.3.6.1.4.1.318.1.1.1.11.1.1 2>&1 | grep "Timeout"';
        system "$OnduleurStatus";
        if($? == 0) {
            print "Timeout:: host unreachable ? \n";
            exit 3;
        }
    
        ################################# Recup des flags #################################
        # Ensuite il faut voir si un état anormale est présent sur l'onduleur. Pour cela on récupère les flags !
        my $OnduleurFlag = 'snmpwalk '.$IP.' -v 1 -c '.$COM.' 1.3.6.1.4.1.318.1.1.1.11.1.1';
        # On récupère le resultat du snmpwalk
        my $resultat = qx($OnduleurFlag);
        # On éclate le resultat pour récupérer uniquement les flags (suite de 0 et 1)
        my @res_split = split(/"/, $resultat);
        # le résultat du split est sensé ressembler à ça:
        #$res_split[0] < .1.3.6.1.4.1.318.1.1.1.11.1.1.0 = STRING: > puis $res_split[1] < 0001010000000000001000000000000000000000000000000000000000000000 > puis $res_split[2] < >
        my $res = $res_split[1];
        # On peut fixer des valeurs pour tester
        #my $res = "0001010000000000001000000000000000000000000000000000000000000000";
        # Ensuite on découpe nos flags 1 par 1
        my @FlagsTab = split(//, $res);
        # Flag 1: Abnormal Condition Present
        my $Flag1 = $FlagsTab[0];
        # Flag 2: On Battery
        my $Flag2 = $FlagsTab[1];
        # Replace Battery
        my $Flag5 = $FlagsTab[4];
        ###################################################################################
    
        # On test une condition anormale avec le flag 1
        if($Flag1 == 0) {
            #L'onduleur est OK
            # On affiche le % de charge de l'onduleur
            my $OnduleurBatCap = 'snmpwalk '.$IP.' -v 1 -c '.$COM.' 1.3.6.1.4.1.318.1.1.1.2.2.1';
            my $resultat2 = qx($OnduleurBatCap);
            my @res_split2 = split(/:/, $resultat2);
            my $res2 = $res_split2[3];
            print "Tout est OK ! Batterie onduleur en % $res2";
            exit 0;
        } else {
        # L'onduleur n'est pas OK /!\
            #On test si l'onduleur est sur batterie avec le flag 2
            if($Flag2 == 0){
            # L'onduleur n'est pas sur batterie, mais quelque chose ne vas pas.
                if($Flag5 == 0){
                    # La batterie est bonne
                    print "L'onduleur repport un état anormale mais pas de coupure électrique voir pour plus d information https:// $IP \n";
                    exit 1;
                } else {
                    print "L'onduleur indique qu'il faut changer la batterie. \n";
                    exit 1;                
                }
            } else {
                # L'onduleur est sur batterie, une coupure de courant est en cours ou un autre problème d'alimentation electrique !
                # On effectue d'autre snmpwalk pour avoir le temps restant sur batterie!
                my $OnduleurRunTimeRemaining = 'snmpwalk '.$IP.' -v 1 -c '.$COM.' 1.3.6.1.4.1.318.1.1.1.2.2.3';
                system "$OnduleurRunTimeRemaining";
                exit 2;
            }
        }
    
    __END__

    Si quelqu'un à une idée je suis preneur.
    Last edited by LaBanane; 5th September 2018, 14:59.
Working...
X