Announcement

Collapse
No announcement yet.

check_disk_smb : fonctionne en ligne de commande mais pas en Web

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

  • check_disk_smb : fonctionne en ligne de commande mais pas en Web

    Bonjour,

    Un problème avec le plugin check_disk_smb. Elle fonctionne très bien en ligne de commande et en tant qu'utilisateur nagios :
    ./check_disk_smb -H monserveur -s monpartage -w 80 -c 90 -W MONDOMAINE -u utilisateur -p mdp
    donne le résultat suivant :
    Domaine=[MONDOMAINE] OS=[Unix] Server=[Samba ...]
    WARNING: Only 6.77 Go (6 %) free on \\monserveur\monpartage


    Je modifie donc les fichiers services.cfg et commands.cfg. Je reload le service nagios et attends sur l'interface Web (après un F5) le résultat, pour l'hôte indiqué dans services.cfg.

    Le résultat indique ceci, sur la page Service detail :
    **ePN failed to compile /usr/lib/nagios/plugins/check_disk_smb: "Can't locate utils.pm in @INC (@INC contains: nagios/plugins /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/site" at /usr/

    J'ai bien sûr un fichier utils.pm sous nagios/pugins, et l'utilisateur nagios en est le propriétaire ! De pus, J'ai d'autres plugins qui fonctionnenet très bien (check_ping, tcp, http, etc.).
    Par contre, le check_disk_smb ET check_ntp me donnent le même résultat !

    Merci de votre aide.
    nagios 2.5
    oreon 1.4 (nagios status map 1.0, nagios 3-D status map 1.0)

  • #2
    Ta commande est trés certainement mal défini ou tu n'as pas installé la totalité du package nagios-plugins.

    Apparemment le plugin cherche utils.pm dans /usr/nagios/plugins
    Intel(R) Xeon(TM) CPU 3.4GHz - MemTotal : 1034476 kB
    Centreon 2.4.1 - Nagios 3.2.1 - Nagios Plugins 1.4.15 - Manubulon Plugins tuné
    Fedora Core 5 - 2.6.20-1.2320

    Comment


    • #3
      Originally posted by David31 View Post
      Bonjour,

      Un problème avec le plugin check_disk_smb. Elle fonctionne très bien en ligne de commande et en tant qu'utilisateur nagios :
      ./check_disk_smb -H monserveur -s monpartage -w 80 -c 90 -W MONDOMAINE -u utilisateur -p mdp
      donne le résultat suivant :
      Domaine=[MONDOMAINE] OS=[Unix] Server=[Samba ...]
      WARNING: Only 6.77 Go (6 %) free on \\monserveur\monpartage
      Pour tester correctement un plugin écrit en Perl avec un Nagios compilé avec le support de l'interpréteur embarqué, je te conseille de suivre la recommandation de la documentation pour tester ton plugin : http://nagios.sourceforge.net/docs/2...eddedperl.html

      Originally posted by David31 View Post
      Je modifie donc les fichiers services.cfg et commands.cfg. Je reload le service nagios et attends sur l'interface Web (après un F5) le résultat, pour l'hôte indiqué dans services.cfg.

      Le résultat indique ceci, sur la page Service detail :
      **ePN failed to compile /usr/lib/nagios/plugins/check_disk_smb: "Can't locate utils.pm in @INC (@INC contains: nagios/plugins /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/site" at /usr/

      J'ai bien sûr un fichier utils.pm sous nagios/pugins, et l'utilisateur nagios en est le propriétaire !
      Ce chemin relatif est plutôt étrange. Peux-tu nous dire quelle est la distribution Linux utilisée, comment as-tu installé Nagios et ses plugins (paquets binaires, compilation manuelle) ?

      Originally posted by David31 View Post
      De pus, J'ai d'autres plugins qui fonctionnenet très bien (check_ping, tcp, http, etc.).
      Par contre, le check_disk_smb ET check_ntp me donnent le même résultat !
      C'est normal, ils sont tous deux écrits en Perl. La plupart des autres sont écrits en C et compilés : ils ne dépendent donc que de bibliothèques partagées externes en C.
      Raphaël 'SurcouF' Bordet
      Je ne teste pas mes plugins en root, tu ne testes pas tes plugins en root...
      Dons Paypal

      Comment


      • #4
        DonKiShoot : Ta commande est très certainement mal défini ou tu n'as pas installé la totalité du package nagios-plugins.
        Apparemment le plugin cherche utils.pm dans /usr/nagios/plugins
        J'ai bien un fichier utils.pm sous /usr/nagios/plugins, et j'ai beau vérifier, je ne vois pas où ma commande foire. Surtout qu'elle fonctionne en ligne de commande.

        surcouf : Ce chemin relatif est plutôt étrange. Peux-tu nous dire quelle est la distribution Linux utilisée, comment as-tu installé Nagios et ses plugins (paquets binaires, compilation manuelle) ?
        J'ai utilisé sur une RedHat Entreprise 4 (core 4), le RPM 2.5-1. Les plugins étaient dedans. Je n'ai rien installé de plus (il faut le faire ?)
        Le plugin check_disk_smb a la version 1.8.2.1 (nagios-plugin 1.3.1). Check_ntp a la version 1.14.2.3 (nagios-plugin 1.3.1).

        surcouf : Pour tester correctement un plugin écrit en Perl avec un Nagios compilé avec le support de l'interpréteur embarqué, je te conseille de suivre la recommandation de la documentation pour tester ton plugin : http://nagios.sourceforge.net/docs/2...eddedperl.html
        J'ai regarder la doc. mais j'ai du mal à saisir. Est-ce que cela veux dire que mon Nagios n'est pas compilé avec un interpréteur Perl ?
        nagios 2.5
        oreon 1.4 (nagios status map 1.0, nagios 3-D status map 1.0)

        Comment


        • #5
          Originally posted by David31 View Post
          J'ai bien un fichier utils.pm sous /usr/nagios/plugins, et j'ai beau vérifier, je ne vois pas où ma commande foire. Surtout qu'elle fonctionne en ligne de commande.
          C'est un emplacement peu commun qui explique sans doute pourquoi l'interpréteur Perl a tant de mal à trouver le module. Il faut se méfier des plugins qui "fonctionnent" en ligne de commande : avec l'interpréteur Perl actif, il faut ajouter quelques lignes pour pouvoir simuler cet interpréteur. Tu es certain qu'il s'agisse de "/usr/nagios/plugins" et non pas de "/usr/lib/nagios/plugins" ?

          Originally posted by David31 View Post
          J'ai utilisé sur une RedHat Entreprise 4 (core 4), le RPM 2.5-1. Les plugins étaient dedans. Je n'ai rien installé de plus (il faut le faire ?)
          Le plugin check_disk_smb a la version 1.8.2.1 (nagios-plugin 1.3.1). Check_ntp a la version 1.14.2.3 (nagios-plugin 1.3.1).

          J'ai regarder la doc. mais j'ai du mal à saisir. Est-ce que cela veux dire que mon Nagios n'est pas compilé avec un interpréteur Perl ?
          Non, le message est assez explicite : l'interpréteur embarqué est bien présent.

          Comme solution de contournement, je te propose de précéder les définitions de tes commandes de la redéfinition d'une variable d'environnement :

          Si tu as :
          $USER1$/check_disk_smb ... ou /usr/nagios/plugins/check_disk_smb ...
          Tu remplaces par :
          PERL5LIB=$PERL5LIB:/usr/nagios/plugins $USER1$/check_disk_smb
          ou
          PERL5LIB=$PERL5LIB:/usr/nagios/plugins /usr/nagios/plugins/check_disk_smb

          Je conseille de plutôt redéfinir la macro $USER1$ directement car cette variable n'affecte que les scripts Perl et, ainsi, tous les plugins en Perl sauraient automatiquement où trouver utils.pm si besoin.
          Raphaël 'SurcouF' Bordet
          Je ne teste pas mes plugins en root, tu ne testes pas tes plugins en root...
          Dons Paypal

          Comment


          • #6
            Pour Surcouf :

            C'est un emplacement peu commun qui explique sans doute pourquoi l'interpréteur Perl a tant de mal à trouver le module. Il faut se méfier des plugins qui "fonctionnent" en ligne de commande : avec l'interpréteur Perl actif, il faut ajouter quelques lignes pour pouvoir simuler cet interpréteur. Tu es certain qu'il s'agisse de "/usr/nagios/plugins" et non pas de "/usr/lib/nagios/plugins" ?
            Tu as raison, c'est une coquille, il s'agit effectivement de /usr/lib/nagios/plugins. Il y a toutes les commandes check_... et le fichier utils.pm

            Comme solution de contournement, je te propose de précéder les définitions de tes commandes de la redéfinition d'une variable d'environnement :

            Si tu as :
            $USER1$/check_disk_smb ... ou /usr/nagios/plugins/check_disk_smb ...
            Tu remplaces par :
            PERL5LIB=$PERL5LIB:/usr/nagios/plugins $USER1$/check_disk_smb
            ou
            PERL5LIB=$PERL5LIB:/usr/nagios/plugins /usr/nagios/plugins/check_disk_smb

            Je conseille de plutôt redéfinir la macro $USER1$ directement car cette variable n'affecte que les scripts Perl et, ainsi, tous les plugins en Perl sauraient automatiquement où trouver utils.pm si besoin.
            Cette redéfinition de la variable $USER1$ est à faire dans le fichier commands.conf, non ? Sous /etc/nagios, donc.
            Allez je teste ...

            Pour info, la variable $USER1$ est bien défini avec /usr/lib/nagios/plugins, dans le fichier ressources.cfg
            Last edited by David31; 8 February 2007, 08:11.
            nagios 2.5
            oreon 1.4 (nagios status map 1.0, nagios 3-D status map 1.0)

            Comment


            • #7
              Pour Surcouf :

              Comme solution de contournement, je te propose de précéder les définitions de tes commandes de la redéfinition d'une variable d'environnement :

              Si tu as :
              $USER1$/check_disk_smb ... ou /usr/nagios/plugins/check_disk_smb ...
              Tu remplaces par :
              PERL5LIB=$PERL5LIB:/usr/nagios/plugins $USER1$/check_disk_smb
              ou
              PERL5LIB=$PERL5LIB:/usr/nagios/plugins /usr/nagios/plugins/check_disk_smb

              Je conseille de plutôt redéfinir la macro $USER1$ directement car cette variable n'affecte que les scripts Perl et, ainsi, tous les plugins en Perl sauraient automatiquement où trouver utils.pm si besoin.
              J'ai donc modifier le fichier commands.cfg pour remplacer mon $USER1$/check_disk_smb ... en PERL5LIB=$PERL5LIB:/usr/nagios/plugins $USER1$/check_disk_smb ...

              Le résultat (pour check_disk_smb et check_ntp, écrit tous les deux en Perl), est un status CRITICAL, avec un code de retour 127 is out of bounds - plugins may be missing. Pour ces 2 plugins Perl donc.

              C'est mieux car je n'ai plus le status UNKNOW, on avance ...
              nagios 2.5
              oreon 1.4 (nagios status map 1.0, nagios 3-D status map 1.0)

              Comment


              • #8
                Originally posted by David31 View Post
                Pour Surcouf :



                J'ai donc modifier le fichier commands.cfg pour remplacer mon $USER1$/check_disk_smb ... en PERL5LIB=$PERL5LIB:/usr/nagios/plugins $USER1$/check_disk_smb ...

                Le résultat (pour check_disk_smb et check_ntp, écrit tous les deux en Perl), est un status CRITICAL, avec un code de retour 127 is out of bounds - plugins may be missing. Pour ces 2 plugins Perl donc.

                C'est mieux car je n'ai plus le status UNKNOW, on avance ...
                Pas vraiment non.
                Il faudrait préciser "/usr/lib/nagios/plugins" et non pas "/usr/lib/nagios/".
                Raphaël 'SurcouF' Bordet
                Je ne teste pas mes plugins en root, tu ne testes pas tes plugins en root...
                Dons Paypal

                Comment


                • #9
                  David : J'ai donc modifier le fichier commands.cfg pour remplacer mon $USER1$/check_disk_smb ... en PERL5LIB=$PERL5LIB:/usr/nagios/plugins $USER1$/check_disk_smb ...
                  Le résultat (pour check_disk_smb et check_ntp, écrit tous les deux en Perl), est un status CRITICAL, avec un code de retour 127 is out of bounds - plugins may be missing. Pour ces 2 plugins Perl donc.
                  C'est mieux car je n'ai plus le status UNKNOW, on avance ...

                  Surcouf :Pas vraiment non.
                  Il faudrait préciser "/usr/lib/nagios/plugins" et non pas "/usr/lib/nagios/".
                  Effectivement, c'est une coquille, j'ai donc reprécisé /usr/lib/nagios/plugins dans le fichier commands.cfg. Pour plus de clareté, voici le contenu du fichier commands.cfg, pour les plugins check_disk_smb et check_ntp :

                  Code:
                  # 'check_ntp' command definition
                  define command{
                          command_name    check_ntp
                          command_line    PERL5LIB=$PERL5LIB:/usr/lib/nagios/plugins /usr/lib/nagios/plugins/check_ntp -H $ARG1$ -v -w $ARG2$ -c $ARG3$
                          }
                  
                  # 'check_disk_smb' command definition
                  define command{
                          command_name    check_disk_smb
                          command_line    PERL5LIB=$PERL5LIB:/usr/lib/nagios/plugins /usr/lib/nagios/plugins/check_disk_smb -H $ARG1$ -s $ARG2$ -u $ARG3$ -p $ARG4$ -w $ARG5$ -c $ARG6$ -W $ARG7$
                          }
                  Le résultat est le suivant : Les 2 plugins m'annoncent des erreurs d'host, alors qu'ils sont bien configurés. Je test la commande en ligne de commande, avec les mêmes parâmètres, et elles me donnent alors un bon résultat toutes les deux. Mais sur le navigateur, j'obtient :
                  Pour check_disk_smb, l'erreur est : Invalid host: $
                  Pour check_ntp, l'erreur est : No target host specified

                  Merci pour ton aide, surcouf, je pense que l'on est sur la bonne voie
                  Je te joint les fichiers services.cfg et commands.cfg
                  Attached Files
                  nagios 2.5
                  oreon 1.4 (nagios status map 1.0, nagios 3-D status map 1.0)

                  Comment


                  • #10
                    Originally posted by David31 View Post
                    Effectivement, c'est une coquille, j'ai donc reprécisé /usr/lib/nagios/plugins dans le fichier commands.cfg. Pour plus de clareté, voici le contenu du fichier commands.cfg, pour les plugins check_disk_smb et check_ntp :

                    Code:
                    # 'check_ntp' command definition
                    define command{
                            command_name    check_ntp
                            command_line    PERL5LIB=$PERL5LIB:/usr/lib/nagios/plugins /usr/lib/nagios/plugins/check_ntp -H $ARG1$ -v -w $ARG2$ -c $ARG3$
                            }
                    
                    # 'check_disk_smb' command definition
                    define command{
                            command_name    check_disk_smb
                            command_line    PERL5LIB=$PERL5LIB:/usr/lib/nagios/plugins /usr/lib/nagios/plugins/check_disk_smb -H $ARG1$ -s $ARG2$ -u $ARG3$ -p $ARG4$ -w $ARG5$ -c $ARG6$ -W $ARG7$
                            }
                    Il y a un détail qui me choque dans tes définitions de commandes, c'est le fait que tu n'exploites pas du tout la macro $HOSTADDRESS$. C'est dommage car ça éviterait de spécifier l'adresse IP de l'hôte comme paramètre de la commande. La valeur de la directive « host_address » de l'hôte associé serait alors utilisée.

                    Originally posted by David31 View Post
                    Le résultat est le suivant : Les 2 plugins m'annoncent des erreurs d'host, alors qu'ils sont bien configurés. Je test la commande en ligne de commande, avec les mêmes parâmètres, et elles me donnent alors un bon résultat toutes les deux. Mais sur le navigateur, j'obtient :
                    Pour check_disk_smb, l'erreur est : Invalid host: $
                    Pour check_ntp, l'erreur est : No target host specified

                    Merci pour ton aide, surcouf, je pense que l'on est sur la bonne voie
                    Je te joint les fichiers services.cfg et commands.cfg
                    Peux-tu me dire quelle est la distribution utilisée ?
                    Si c'est une Debian, quelle est la version du paquet nagios-text ?
                    Raphaël 'SurcouF' Bordet
                    Je ne teste pas mes plugins en root, tu ne testes pas tes plugins en root...
                    Dons Paypal

                    Comment


                    • #11
                      Merci pour ta réponse.

                      Peux-tu me dire quelle est la distribution utilisée ?
                      Si c'est une Debian, quelle est la version du paquet nagios-text ?
                      J'utilise la distribution RedHat Entreprise 4 (core 4).

                      Il y a un détail qui me choque dans tes définitions de commandes, c'est le fait que tu n'exploites pas du tout la macro $HOSTADDRESS$. C'est dommage car ça éviterait de spécifier l'adresse IP de l'hôte comme paramètre de la commande. La valeur de la directive « host_address » de l'hôte associé serait alors utilisée.
                      Effectivement, mais le fait de ne pas utiliser la variable $HOSTADRESSE$ me permet justement de spécifier un hôte différent de celui où je déclare la commande dans services.cfg

                      Je vais essayer avec pour voir ...

                      Non, rien, c'est le même résultat.
                      J'ai simplement remplacer dans comands.cfg check_ntp -H $ARG1$ ... par check_ntp -H $HOSTADRESS$ ...
                      Et dans services.cfg : check_command check_ntp!10.212.113.67!60!120 par check_command check_ntp!60!120
                      Last edited by David31; 20 February 2007, 10:23.
                      nagios 2.5
                      oreon 1.4 (nagios status map 1.0, nagios 3-D status map 1.0)

                      Comment


                      • #12
                        Originally posted by David31 View Post
                        Merci pour ta réponse.

                        J'utilise la distribution RedHat Entreprise 4 (core 4).
                        Question bête : est-ce que le fichier commands.cfg est bien déclaré avec nagios.cfg ?

                        Originally posted by David31 View Post
                        Effectivement, mais le fait de ne pas utiliser la variable $HOSTADRESSE$ me permet justement de spécifier un hôte différent de celui où je déclare la commande dans services.cfg
                        Je ne comprends pas l'intérêt dans ce cas...
                        Normalement on définit des objets « host » auxquels sont associés des « services ».
                        La macro « $HOSTADDRESS », entre autres, permet d'hériter des paramètres de l'hôte associé facilement.
                        Raphaël 'SurcouF' Bordet
                        Je ne teste pas mes plugins en root, tu ne testes pas tes plugins en root...
                        Dons Paypal

                        Comment


                        • #13
                          Question bête : est-ce que le fichier commands.cfg est bien déclaré avec nagios.cfg ?
                          C'est une bonne question, que je me suis empressé de vérifier.
                          Mais oui, le fichier commands.cfg est bien déclaré dans nagios.cfg, sous la section OBJET CONFIGURATION FILE
                          D'ailleurs, la commande #nagios -v nagios.cfg ne déclenche pas d'erreur (ni de warning)

                          A tout hasard, je te joint mon fichier nagios.cfg
                          Je ne comprends pas l'intérêt dans ce cas...
                          Normalement on définit des objets « host » auxquels sont associés des « services ».
                          La macro « $HOSTADDRESS », entre autres, permet d'hériter des paramètres de l'hôte associé facilement.
                          C'est strictement une facilité graphique sur le site Nagios.
                          Par exemple, pour vérifier que mon serveur NTP "A" fonctionne, j'utilise le plugin check_ntp vers la strate plus haute (appelé serveur "B").
                          J'ai donc l'information du bon fonctionnement du serveur qui est au-dessus, mais dans la partie de mon serveur à moi (le "A").
                          Dans ce cas précis, cela ne m'intéresse pas de déclarer un hôte supplémentaire (serveur "B"), alors que l'information est "local" à mon serveur NTP.

                          C'est peut-être un choix qui se discute, mais c'est mon choix
                          Attached Files
                          nagios 2.5
                          oreon 1.4 (nagios status map 1.0, nagios 3-D status map 1.0)

                          Comment


                          • #14
                            Originally posted by David31 View Post
                            C'est une bonne question, que je me suis empressé de vérifier.
                            Mais oui, le fichier commands.cfg est bien déclaré dans nagios.cfg, sous la section OBJET CONFIGURATION FILE
                            D'ailleurs, la commande #nagios -v nagios.cfg ne déclenche pas d'erreur (ni de warning)

                            A tout hasard, je te joint mon fichier nagios.cfg
                            Le fichier est correct.
                            Essaie donc de définir une macro utilisateur, par exemple $USER2$, avec pour valeur la définition de la variable d'envionnement plus le chemin :
                            Code:
                            $USER2$=PERL5LIB=$PERL5LIB:/usr/lib/nagios/plugins /usr/lib/nagios/plugins
                            Ensuite tu insères $USER2$ avant toutes tes commandes en Perl.
                            Last edited by surcouf; 22 August 2008, 16:41.
                            Raphaël 'SurcouF' Bordet
                            Je ne teste pas mes plugins en root, tu ne testes pas tes plugins en root...
                            Dons Paypal

                            Comment


                            • #15
                              Essaie donc de définir une macro utilisateur, par exemple $USER2$, avec pour valeur la définition de la variable d'envionnement plus le chemin :
                              Code:
                              $USER2$=PERL5LIB=$PERL5LIB:/usr/lib/nagios/plugins /usr/lib/nagios/plugins
                              Ensuite tu insères $USER2$ avant toutes tes commandes en Perl.
                              J'ai donc déclaré une variable $USER3$ dans resource.cfg :
                              Code:
                              $USER1$=/usr/lib/nagios/plugins
                              
                              # Sets $USER2$ to be the path to event handlers
                              #$USER2$=/usr/lib/nagios/plugins/eventhandlers
                              
                              # Store some usernames and passwords (hidden from the CGIs)
                              $USER3$=PERL5LIB=$PERL5LIB:/usr/lib/nagios/plugins /usr/lib/nagios/plugins
                              #$USER4$=somepassword
                              J'ai également modifié le fichier commands.cfg afin qu'il tienne compte de cette nouvelle variable $USER3$ :
                              Code:
                              # 'check_ntp' command definition
                              define command{
                                      command_name    check_ntp
                                      command_line    $USER3$ $USER1$/check_ntp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ 
                                      }
                              Pour être sûr de l'écriture de ma commande, j'ai vérifié le fichier services.cfg :
                              Code:
                              define service {
                                      use                             generic-service
                                      host_name                       NTP-Athos
                                      service_description             Service NTP
                                      is_volatile                     0
                                      check_period                    24x7
                                      max_check_attempts              3
                                      normal_check_interval           5
                                      retry_check_interval            1
                                      contact_groups                  localhost-admins
                                      notification_interval           120
                                      notification_period             24x7
                                      notification_options            w,u,c,r
                                      check_command                   check_ntp!60!120
                              }
                              Je ne suis pas très sûr concernant la déclaration de $USER3$ dans commands.cfg.
                              Est-ce bien comme cela qu'il faut faire ?

                              Code:
                              command_line    $USER3$ $USER1$/check_ntp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
                              RESULTAT :
                              J'ai une erreur CRITICAL : (Return code of 126 is out of bounds - plugin may be missing)
                              nagios 2.5
                              oreon 1.4 (nagios status map 1.0, nagios 3-D status map 1.0)

                              Comment

                              Working...
                              X