Fórum Root.cz
Hlavní témata => Hardware => Téma založeno: Milan 26. 08. 2012, 09:44:42
-
Zdravím, mám jeden problém a už si nevím rady. Používám na monitorovacím serveru systém ICINGA a moduly nagiosu. Potřeboval bych přes nrpe zprovoznit monitoring teplot disků na vzdáleném serveru. Na tom serveru je démon nrpe, správně nakonfigurován (fungujou i jiné pluginy), ale odmítá mi fungovat plugin check_hddtemp, který hlídá teploty disků podle hddtemp. O ten modul check_hddtem je spouštěn pod uživatelem nagios a hddtemp je dotazován přes sudo. /etc/sudoers mám také nastavené, ale stále mi pokud spustím plugin hlásí NRPE: Unable to read output oprávnění jsou nastavený také správně a v /etc/sudoers mám nastaveno
Defaults:nagios !requiretty nagios ALL=(ALL) NOPASSWD: /usr/lib/nagios/plugins/
nrpe loguje do syslogu a tam žádné chyby nepíše.
Verze:
nrpe 2.13
check_hddtemp.sh 1.0
sudo 1.8.5
hddtemp 0.3-beta15
Když dám pod uživatelem nagios příkaz sudo ./check_hddtemp.sh /dev/sda 40 50 tak funguje normálně. Tuším, že jde asi tu direktivu requiretty, ale nevím jak, ji v sudo zakázat jinak než přes sudoers
-
Tím requiretty by to snad být nemělo - viz man sudoers: This flag is off by default.
Jak vypadá definice toho příkazu v konfigiraci Icingy? Nechybí tam sudo?
Nouzový debug by byl přidat si do toho scriptu check_hddtemp.sh nějaký ladící výstupy (jestli se vůbec spustí, pod jakým uživatelem atd.)
-
Pokud dám příkaz
ct_pacs ~ # cd /usr/lib/nagios/plugins/
ct_pacs plugins # sudo -u nagios ./check_nrpe -H 127.0.0.1 -c check_hddtemp_sda
Vyhodí to
NRPE: Unable to read output
Pokud se ale přihlásím jako uživatel nagios a spustím
nagios@ct_pacs /usr/lib/nagios/plugins $ sudo ./check_hddtemp.sh /dev/sda 40 50
OK: Temperature is below warn treshold (/dev/sda is 33)
Jinak v konfiguraci nrpe.cfg mám
command[check_hddtemp_sda]=sudo /usr/lib/nagios/plugins/check_hddtemp /dev/sda 40 50
Debug mód v nrpe jsem zapnul, ale po vyvolání chyby se v syslogu nic neobjevilo
-
Jo, tak to fakt vypadá, že je problém v tom tty.
Proč to nejde vypnout per user, to nechápu, ale možná by mohlo pomoct to vypnout v defaultech - viz http://www.cyberz.org/blog/2009/01/03/nagios-nrpe-and-sudo-nrpe-unable-to-read-output/
-
Ještě mě teď napadlo (nrpe nepoužívám, tyhle věci mám přes SNMP): pod jakým uživatelem běží ten nrpe démon? Tady totiž nezáleží na tom, pod jakým userem spouštím to check_nrpe, ale pod jakým uživatelem ten příkaz spouští on.
Tady by asi taky mohl být zakopanej pes:
1. běží pod rootem -> pro roota není nastavený requiretty na off, takže sudo zhavaruje (?)
2. běží pod jiným uživatelem než nagios -> dtto
-
ct_pacs plugins # ps -Af | grep nrpe
root 4131 4037 0 08:23 pts/0 00:00:00 grep --colour=auto nrpe
nagios 25631 1 0 Aug26 ? 00:00:03 /usr/bin/nrpe -c nagios:nagios -c /etc/nagios/nrpe.cfg --daemon
pokud nastavím requretty na off i pro root v /etc/sudoers tak to stejně nepomáhá :-(
-
Tak pak uz jedine to, co je v tom odkazovanym clanku:
Then the problem is in the requiretty options in /etc/sudoers, enabled by default on CentOS. Simply comment it as follows:
#Defaults requiretty
...a pak uz nevim, takze leda improvizovat (vytvorit si vlastni command, dat si do nej kontrolni vypisy a spoustet ho stejnym zpusobem - podle me se vubec nespusti).
-
Nemáš v názvu těch příkazů chybu? Jednou uvádíš skript s příponou ".sh" a podruhé bez ní:
nagios@ct_pacs /usr/lib/nagios/plugins $ sudo ./check_hddtemp.sh /dev/sda 40 50
...
Jinak v konfiguraci nrpe.cfg mám
command[check_hddtemp_sda]=sudo /usr/lib/nagios/plugins/check_hddtemp /dev/sda 40 50
tzn. nevolá se prostě "sudo" s nesmyslným parametrem?
-
omlouvám se. moje špatné oko přehledlo chybu v konfiguráku nrpe. samozřejmě to bylo tou chybějící koncovkou .sh ;) díky moc
-
No jo, klasika :) Tak hlavne, ze se to vyresilo.