Mam ten problem z NRPE, wszystkie rzeczy, które znalazłem do tej pory w sieci, wydają się wskazywać na rzeczy, które już próbowałem.
# /usr/local/nagios/plugins/check_nrpe -H nrpeclient
daje
NRPE v2.12
zgodnie z oczekiwaniami.
Ręczne uruchomienie polecenia (zgodnie z definicją w nrpe.cfg na „nrpeclient” daje oczekiwaną odpowiedź
nrpe.cfg:
command[check_openmanage]=/usr/lib/nagios/plugins/additional/check_openmanage -s -e -b ctrl_driver=0 bat_charge
"Expected response"
Ale jeśli spróbuję uruchomić polecenie z serwera Nagios, otrzymuję:
# /usr/local/nagios/plugins/check_nrpe -H comxps -c check_openmanage
NRPE: Unable to read output
Czy ktoś może pomyśleć o innym miejscu, w którym mógłbym się z tym pomylić? Zrobiłem to samo na wielu innych serwerach bez problemu. Jedyną różnicą, o której mogę tutaj myśleć, jest to, że to pudełko jest oparte na RHEL 5, podczas gdy inne są oparte na RHEL 4.
Te dwa bity powyżej, które przetestowałem, wydają się sugerować większość ludzi, gdy mają ten problem.
Powinienem wspomnieć, że po ponownym uruchomieniu pojawia się dziwny błąd w dziennikach nrpe
:
nrpe[14534]: Unable to open config file '/usr/local/nagios/etc/nrpe.cfg' for reading
nrpe[14534]: Continuing with errors...
nrpe[14535]: Starting up daemon
nrpe[14535]: Warning: Daemon is configured to accept command arguments from clients!
nrpe[14535]: Listening for connections on port 5666
nrpe[14535]: Allowing connections from: bodbck,combck,nam-bck
Mimo to po prostu odczytuje ten /usr/local/nagios/etc/nrpe.cfg
plik, aby uzyskać więcej informacji na ten temat ...
Odpowiedzi:
Masz problem z prawami.
Zmień polecenie na:
(dodaj sudo)
Następnie dodaj użytkownika sudios do sudoers:
Lub możesz po prostu chmod plik ... To też działa.
Jeśli używasz CentOS, Red Hat, Scientific lub Fedora, upewnij się, że wyłączono
Defaults requiretty
w pliku sudoers.źródło
Krótka odpowiedź: jeśli używasz wtyczki Bash, upewnij się, że masz shebang określający, którego tłumacza należy użyć:
#!/bin/bash
Ten sam problem dotyczy wtyczki Nagios, którą sam napisałem. Skrypt działał zgodnie z oczekiwaniami, gdy został uruchomiony lokalnie, nawet podczas uruchamiania jako użytkownik
nagios
przy użyciu następującej instrukcji:Jednak zdalne uruchomienie przy użyciu NRPE z serwera Nagios3 zakończyło się niepowodzeniem:
W końcu rozwiązałem ten przypadek, dodając shebang do mojego skryptu, ponieważ wydawało się, że uruchomienie skryptu przez NRPE nie używało tego samego interpretera, jak podczas uruchamiania
sudo sudo -s -u nagios
.źródło
#!/bin/bash -el
eval "$(rbenv init -)"
/usr/lib/nagios/plugins/check_something $@
W moim przypadku problem był po prostu - nagios użytkownika nie był w stanie wykonać skryptu. Po chmod zaczął działać. Sudo nie jest konieczne. To nawet złe :)
źródło
check_nrpe otrzymywał komunikat „NRPE: Nie można odczytać danych wyjściowych” pomimo sprawdzania działającego lokalnie, ponieważ wtyczka, której używałem, nie działała dobrze z SELinux. Wyłącz i upewnij się, aby usunąć konteksty pliku:
źródło
Sprawdź ścieżki, uprawnienia, selinux, iptables.
Mój problem dotyczył patpowania w kliencie: nrpe.cfg, sprawdź dokładnie ścieżkę polecenia do nazwy wtyczki check_ *. Mogą być mylące (lib / local) (libexec / plugins) jako nazwa ścieżki. Przez pomyłkę szarpnąłem i umieściłem ścieżki z komentowanego wstępnie spakowanego pliku nrpe cfg, aby wykonać polecenia. Make install lub yum plugin install umieszcza je w katalogu difft.
commaneted: / usr / local / nagios / libexec / check_disk
przeciw
realpath: / usr / lib / nagios / plugins / check_disk
Z serwera mogłem potwierdzić, że nie jest to problem z zaporą, mogłem telnet do portu 5666, mogłem uruchomić koc check_nrpe i uzyskać status jako wartość zwracaną. Można uruchomić polecenia lokalnie, ale nrpe miał niewłaściwą ścieżkę na kliencie w nrpe.cfg.
źródło
W moim przypadku tylko jedna wtyczka uległa awarii, a kilka innych działało dobrze. Okazało się, że jest to problem LOCALE.
Wtyczka była
check_mem.sh
i wykonała grep dlaMem
wyjściafree
.Speicher
Zamiast tego zwrócono LOCALE wMem
całym systemie (niemiecki) , więc wszystkie otrzymane wartości były pustymi ciągami.źródło
To jest problem z uprawnieniami, po prostu daj prawemu wykonanie skryptu i będzie dobrze:
tutaj przykład: Przed / Zdalny host :
Serwer NRPE :
Po: zdalny host :
Problem rozwiązany.
źródło
W moim przypadku monitorowany plik dziennika był własnością root: adm, więc dodanie użytkownika nagios do grupy adm sprawiło, że polecenie check_log zakończyło się powodzeniem, ale tylko wtedy, gdy zostało wykonane bezpośrednio na monitorowanych hostach. Nadal nie powiodło się, używając check_nrpe na serwerze Nagios, dopóki nie zrestartowałem usługi nagios-nrpe-server na monitorowanych hostach, np.
Więc najwyraźniej ponowne uruchomienie usługi było konieczne, aby zmiana uprawnień zaczęła obowiązywać dla NRPE, ale zajęło mi to trochę czasu, aby to zrozumieć.
źródło
W przypadku niestandardowych wtyczek NRPE pamiętaj, aby wydrukować część danych wyjściowych wraz z wartością wyjścia. Jeśli nie ma danych wyjściowych ze skryptu, NRPE będzie narzekać, mówiąc „NRPE nie może odczytać danych wyjściowych” . Możesz włączyć debugowanie w nrpe.cfg i zaobserwować ten błąd.
źródło
W moim przypadku problemy były związane z selinux (uruchamianie RHEL 6.5, selinux jest ustawiony na wymuszanie).
Zainstalowanie nagios-plugins- * przez yum spowoduje utworzenie plików wtyczek w / usr / lib64 / nagios / plugins. Jeśli sprawdzisz fcontext w tych plikach wtyczek (ls -lZ), zobaczysz, że dla plików ustawiono typ kontekstu na „nagios_system_plugin_exec_t”, który jest typem kontekstu, którego oczekuje check_nrpe.
W moim przypadku utworzyłem niestandardowy skrypt „check_mem.sh” za pomocą „vi”. Plik wynikowy miał typ kontekstu ustawiony na „lib_t”. Powodowało to, że nrpe wypisał „NRPE: Nie można odczytać danych wyjściowych”.
Zmiana kontekstu pliku na „nagios_system_plugin_exec_t” rozwiązała problem:
chcon -t nagios_system_plugin_exec_t /usr/lib64/nagios/plugins/check_mem.sh
Zwykłe rozwiązywanie problemów selinux również wskazałoby mi ten problem (sprawdzanie /var/log/audit/audit.log), ale oczywiście była to ostatnia rzecz, o której myślałem
Edycja: chcon tylko chwilowo zmienia kontekst. Aby go zmienić, należy go używać
semanage fcontext -a -t nagios_system_plugin_exec_t /usr/lib64/nagios/plugins/check_mem.sh restorecon -vF /usr/lib64/nagios/plugins/check_mem.sh
źródło
Możliwe, że nie zainstalowałeś wtyczek Nagios, NRPE nie może ich znaleźć ani uzyskać do nich dostępu.
Nigdy nie musiałem dodawać moich poleceń do Sudoers. Upewnij się, że polecenia są własnością użytkownika Nagios i są czytelne.
źródło
Myślę, że musisz dodać wtyczki do lokalnego katalogu
/usr/lib64/nagios/plugins/*
. Miałem ten sam problem co ty i mogę go rozwiązać za pomocą tego rozwiązania.źródło
Miałem problem, który piszesz. Test, który przeprowadziłem, był z Perla. Umieść tę linię w pliku,
/etc/nagios/nrpe.cfg
aby działała.źródło
Jest naprawdę fajny artykuł, który opisuje całą instalację i konfigurację agenta NRPE z wieloma przykładami check_commands. Korzystam z tego artykułu, gdy muszę zainstalować NRPE na nowym serwerze. Co więcej, na końcu strony znajdziesz fajny skrypt, który automatycznie instaluje i konfiguruje NRPE dla Ciebie (na podstawie ustawionych zmiennych), artykuł można znaleźć: Tutaj
źródło
Zwykle dzieje się tak, gdy serwer NRPE jest uruchamiany z użytkownikiem nrpe zamiast nagios.
Zmiana
nrpe_user
wartości na nagios w/etc/nagios/nrpe.cfg
pliku powinna rozwiązać twój problem.W
nrpe_group
razie potrzeby można je również zmienić.źródło
Jeszcze jedną rzeczą do sprawdzenia jest to, że jeśli twoje polecenie korzysta
sudo -u <another user>
z polecenia,libexec
katalog (i katalogi nad nim) muszą być czytelne dla sudo użytkownika.Na przykład jeśli twoje polecenie to:
Użytkownik tomcat musi mieć dostęp do tego pliku.
Jednym ze sposobów rozwiązania tego byłoby:
Zastąpienie ostatniej części dowolnym miejscem, w którym znajdują się pliki wykonywalne
źródło
Miałem ten sam problem i udało mi się go rozwiązać, zabijając proces nagios (na monitorowanym komputerze):
Potem wszystko poszło dobrze.
źródło
Właśnie miałem ten problem na FreeBSD. Po godzinnym uderzaniu głową o ścianę zdałem sobie sprawę, że problem
/usr/local/nagios/etc/nrpe.cfg
polega na tym, że wskazywało to niewłaściwe miejsce dla sudo.Aby znaleźć poprawną lokalizację do uruchomienia polecenia sudo:
# whereis sudo
Następnie zmieniłem przedrostek komendy w nrpe.cfg z:
command_prefix=/usr/local/sudo
do:
command_prefix=/usr/local/bin/sudo
Następnie pobiegł
service nrpe restart
i problem został rozwiązany.Może to być podobny problem w innych systemach operacyjnych, po prostu kolejna rzecz, aby sprawdzić, czy sprawdziłeś wszystkie inne możliwe problemy dotyczące uprawnień i nadal napotykasz ten problem.
źródło
Brakuje wtyczek Nagios na kliencie nrpe.
Nie używaj yum instalacji nagios-plugins (nagios-plugins-2.0.3-1.el6.x86_64). Nie instaluje wszystkich wtyczek. Pobierz nagios-plugins-1.4.11.tar.gz i postępuj zgodnie z instrukcjami w tym dokumencie.
http://www.thegeekstuff.com/2008/06/how-to-monitor-remote-linux-host-using-nagios-30/
źródło
Miałem ten problem i rozwiązałem wyłączanie selinux
setenforce 0
źródło