Soru Nagios komutu tüm argümanları iletmiyor


Postgres db'mizi nagios'tan izlemek için aşağıdaki servisi kullanıyorum:

define service{
       use                             test-service         ; Name of servi$
       host_name                       DEMOCGN002
       service_description             Postgres State
       check_command                   check_nrpe!check_pgsql!192.168.1.135!test!test!test
       notifications_enabled           1
       }

Uzak makinede komutu yapılandırdım:

command[check_pgsql]=/usr/lib/nagios/plugins/check_pgsql -H $ARG1$ -d $ARG2$ -l $ARG3$ -p $ARG4$

Syslogda, komutun yürütüldüğünü görebiliyorum, ancak iletilen tek bir argüman var:

Oct 20 13:18:43 DEMOSRV01 nrpe[1033]: Running command: /usr/lib/nagios/plugins/check_pgsql -H 192.168.1.134 -d  -l  -p 
Oct 20 13:18:43 DEMOSRV01 nrpe[1033]: Command completed with return code 3 and output: check_pgsql: Database name is not valid - -l#012Usage:#012check_pgsql [-H <host>] [-P <port>] [-c <critical time>] [-w <warning time>]#012 [-t <timeout>] [-d <database>] [-l <logname>] [-p <password>]
Oct 20 13:18:43 DEMOSRV01 nrpe[1033]: Return Code: 3, Output: check_pgsql: Database name is not valid - -l#012Usage:#012check_pgsql [-H <host>] [-P <port>] [-c <critical time>] [-w <warning time>]#012 [-t <timeout>] [-d <database>] [-l <logname>] [-p <password>]

Neden 2,3 ve 4 argümanları eksik?


5
2017-10-20 11:22


Menşei


Check-pgsql bunları alıyor mu? Onları yakalayan küçük bir betik yazmayı deneyin. Ardından, geçici komut dosyasına [check_pgsql] komutunu değiştirin. - Bart De Vos
[Check_pgsql] = echo A $ ARG1 $ B $ ARG2 $ C $ ARG3 $ D $ ARG4 $ >> /tmp/nagiostest.log komutunu değiştirdim. Günlükte "A 192.168.1.134 B C D" görüyorum. Argüman 2,3 ve 4'ün geçmediği gözüküyor. - markus


Cevaplar:


Ana bilgisayardaki argümanlarla host izlemede tanımlanan argümanları karıştırıyorsunuz. $ARGx$ makro NRPE ana bilgisayarında kullanılamaz.

Varsayılan olarak check_nrpe komut belows olarak tanımlanır:

define command{
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t 120
}

Uzak ana bilgisayarda, 'gerçek' değeri kullanmalısınız, böyle bir şey:

command[check_pgsql]=/usr/lib/nagios/plugins/check_pgsql -d test -l test -p test

ve bu komut Nagios ana bilgisayarından şu şekilde çağrılabilir:

define service{
    use                     test-service         
    host_name               DEMOCGN002
    service_description     Postgres State
    check_command           check_nrpe!check_pgsql
    notifications_enabled   1
    }

IP adresini geçmeye gerek yoktur çünkü değeri alır host_name.


10
2017-10-20 15:06





Aynı sıkıntılarım vardı ve kabul edilen cevapla saygılı bir şekilde aynı fikirde olmadım, bu yüzden başka birinin karşısına çıkması halinde çözümü yayınlayacağımı düşündüm.

Nrpe'yi kullanarak komut satırı argümanlarını izleme sunucusundan geçirirken uzaktan komut dosyası yürütebilirsiniz, aksi takdirde uzaktaki her makinede uzaktaki komutları büyük kurulumlar için uygun olmayan sabit değerler vermeniz gerekir.

İşte benimki üzerinde nasıl çalışıyor, bu 3 argümanı uzaktan iletmek için çalışıyor, ancak komutları.cfg veya eşdeğer dosyanızdaki sayıyı artırabilirsiniz:

# Check NRPE command
define command {
    command_name check_nrpe
    command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$
}

Yukarıdaki satırdaki $ ARG1 $ değerinin, komutun kendisi için ayrıldığına dikkat edin, bu nedenle gerçek ARG2 $, $ ARG3 $ ve $ ARG4 $, uzak komut dosyasına gönderilir, ancak uzak komut dosyasına ulaştıklarında listelenirler. $ ARG1 $ $ ARG2 $ ve $ ARG3 $ olarak (bu, argümanların karıştırılması hakkında ne diyordu?) ve bu nedenle uzak makinenin nrpe.cfg dosyasında tanımlanmalıdır.

Uzak makine (ler) nrpe.cfg:

command[check_pgsql]=/usr/lib/nagios/plugins/check_pgsql -d $ARG1$ -l $ARG2$ -p $ARG3$

Ve sonunda hizmeti tanımlayın:

define service{
    use                             test-service;
    host_name                       DEMOCGN002;
    service_description             Postgres State;
    check_command                   check_nrpe!check_pgsql!test!test!test;
    notifications_enabled           1;
    }

4
2018-06-12 09:53



Benim için çalışır. NRPE üzerinden komutlara birden çok argüman iletememek mantıksız görünüyor. - Adrian