NRPE çıktıyı okuyamıyor, ancak neden?


27

NRPE ile bu problemim var, internette bugüne kadar bulduğum her şey beni daha önce denediğim şeylere işaret ediyor gibi görünüyor.

# /usr/local/nagios/plugins/check_nrpe -H nrpeclient

verir

NRPE v2.12

beklenildiği gibi.

Komutu elle çalıştırmak (nrpe.cfg dosyasında "nrpeclient" de tanımlandığı gibi) beklenen yanıtı verir.

nrpe.cfg:

command[check_openmanage]=/usr/lib/nagios/plugins/additional/check_openmanage -s -e   -b ctrl_driver=0 bat_charge

"Expected response"

Ancak, Nagios sunucusundan komutu çalıştırmaya çalışırsam aşağıdakileri alıyorum:

# /usr/local/nagios/plugins/check_nrpe -H comxps -c check_openmanage
NRPE: Unable to read output

Birisi, bu konuda bir hata yapmış olabileceğim başka bir yer düşünebilir mi? Aynı şeyi diğer sunucularda da sorunsuz yaptım. Bununla ilgili düşünebildiğim tek fark, bu kutunun RHEL 5 tabanlı olması, diğerleri ise RHEL 4 tabanlı olmasıdır.

Test ettiğim yukarıdaki iki bit, insanların bu sorunu yaşadıklarında çoğu insanın önerdiği gibi.

Yeniden başlattığımda, günlüklerde tuhaf bir hata aldığımı belirtmeliyim 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

Yine de, /usr/local/nagios/etc/nrpe.cfgkonuştuğu şeyleri anlatmak için açıkça okuyor .



Hadi diğeri kapandığından beri bunu koruyalım.
Bart De Vos

Ayrıca, STDOUT'un gerçekten temizlendiğinden emin olun.

Yanıtlar:


35

Hak problemin var.

Komutu şuna değiştir:

command[check_openmanage]=sudo /usr/lib/nagios/plugins/additional/check_openmanage -s -e -b ctrl_driver=0 bat_charge

(sudo ekle)

Ardından, nagios kullanıcısını sudo'lara ekleyin:

nagios ALL=(ALL) NOPASSWD:/usr/lib/nagios/plugins/additional/check_openmanage

Veya sadece dosyayı chmod olabilir ... Bu da işe yarıyor.

CentOS, Red Hat, Scientific veya Fedora kullanıyorsanız, Defaults requirettysudoers dosyasında devre dışı bıraktığınızdan emin olun .


