Announcement

Collapse
No announcement yet.

Services passifs sous Oreon : config et graph

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

  • Services passifs sous Oreon : config et graph

    Bonjour !

    Décidément il subsiste une ambiguité dans la configuration de services passifs sur l'interface d'Oreon, et ce malgré toute la doc disponible.
    Que dois-je indiquer comme commande de check dans un service passif? On ne devrait rien devoir renseigner, puisque le démon NSCA est censé recevoir un résultat exploitable... Ca me paraitrait super redondant de devoir redonner une commande de check au serveur central...

    Et autre question, plus importante : comment grapher un résultat de service passif???

    Merci d'avance.

  • #2
    Yop,

    La commande de check dans un service passif ne sera exécutée uniquement si tu as défini un délai de fraicheur (freshness) sur ton service (option "controle de validité des données") ou dans nagios.cfg.

    Pour grapher un résultat de service passif, il faut légèrement modifier le script submit-service-check-result (déclenché par le nagios distribué à la fin de chaque test) pour que ce dernier envoie le séparateur '|' et les perfdata au serveur central qui saura interpréter le tout. Il faut également modifier la commande de notification correspondante.

    Je peux te donner ma configuration si tu veux.

    Bon courage...

    Comment


    • #3
      Est-il vraiment nécessaire d'avoir un serveur réparti pour grapher le résultat de services passifs? Parce qu'il est tout a fait possible de se passer de serveurs répartis en effectuant autant d'envois NSCA que de services depuis l'hote distant...

      Comment


      • #4
        Mais arrete de m'embrouiller !!

        L'hote distant c'est ton serveur réparti.

        Soit je capte rien, soit t'es pas clair sur ton architecture distribuée. Soit tu sais pas ce que tu veux mais tu peux pas avoir des services passifs sans au moins un serveur réparti. Ou discutons de la sémantique du serveur réparti...?

        Comment


        • #5
          Bon, reprenons.
          Mon hôte distant est le serveur Linux d'un client qui sert de passerelle a son réseau. Derriere ce serveur se trouve un serveur de fichiers Windows 2003 et des postes. Je veux monitorer le tout.
          Le serveur Linux (et donc ce petit réseau distant dans son ensemble) ayant une IP non fixe, je ne peux pas utiliser NRPE. J'utilise donc un client NSCA sur le serveur Linux, qui monitore ce meme serveur, mais aussi le reste des machines (postes et serveur Windows) en interrogeant des services NC_Net ou NSclient++ par le biais de check_nt.
          Ce que j'appelle un serveur réparti (et la doc d'Oreon aussi) est un serveur Nagios qui ne sert en gros que de relais aux checks et transmet ses infos au serveur Nagios central (sur MON réseau). Si j'avais un serveur réparti dans mon cas de figure, il serait sur le serveur Linux du client.
          Or, je n'en ai pas, et cela ne m'empeche nullement de monitorer le réseau de mon client.
          Sauf que... je ne peux pas grapher ces résultats.

          Ca y est, je peux donc répéter ma question :
          Dois-je nécessairement installer un serveur Nagios sur le serveur/passerelle Linux de réseau distant pour pouvoir grapher le résultat des checks passifs renvoyés par ce meme serveur Linux ? Y'a-t-il une alternative plus simple, sachant que j'ai une bonne cinquantaine de réseaux du meme genre à monitorer ?

          -------------
          PETIT EDIT
          -------------
          Je reviens sur ce que j'ai dit plus haut : il semblerait que mon prédécesseur ait bien installé un serveur NSCA finalement, encore que tout cela m'a l'air bien bordélique (c'est dur de débroussailler quelque chose sans qu'il ait documenté quoi que ce soit... rhalalala). J'utilise donc un script service_submit_check_result, une fois pour chaque service, et c'est CRON qui plannifie l'exécution de tout cela.
          Tout ce qui semble me manquer, c'est le moyen de dire au serveur central que je veux grapher ces résultats.
          Last edited by kharfud; 16 July 2007, 15:46.

          Comment


          • #6
            Dois-je nécessairement installer un serveur Nagios sur le serveur/passerelle Linux de réseau distant
            Comment fais-tu pour ordonnancer tes checks et déclencher send_nsca sans avoir Nagios sur ta bécane ??

            Je redonne ma réponse : pour grapher un service passif, il faut donner à NSCA le séparateur '|' ainsi que les données de performance 'perfdata' récupérées par la sortie du plugin (s'il y en a) dans le champ 'plugin_output' de ce que tu envoies à la commande send_nsca.

            Comment


            • #7
              Re-re-re et dix de der ^^
              J'utilise le meme code que le service_submit_check_result proposé dans cette page. (comme a peu près tout le monde j'imagine)
              A partir de là je ne comprends pas très bien a quoi sert ce séparateur, sinon a concaténer des perfdatas dans le $4. Selon quelle syntaxe dois-je indiquer le séparateur?

              Au passage, je n'utilise pas $4 comme quatrieme paramètre fourni à send_nsca, mais `$3`, qui me fournit bien la bonne chaine affichée ensuite dans la colonne Informations d'Oreon.

              Désolé si je vous parait un peu lourdeau :-| Mais ca rentre petit a petit, si si !

              Comment


              • #8
                Tout passe par cron, ok pourquoi pas, alors voila ma piste.

                J'appelle le script submit_service_check_result avec les arguments suivants :

                Code:
                submit_service_check_result $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATE$    '$SERVICEOUTPUT$'   '|'   '$SERVICEPERFDATA$'
                Où '$SERVICEOUTPUT$' est ce qui apparait dans le champ 'Informations'. Ici ca correspond à '$4', à toi d'adapter à ta sauce... Puis, modifie le script submit_service_check_result pour qu'il envoie les perfdata que tu lui as donné. Ma commande send_nsca est donc la suivante :

                Code:
                /bin/echo -e "$1\t$2\t$return_code\t$4\t$5\t$6\n" | /usr/local/nagios/etc/send_nsca X.X.X.X -c /u
                sr/local/nagios/etc/send_nsca.cfg
                Où $5 correspond au '|' (on pourrait le mettre direct dans la commande que de le faire passer par un argument) et $6 correspond aux perfdata, comme donné en parametre dans le script.

                NSCA interprete tout ca comme il faut, et tu verras le champ "données de performance" rempli ds l'interface d'Oreon. Apres il faut les traiter comme il faut pour grapher mais tu dois déjà etre au courant du biz.


                C'etait pour l'exemple, sachant que tu ne passes pas par Nagios, et donc pas de macros, à toi de parser la sortie du plugin pour les donner à send_nsca comme il faut tout bien.

                Si ce n'est pas clair... J'attends ton retour.

                Bonne chance

                Comment


                • #9
                  Re coucou
                  Merci pour le guide Maestro, ca m'a permis de trouver d'autres infos utiles. Il me reste un ptit tracas :
                  - moi j'utilise cron pour lancer les checks depuis le serveur réparti
                  - traditionnellement, comment ca se passe ? Tu as dit que je ne passe pas par Nagios pour parser les perfdata :confused: Il doit donc rester quelque chose sur mon serveur réparti, que je n'ai pas utilisé a cette fin...

                  Comment


                  • #10
                    Non, rien ne parse les perfdatas avant envoi à Nagios.

                    Je parlais de parser les perfdatas, parce qu'avec perfparse qui est tellement pété qu'il ne parsait pas gd chose, j'étais obligé de les traficoter pour rrd car soit les metriques étaient trop longues (18 caracteres max.) soit il y avait des caracteres illégaux (le '/' tout seul du check_disk)... Je ne sais pas ce qu'il en est avec ODS, peut être qu'il n'y a plus rien besoin d'arranger, je ne me suis pas trop penché sur la question à vrai dire. Peut etre que maintenant ODS s'occupe de tout pour rrd, surement meme.

                    Tout ca se parse dans submit_service_check_result, avant l'appel à send_nsca, en bidouillant l'argument $6 qui correspond aux perfdata à l'appel du script.

                    Comment


                    • #11
                      Si mon script peut intéresser quelqu'un, à tout hasard...

                      Code:
                      #!/bin/sh
                      
                      #Arguments:
                              #  $1 = host_name (Short name of host that the service is
                              #       associated with)
                              #  $2 = svc_description (Description of the service)
                              #  $3 = state_string (A string representing the status of
                              #       the given service - "OK", "WARNING", "CRITICAL"
                              #       or "UNKNOWN")
                              #  $4 = plugin_output (A text string that should be used
                              #       as the plugin output for the service checks)
                              #  $5 = pipe to separate performance data
                              #  $6 = perfdata
                      
                              # Convert the state string to the corresponding return code
                              return_code=-1
                      
                              case "$3" in
                                  OK)
                                              return_code=0
                                          ;;
                                      WARNING)
                                          return_code=1
                                              ;;
                                      CRITICAL)
                                          return_code=2
                                              ;;
                                      UNKNOWN)
                                          return_code=-1
                                              ;;
                              esac
                      
                      
                              # remove some bullshit metrics having illegal characters or too long size
                      
                              if [ $# -eq 6 ]; then
                                      # separating metric from data
                                      data=$(echo $6 | cut -d'=' -f 2)
                                      # removing some illegal metric chars
                                      metrictmp=$(echo $6 | cut -d'=' -f 1 | tr -d '\\' | tr ':' '_' | tr -d "'")
                                      # resizing metric
                                      metric=$(expr substr $metrictmp 1 18)
                                      # re-assembling metric and data
                                      perfdata=$metric'='$data
                              fi
                      
                      
                              # pipe the service check info into the send_nsca program, which
                              # in turn transmits the data to the nsca daemon on the central
                              # monitoring server
                      
                              /bin/echo -e "$1\t$2\t$return_code\t$4\t$5\t$perfdata\n" | /usr/local/nagios/etc/send_nsca X.X.X.X -c /usr/local/nagios/etc/send_nsca.cfg
                      Sachant qu'il est appelé avec

                      Code:
                      submit_service_check_result $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATE$    '$SERVICEOUTPUT$'   '|'   '$SERVICEPERFDATA$'

                      Bon, il est surement pas parfait je suis loin d'etre une bete en bash, mais ca suffit.

                      Comment


                      • #12
                        merci pour ton script mais ça marche pas pour mes serveurs windows en fait il prend pas le metric, pour les serveurs windows, en compte en plus le nom du metric dans centreonstorage est différent de celui du perfdata !! exemple :
                        -Memory-usage # Memory usage
                        -5-min-load # 5 min load

                        donc le script n'est pas adapter pour toutes les perfdata???
                        avez vous le meme problemes??

                        Comment

                        Working...
                        X