Question

J'ai étudié ce problème pendant des jours mais je ne peux pas venir à une solution. J'ai un serveur Windows 2012 avec Nsclient ++ installé sur ceci. J'ai également un serveur ICINGA avec le plug-in NAGIOS NRPE installé. En outre, la NSCLIENT ++ est configurée pour accepter les commandes NRPE et «Autoriser les arguments= 1» est définie. À partir du serveur ICINGA, lorsque je donne cette entrée:

/ usr / lib / nagios / plugins / check_nrpe -h 192.168.1.22 -C alias_cpu

Cela donne ceci: OK CPU charge OK. | '5m'= 27%; 80; 90 '1m'= 26%; 80; 90 '30' 30 ''= 26%; 80; 90


Donc, tout semble totalement bien, mais de l'Icinga webinterface, je reçois cette erreur: / usr / lib / nagios / plugins / check_nrpe: l'option nécessite un argument - 'A'

Il semble que je ne puisse tout simplement pas obtenir les commandes correctes. J'ai essayé chaque commandement que j'ai trouvé sur Internet mais aucun d'entre eux ne fonctionne bien. En outre, la documentation NSClient pour la NRPE est obsolète, car ils disent que vous devriez utiliser check_nt mais que la commande est obsolète depuis plus d'un an, donc je devrais utiliser check_nrpe mais cela ne fonctionne pas d'Eiter. < / p>

donc j'ai créé un fichier .CFG dans / etc / icinga / objets et je suis actuellement en train d'utiliser ces commandes:

define host{
       use windows-servers
       host_name host.domain.com
       alias host
       address 192.168.1.22
}

define service{
        use                             generic-service
        host_name                       host.domain.com
        service_description             Drive Usage
        check_command                   check_nrpe!alias_disk
        }


define service{
        use                     generic-service
        host_name               host.domain.com
        service_description     CPU Load
        check_command           check_nrpe!alias_cpu
}

sur le serveur Windows, les paramètres de NsClient.ini sont ceux:

[/settings/NRPE/server]
allowed hosts=172.16.0.7
allow arguments=1
port=5666
allow nasty_meta chars=1 
use SSL = 1

Quelqu'un a-t-il une idée de ce qui se passe mal ici? Je suis totalement hors d'options maintenant. Suis-je de mauvaises commandes? Est-ce que quelqu'un connaît les bonnes commandes? Ou est-ce que je fais quelque chose d'autre mal? Merci!

Était-ce utile?

La solution 2

Avec l'aide du forum iCinga / Nagios, j'ai découvert que définir_command était ceci:

# this command runs a program $ARG1$ with arguments $ARG2$
define command {
        command_name    check_nrpe
        command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}

# this command runs a program $ARG1$ with no arguments
define command {
        command_name    check_nrpe_1arg
        command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

et devrait être ceci:

# this command runs a program $ARG1$ with arguments $ARG2$
define command {
        command_name    check_nrpe_1arg

        command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}

# this command runs a program $ARG1$ with no arguments
define command {
        command_name    check_nrpe
        command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Seulement oscillé deux lignes mais me coûte des jours pour le savoir.Mais heureusement, c'est résolu maintenant.

Autres conseils

Ceci est de quelques mois, mais je veux peser.

Votre solution, commutation des définitions de commande pour CHECK_NRPE et CHECK_NRPE_1ARG, n'est pas optimale.Check_Nrpe est utilisé lorsque vous souhaitez transmettre une commande externe avec ses options de ligne de commande, et check_nrpe_1arg est lorsque vous souhaitez passer uniquement la commande externe (ce que vous essayez de faire).

Pour votre cas d'utilisation, la meilleure solution consisterait à laisser les définitions de commande check_nrpe et check_nrpe_1arg as-is, et modifiez vos définitions de service pour utiliser la commande appropriée:

define service{
    use                             generic-service
    host_name                       host.domain.com
    service_description             Drive Usage
    check_command                   check_nrpe_1arg!alias_disk
    }


define service{
    use                             generic-service
    host_name                       host.domain.com
    service_description             CPU Load
    check_command                   check_nrpe_1arg!alias_cpu
}

Si vous vouliez passer des options de ligne de commande à NRPE, d'autre part, vous utiliseriez la commande check_nrpe.Comme:

define service {
     use                            generic-service
     host_name                      host.domain.com
     service_description            Check SMART status of sda
     check_command                  check_nrpe!check_smart!/dev/sda
     }

(en supposant que vous avez la commande check_smart suivante définie dans votre NRPE.cfg):

command[check_smart]=/usr/lib/nagios/plugins/check_ide_smart -d $ARG1$

sur la chose que j'ai trouvée (essais sur l'ICINGA 2) Après un débogage sérieux, c'est que la manière dont vous divisez les paramètres de la commande de contrôle dans différentes chaînes affecte la manière dont elles sont transmises au processus d'enfant.Cela peut être un problème extrêmement important, en fonction de la manière dont le processus enfant gère les paramètres de ligne de commande en interne.Voici un exemple de vie réel particulièrement épineux:

object CheckCommand "cc-cisco-interface-status" {
  import "plugin-check-command"

  command = [ PluginDir + "/check_snmp_ifname.sh",
             "-H", "$host.address$",
             "-P 2c",
             "-C", "$host.vars.snmpcommunity$",
             "-o", "IF-MIB::ifOperStatus",
             "-IF", "$service.vars.ifname$"
            ]

Ainsi, avec cette commande, le processus enfant reçoit:

$1 = -H
$2 = 1.1.1.1
$3 = -P 2c
$4 = -C
$5 = MyCommunity
$6 = -o
$7 = IF-MIB::ifOperStatus
$8 = -IF
$9 = Serial0/0/0:0

Cela nous conduisait insensé parce que, par exemple,

             "-IF", "$service.vars.ifname$"
$8 = -IF
$9 = Serial0/0/0:0

fonctionne pendant que

             "-IF $service.vars.ifname$"
$8 = -IF Serial0/0/0:0

ne le fait pas.

Mais je pense qu'une fois que vous comprenez ce qui se passe, cela devient un problème gérable (et même pratique, car il vous donne un très bon contrôle sur les chaînes citées).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top