1
@Bart De Vos, ancak eklediğiniz cevap, sudoers dosyasına bir şey ekleyerek olası bir güvenlik riski oluşturmanıza neden olacak bir güvenlik açığı yaratacaktır. yani eğer bir arabellek taşması ile birisi aynı yere aynı adı taşıyan bir dosyayı aynı yere bırakabiliyorsa, root şifresini bilmeden ve kutunun kontrolünü ele geçirmeden dosyayı çalıştırabilir: S Bir şekilde imza atmanın bir yolu yok mu (SHA1) veya MD5) uygulamanın sudoers dosyasındaki bu tip saldırıları önler. yani, enjekte edilen dosya aynı imzasına sahip olmayacak ve bu nedenle yürütülmeyecektir. [Burada ilk yorumu okuyun] ( crashatau.blogspot.co
Ahmad Hajjar

1
@ X-Ware: Bu doğru olsa da, burada bir arabellek taşmasının kötüye kullanma olasılığı çok zayıf. Ancak olmasını engellemek için apparmor / SELinux kullanmalısınız. Bu şeylerin var olmasının nedeni budur.
Bart De Vos

Sanırım farklı dağıtımlar bile farklı kullanıcılar var, benim durumumda visudo eklemek için kullanıcı npios değildi. Bart De Vos'un çözümünü hala takip ettim, ancak hangi kullanıcının / var / log / secure access logunu görüntüleyerek nrpe komutuna erişmeye çalıştığını görebilirsiniz. 24 Temmuz 15:39:09 ana bilgisayar adı sudo: nrpe: user NOT sudoers; TTY = bilinmiyor; PWD = /; KULLANICI = kök; COMMAND = / usr / lib64 / nagios / eklentiler / check_disk - w% 20 -% 10 - p / dev / mapper / vg_uxp-lv_root

@AmadHajjar Ciddi misin? Birisinin nagios'u (20 yaşında bir sistem) hackleyeceğini ve bu kullanıcıyı kök izinleriyle bir dosyayı yürütmek için kullanacağını düşünüyorsunuz. VE birisinin üzerine dosya kopyalamasını önlemek için yürütülebilir dosyayı salt okunur olarak çalıştırılmasını sağlamadığımı mı düşünüyorsunuz? Eğer endişeleniyorsanız, sudo kullanmak yerine check_openmanage çalıştırılabilir kodunu ayarlayabilir ve kimsenin çalıştırmasına izin verebilirsiniz!
Evan Langlois

11

Kısa cevap: Eğer bir Bash eklentisi kullanıyorsanız, hangi tercümanın kullanılması gerektiğini belirten bir Shebang olduğundan emin olun :#!/bin/bash


Aynı konuda kendime yazdığım Nagios eklentisi ile de karşı karşıya kaldım. Betik, yerel olarak başlatıldığında, nagiosaşağıdaki ifadeyi kullanarak kullanıcı olarak çalıştırırken bile beklendiği gibi çalışıyordu :

$ sudo sudo -s -u nagios
$ /path/to/my/plugin.sh
STATUS: OK

Ancak Nagios3 sunucusundan NRPE kullanarak uzaktan başlatma işlemi başarısız oldu:

$ /usr/lib/nagios/plugins/check_nrpe -H my-nagios-client -c my_plugin
NRPE: Unable to read output

Sonunda ekleyerek bu durumu çözdün shebang o NRPE aracılığıyla komut dosyası çalıştıran yoluyla çalıştırırken aynı tercüman kullanıldığı etmediğini ortaya, benim senaryodaki sudo sudo -s -u nagios.


Rbenv ile bir yakut komut dosyası nagios eklentisi kullanırken bu sorun vardı. Düzeltme ile bir sarmalayıcı komut dosyası oluşturmak oldu#!/bin/bash -el eval "$(rbenv init -)" /usr/lib/nagios/plugins/check_something $@
TrinitronX 3:13

1
şaşırtıcı cevap! sudo -s -u nagios, nagios'un neden belirli bir eklentiden çıktı döndüremediğini görmeme izin verdi. çok teşekkür ederim!
saat

6

Benim durumumda sorun basitti - user nagios betiğini çalıştıramadı. Chmod sonra çalışmaya başladı. Sudo gerekli değildir. Onun bile kötülük :)


1
Asıl cevap budur. Nagios, kötü izinler, yanlış yazılan komut dosyası veya orada bulunmayan komut dosyası nedeniyle komut dosyasını yürütemedi.
Droope

5

check_nrpe, kullandığım eklenti SELinux ile iyi çalışmadığından yerel olarak çalışmasına rağmen 'NRPE: Çıktı okunamıyor' yazıyordu. Devre dışı bırakın ve dosyanın içeriğini kaldırdığınızdan emin olun:

$ ls -l check_om_storage
-r-xr-xr--. 1 root nrpe 3808 Feb 27 17:54 check_om_chassis
$ setfattr -x security.selinux check_om_storage
$ ls -l check_om_chassis 
-r-xr-xr-- 1 root nrpe 3808 Feb 27 17:54 check_om_chassis

Selinux'u devre dışı bırakmak genellikle test etmek için iyi bir fikir olmayabilir, ancak bu hala geçerli.
Dennis Nolte

4

Yamalamayı, izinleri, selinux'u, iptables'ı kontrol edin.

Mine, istemcideki bir paylaşım sorunuydu: nrpe.cfg, check_ * eklenti adına giden komut yolunu iki kez kontrol edin. Bunlar kafa karıştırıcı olabilir (lib / local) (libexec / plugins) bir yol adı olarak. Yanlışlıkla yandım ve komutları yapmak için yorumlanmış önceden paketlenmiş nrpe cfg dosyasındaki yolları koydum. Make install ya da yum plugin install, bunları difft dizinine yerleştirir.

cometed: / usr / yerel / nagios / libexec / check_disk

e karşı

realpath: / usr / lib / nagios / eklentiler / check_disk

Sunucudan bir güvenlik duvarı sorunu olmadığını doğrulayabildim, 5666 portuna telnet yapabilir, check_nrpe bir battaniyeyi çalıştırabilir ve geri dönüş değeri olarak durumu alabilirdi. Komutlar yerel olarak çalıştırılabilir, ancak nrpe, nrpe.cfg'deki istemcide yanlış yola sahipti.


4

Benim durumumda, sadece bir eklenti başarısız olurken, diğer birkaç kişi iyi çalıştı. LOCALE sorunu olduğu ortaya çıktı.

Eklenti check_mem.shve Memçıktı için bir grep yapıldı free. Ancak sistem çapında LOCALE Speicheryerine (Almanca) döndü Mem, bu nedenle alınan tüm değerler boş dizelerdi.


2
Rush, SF'ye hoş geldin! Bu bence mükemmel bir ilk cevap, bence: kısa, noktaya değindi, ve burada zaten cevapların toplanmasında yeni bir şey ekledi. Benden +1 ve gelecekte sizden bu tür cevapları daha fazla okumayı umuyorum (umarım küçük biçimlendirme düzenlememi affedersiniz).
MadHatter, Monica

2

Bu bir izin sorunudur, sadece komut dosyası çalıştırma hakkını verin ve tamam olacak:

burada bir örnek: Önce / Uzak ana bilgisayar :

[root@puppet1 nrpe.d]# ls -l /usr/lib/nagios/plugins/check_mem.sh
-rwxr--r-- 1 root root 1598 Jul  7 10:55 /usr/lib/nagios/plugins/check_mem.sh

NRPE sunucusu :

[root plugins]# ./check_nrpe -H 172.19.9.200 -c check_mem_vb
NRPE: Unable to read output

Sonra: Uzak Ana Bilgisayar :

[root@puppet1 plugins]# chmod o+x /usr/lib/nagios/plugins/check_mem.sh

[root plugins]# ./check_nrpe -H 172.19.9.200 -c check_mem_vb
Memory: OK Total: 1980 MB - Used: 139 MB - 6% used|Total=2076479488;;;Used=145076224;;;Cache=1528111104;;Buffer=211890176;;;

Sorun çözüldü.


1
İyi cevap, ancak tüm kullanıcıların chmod o + x'in yaptığı gibi check_nrpe komutunu çalıştırmasına izin vermenin, sistemin nasıl yapılandırıldığına / erişildiğine / kullanıldığına bağlı olarak potansiyel bir güvenlik riski olabileceğini unutmamak gerekir.
avustinianyalı

1

Benim durumumda, izlenen günlük dosyası root'a aitti: adm, bu yüzden nagios kullanıcısını adm grubuna eklemek check_log komutunu başardı, ancak sadece doğrudan izlenen ana bilgisayarlarda çalıştırıldığında. İzlenen ana bilgisayarlarda nagios-nrpe-server hizmetini yeniden başlatana kadar Nagios sunucusunda check_nrpe kullanmamaya devam etti.

service nagios-nrpe-server restart

Öyleyse, görünüşe göre hizmeti yeniden başlatmak, izin değişikliklerinin NRPE için geçerli olmasını sağlamak için gerekliydi, ancak bunu anlamak biraz zaman aldı.


1

Özel NRPE eklentileri durumunda, çıkış değeriyle birlikte bazı çıktılar yazdırdığınızdan emin olun. NRPE betiğinden çıktı gelmezse, "NRPE çıktıyı okuyamaz" diyerek şikayet edecektir . Nrpe.cfg dosyasında hata ayıklamayı etkinleştirebilir ve bu hatayı gözlemleyebilirsiniz.


1

Benim durumumda meseleler selinux'le ilgiliydi (RHEL 6.5 kullanıyor, selinux zorlanıyordu).

Nagios-plugins- * 'ı yum yoluyla yüklemek, eklenti dosyalarınızı / usr / lib64 / nagios / plugins içinde yaratacaktır. Eklenti dosyalarındaki fcontext'i kontrol ederseniz (ls -lZ), dosyaların "nagios_system_plugin_exec_t" olarak ayarlanmış olan, check_nrpe'nin beklediği içerik türü olduğunu göreceksiniz.

Benim durumumda, "vi" kullanarak "check_mem.sh" adlı özel bir komut dosyası oluşturdum. Sonuçta ortaya çıkan dosya bağlam türünü "lib_t" olarak ayarladı. Bu, nrpe'nin "NRPE: Çıkış okunamıyor" çıktısına neden oluyordu.

Dosya içeriğini "nagios_system_plugin_exec_t" olarak değiştirmek sorunu çözdü:

chcon -t nagios_system_plugin_exec_t /usr/lib64/nagios/plugins/check_mem.sh

Her zamanki selinux sorun giderme beni bu konuda da işaret ederdi (kontrol /var/log/audit/audit.log), ama düşündüğüm en son şeydi

Düzenleme: chcon sadece içeriği geçici olarak değiştirir. Sürekli kullanmak için kullanın 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


0

Nagios eklentilerinizi yüklememiş olabilirsiniz, NRPE bunları bulamaz veya erişemez.

Komutlarımı Sudoers'a eklemek zorunda kalmamıştım. Komutların Nagios kullanıcısına ait olduğundan ve okunabilir olduklarından emin olun.


0

Eklentileri yerel yönetmene eklemelisin /usr/lib64/nagios/plugins/*. Seninle aynı problemi yaşadım ve bu çözümle çözebilirim.


0

Yazdığın bir problem vardı. Yaptığım test perl'dendi. /etc/nagios/nrpe.cfgÇalışması için bu satırı dosyaya yerleştirin.

command [check_memory] = /usr/bin/perl /usr/lib64/nagios/plugins/check_memory -w 75-c 90 

0

Tüm NRPE aracısı kurulumunu ve yapılandırmasını birçok check_commands örneği ile kapsayan gerçekten hoş bir makale var, NRPE'yi yeni bir sunucuya yüklemem gerektiğinde bu makaleyi kullanıyorum. Bundan da öte, sayfanın sonunda sizin için NRPE'yi otomatik olarak yükleyen ve yapılandıran harika bir komut dosyası bulabilirsiniz (belirlediğiniz değişkenlere göre), makale bulunur: Burada


Bağlantı güncellendi
Itai Ganot

0

Bu genellikle NRPE sunucusu, nagios yerine user nrpe ile başlatıldığında gerçekleşir.

nrpe_userDeğeri /etc/nagios/nrpe.cfgdosyadaki nagios'a değiştirmek probleminizi çözmelidir.

nrpe_groupGerekirse çok değiştirilebilir.


0

Kontrol edilmesi gereken bir diğer şey ise, eğer komutunuz komutu sudo -u <another user>çalıştırmak için kullanıyorsa , libexecdizinin (ve üstündeki dizinlerin) gizlice ayrılan kullanıcı tarafından okunabilir olması gerektiğidir.

Örneğin, emriniz:

command[check_tomcat]=sudo -u tomcat /usr/local/nagios/libexec/check_tomcat ...

Tomcat kullanıcısı bu dosyaya erişebilmelidir.

Bunu düzeltmenin bir yolu şöyle olurdu:

chmod 0775 /usr/local/nagios/
chmod 0755 /usr/local/nagios/libexec

Çalıştırılabildiğiniz yerlerin bulunduğu yerin son bölümünü değiştirmek


0

Aynı sorunu yaşadım ve nagios işlemini (izlenen makinede) öldürerek çözmeyi başardım:

ps -ef | grep nagios
kill -9 [NagiosProcessNumber]
/etc/init.d/nagios-nrpe-server start

Bundan sonra her şey yolunda gitti.


0

FreeBSD'de bu sorunu daha yeni yaşadım. Kafamı bir saat boyunca duvara çarptıktan sonra, sorunun /usr/local/nagios/etc/nrpe.cfgsudo için yanlış yere işaret ettiği anlaşıldı .

Sudo komutunun çalıştırılacağı yere doğru yeri bulmak için:

# whereis sudo

Daha sonra nrpe.cfg'deki command_prefix öğesini şu şekilde değiştirdim:

command_prefix=/usr/local/sudo

için:

command_prefix=/usr/local/bin/sudo

Sonra koştu service nrpe restartve sorun çözüldü.

Diğer işletim sistemlerinde de benzer bir sorun olabilir, diğer tüm olası izinleri kontrol edip etmediğinizi kontrol etmek için başka bir şey olabilir ve bu soruna hala maruz kalıyorsunuz.



-2

Bu problemi yaşadım ve selinux'u etkisiz hale getirmeyi çözdüm

setenforce 0


2
Sunucu Arızasına Hoşgeldiniz. Bunun nasıl / neden işe yaradığını açıklayan daha ayrıntılı bilgi verebilir misiniz?
Reinstate Monica'yı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.