एनआरपीई आउटपुट पढ़ने में असमर्थ है, लेकिन क्यों?


27

मुझे एनआरपीई के साथ यह समस्या है, नेट पर अब तक मैंने जो भी सामान पाया है वह मुझे उन चीजों पर इंगित करता है जो मैंने पहले ही कोशिश की हैं।

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

देता है

NRPE v2.12

जैसा सोचा था।

हाथ से कमांड चलाना (जैसा कि "nrpeclient" में nrpe.cfg में परिभाषित किया गया है) अपेक्षित प्रतिक्रिया देता है

nrpe.cfg:

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

"Expected response"

लेकिन अगर मैं Nagios सर्वर से कमांड चलाने की कोशिश करता हूं तो मुझे निम्नलिखित मिलते हैं:

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

क्या कोई और कहीं भी सोच सकता है कि मैंने इसके साथ गलती की हो सकती है? मैंने कई अन्य सर्वर पर एक ही काम किया है जिसमें कोई समस्या नहीं है। एकमात्र अंतर जो मैं इसके साथ सोच सकता हूं वह यह है कि यह बॉक्स आरएचईएल 5 आधारित है, जबकि अन्य आरएचईएल 4 आधारित हैं।

उन दो बिट्स के ऊपर जो मैंने परीक्षण किया है वे वही हैं जो लोग सुझाव देते हैं जब लोगों को यह समस्या हुई है।

मुझे यह उल्लेख करना चाहिए कि जब मैं पुनः आरंभ करता हूं तो मुझे लॉग में एक अजीब त्रुटि मिलती है 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

हालांकि, यह स्पष्ट रूप से उस /usr/local/nagios/etc/nrpe.cfgफ़ाइल को पढ़ने के लिए है जो उस सामान को प्राप्त करने के लिए है जो आगे के बारे में बात कर रहा है।



चलो इसे एक रखो, क्योंकि दूसरा एक बंद था।
बार्ट डी वोस

इसके अलावा, सुनिश्चित करें कि वास्तव में STDOUT फ्लश हो गया है।

जवाबों:


35

आपको अधिकार की समस्या है।

कमांड को इसमें बदलें:

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

(सुडो जोड़ें)

फिर, sudoers में nagios-user जोड़ें:

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

या आप बस फ़ाइल को चकमा दे सकते हैं ... यह भी काम करता है।

यदि आप CentOS, Red Hat, वैज्ञानिक या Fedora का उपयोग कर रहे हैं, तो Defaults requirettysudoers फ़ाइल में अक्षम करना सुनिश्चित करें ।


1
@ बर्ट दे वोस लेकिन आपके द्वारा जोड़ा गया उत्तर एक सुरक्षा छेद बना देगा> सूडोर्स फाइल में कुछ जोड़कर आपको संभावित सुरक्षा जोखिम के लिए खोल देता है। यानी यदि बफर ओवरफ्लो के माध्यम से कोई व्यक्ति एक ही स्थान पर एक ही नाम के साथ एक फ़ाइल को छोड़ने में सक्षम है, तो वे रूट पासवर्ड और बॉक्स पर नियंत्रण प्राप्त किए बिना इसे निष्पादित कर सकते हैं: एस क्या किसी तरह से हस्ताक्षर करने का कोई रास्ता नहीं है (SHA1) या एमडी 5) उस प्रकार के हमले को रोकने के लिए सूडोर्स फ़ाइल में आवेदन करता है। यानी इंजेक्ट की गई फ़ाइल में एक ही हस्ताक्षर नहीं होंगे और इस तरह यह निष्पादित नहीं होता है। [पहली टिप्पणी यहां पढ़ें] ( crashatau.blogspot.co
अहमद

1
@ एक्स-वेयर: जबकि यह सच है, मौका एक बफर अतिप्रवाह दुरुपयोग किया जा सकता है यहाँ बहुत पतली है। हालाँकि ऐसा होने से रोकने के लिए, आपको अपर्म / SELinux का उपयोग करना चाहिए। यही कारण है कि ये चीजें मौजूद हैं।
बार्ट डे वोस

मुझे लगता है कि अलग-अलग डिस्ट्रोस हैं यहां तक ​​कि अलग-अलग उपयोगकर्ता भी हैं, मेरे मामले में उपयोगकर्ता को विडो को जोड़ने के लिए स्पष्ट नहीं था। मैंने अभी भी बार्ट दे वोस के समाधान का पालन किया है, हालांकि आप देख सकते हैं कि कौन सा उपयोगकर्ता / var / log / सिक्योर एक्सेस लॉग देखकर nrpe कमांड को एक्सेस करने की कोशिश कर रहा है। Jul 24 15:39:09 मेजबाननाम sudo: nrpe: उपयोगकर्ता sudoers में नहीं; TTY = अज्ञात; PWD = /; USER = जड़; COMMAND = / usr / lib64 / nagios / plugins / check_disk -w 20% -c 10% -p / dev / mapper / vg_uxp-lv_root

@ अहमदझज्जर क्या आप गंभीर हैं? आपको लगता है कि कोई व्यक्ति nagios (एक सिस्टम 20 साल पुराना है) को हैक करेगा और उस उपयोगकर्ता का उपयोग रूट अनुमतियों वाली फाइल को निष्पादित करने के लिए करेगा। और आपको लगता है कि मैंने निष्पादन को केवल पढ़ने के लिए रूट के रूप में चलाने के लिए नहीं बनाया, ताकि किसी को उस पर फ़ाइल की प्रतिलिपि बनाने से रोका जा सके? यदि आप इसके बारे में चिंतित हैं, तो सुडो का उपयोग करने के बजाय आप check_openmanage निष्पादन योग्य को सेट कर सकते हैं और किसी को भी इसे चलाने दे सकते हैं!
इवान लैंग्लोइस

11

संक्षिप्त उत्तर: यदि आप बैश प्लगइन का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपके पास एक शेबंग स्टैटिंग है जो दुभाषिया का उपयोग किया जाना चाहिए:#!/bin/bash


मैं उसी समस्या का सामना कर रहा था जो मैंने खुद लिखा था Nagios प्लगइन के साथ। स्क्रिप्ट स्थानीय रूप से लॉन्च किए जाने के दौरान अपेक्षा के अनुसार चल रही थी, तब भी जब उपयोगकर्ता nagiosनिम्नलिखित कथन का उपयोग कर रहा हो :

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

लेकिन नागियोस 3 सर्वर से NRPE का उपयोग कर रिमोट-लॉन्चिंग असफल रही:

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

मैंने अंततः अपनी स्क्रिप्ट में एक शेबंग जोड़कर इस मामले को हल किया , क्योंकि ऐसा प्रतीत हुआ कि एनआरपीई के माध्यम से स्क्रिप्ट को चलाने के दौरान उसी दुभाषिया का उपयोग नहीं किया गया था, जैसा कि दौड़ते समय sudo sudo -s -u nagios


रूबेन के साथ रूबी स्क्रिप्ट नैगियोस प्लगइन का उपयोग करते समय यह समस्या थी। फिक्स को रैपर स्क्रिप्ट के साथ बनाना था#!/bin/bash -el eval "$(rbenv init -)" /usr/lib/nagios/plugins/check_something $@
ट्रिनिट्रॉनएक्स

1
अद्भुत जवाब! sudo -s -u nagios ने मुझे यह देखने की अनुमति दी कि नगीओस एक विशिष्ट प्लगइन से आउटपुट क्यों नहीं लौटा सकता है। आपको बहुत - बहुत धन्यवाद!
15

6

मेरे मामले में समस्या बस थी - उपयोगकर्ता नागरी स्क्रिप्ट को निष्पादित करने में सक्षम नहीं था। चामोद के बाद यह काम करने लगा। सूडो आवश्यक नहीं है। इसकी भी बुराई :)


1
असली जवाब यही है। नागियस स्क्रिप्ट को निष्पादित करने में सक्षम नहीं था, या तो खराब अनुमतियों के कारण, स्क्रिप्ट को गलत तरीके से बनाया जा रहा था, या स्क्रिप्ट वहां नहीं थी।
2

5

check_nrpe को स्थानीय स्तर पर चेक काम करने के बावजूद 'NRPE: आउटपुट पढ़ने में असमर्थ' मिल रहा था क्योंकि मैं जिस प्लगइन का उपयोग कर रहा था वह SELinux के साथ अच्छी तरह से काम नहीं कर रहा था। इसे अक्षम करें और फ़ाइल के संदर्भों को निकालना सुनिश्चित करें:

$ 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

सेलिनक्स को निष्क्रिय करते समय आमतौर पर यह परीक्षण के लिए एक अच्छा विचार नहीं हो सकता है कि यह अभी भी वैध है।
डेनिस नोल्टे

4

पाथिंग, परमिशन, सेलिनक्स, iptables चेक करें।

मेरा क्लाइंट में एक पाथिंग इश्यू था: nrpe.cfg, कमांड पथ को check_ * प्लगइन नाम से दोहराएं। ये भ्रामक हो सकते हैं, (lib / स्थानीय) (libexec / plugins) पथनाम के रूप में। मैंने गलती से हाँक लगाई और कमांड बनाने के लिए टिप्पणी की गई prepackaged nrpe cfg फ़ाइल से रास्ते डाल दिए। इनस्टॉल डायरेक्टरी में मेक इनस्टॉल या यम प्लग इन स्थापित करता है।

commaneted: / usr / स्थानीय / nagios / libexec / check_disk

बनाम

realpath: / usr / lib / nagios / plugins / check_disk

सर्वर से मैं यह पुष्टि करने में सक्षम था कि यह एक फ़ायरवॉल समस्या नहीं है, 5666 पोर्ट पर टेलनेट कर सकता है, एक कंबल चेक_नरेप चला सकता है और वापसी मान के रूप में स्थिति प्राप्त कर सकता है। स्थानीय रूप से कमांड चला सकते हैं लेकिन nrpe ने क्लाइंट में nrpe.cfg में गलत पथ दिया है।


4

मेरे मामले में, केवल एक प्लगइन विफल रहा जबकि कई अन्य ने ठीक काम किया। यह एक LOCALE समस्या थी।

प्लगइन था check_mem.shऔर यह Memके उत्पादन में के लिए एक grep प्रदर्शन किया free। लेकिन सिस्टम वाइड LOCALE Speicher(जर्मन) के बजाय वापस आ गया Mem, इसलिए सभी प्राप्त मान खाली स्ट्रिंग थे।


2
भीड़, एसएफ में आपका स्वागत है! मेरी राय में, यह एक उत्कृष्ट पहला उत्तर है: संक्षेप में, इस बिंदु पर, और यह पहले से ही यहाँ उत्तर के संग्रह में कुछ नया जोड़ता है। मेरे से +1, और मुझे भविष्य में आपसे और भी ऐसे उत्तर पढ़ने की उम्मीद है (मुझे उम्मीद है कि आप मेरे छोटे प्रारूपण संपादन को माफ कर देंगे)।
MadHatter

2

यह एक अनुमति मुद्दा है, बस स्क्रिप्ट को सही निष्पादन दें और यह ठीक होगा:

यहाँ एक उदाहरण: पहले / दूरस्थ मेजबान :

[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 सर्वर :

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

के बाद: दूरस्थ होस्ट :

[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;;;

समस्या का समाधान हुआ।


1
अच्छा जवाब है, लेकिन यह भी नोट करना अच्छा है कि सभी उपयोगकर्ता check_nrpe को चलाने की अनुमति देते हैं, जैसा कि chmod o + x करता है, एक संभावित सुरक्षा जोखिम हो सकता है, यह इस बात पर निर्भर करता है कि सिस्टम कैसे कॉन्फ़िगर / एक्सेस / उपयोग किया जाता है।
18

1

मेरे मामले में मॉनीटर की जा रही लॉग फाइल को रूट द्वारा स्वामित्व दिया गया था: प्रशंसा, इसलिए कॉम्प्लेक्स समूह में nagios उपयोगकर्ता को जोड़ने से check_log कमांड सफल हो गई, लेकिन केवल तब जब मॉनिटर किए गए मेजबानों पर सीधे निष्पादित किया गया। यह Nagios सर्वर पर check_nrpe का उपयोग करने में विफल रहा, जब तक कि मैंने मॉनिटर किए गए मेजबानों पर nagios-nrpe-server सेवा को फिर से शुरू नहीं किया, उदा।

service nagios-nrpe-server restart

इसलिए जाहिरा तौर पर पुनरारंभ करने के लिए NRPE के लिए अनुमतियाँ परिवर्तन प्रभावी बनाने के लिए सेवा को पुनरारंभ करना आवश्यक था, लेकिन मुझे यह पता लगाने में थोड़ा समय लगा।


1

कस्टम NRPE प्लग इन के मामले में, बाहर निकलने के मूल्य के साथ कुछ आउटपुट प्रिंट करना सुनिश्चित करें। यदि स्क्रिप्ट से कोई आउटपुट नहीं है, तो NRPE शिकायत करेगा "NRPE आउटपुट पढ़ने में असमर्थ" । आप nrpe.cfg में डिबगिंग सक्षम कर सकते हैं और इस त्रुटि का निरीक्षण कर सकते हैं।


1

मेरे मामले में मुद्दों से संबंधित था (आरएचईएल 6.5, सेलिनक्स को लागू करने के लिए सेट है)।

Nagios-plugins- * को यम के माध्यम से स्थापित करने से / usr / lib64 / nagios / plugins में आपकी प्लगइन फाइलें बन जाएंगी। यदि आप उन प्लगइन फ़ाइलों (ls -lZ) पर फ़ॉन्टेक्स की जांच करते हैं, तो आप देखेंगे कि फाइलों में "nagios_system_plugin_exec_t" पर संदर्भ प्रकार सेट है, जो संदर्भ प्रकार है जो चेक-ऑन क्रॉप की अपेक्षा करता है।

मेरे मामले में, मैंने "vi" का उपयोग करके एक कस्टम स्क्रिप्ट "check_mem.sh" बनाई थी। परिणामस्वरूप फ़ाइल में "lib_t" के लिए संदर्भ प्रकार सेट था। यह "NRPE: आउटपुट पढ़ने में असमर्थ" आउटपुट के लिए nrpe का कारण बन रहा था।

फ़ाइल संदर्भ को "nagios_system_plugin_exec_t" में बदलने से समस्या हल हो गई:

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

सामान्य सेलिनक्स समस्या निवारण ने मुझे इस मुद्दे की ओर भी इशारा किया होगा (/var/log/audit/audit.log की जाँच करना), लेकिन यह आखिरी चीज थी जिसके बारे में मैंने सोचा था

संपादित करें: chcon सिर्फ अस्थायी रूप से संदर्भ बदलता है। इसे बदलने के लिए लगातार उपयोग करें 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 प्लगइन्स को स्थापित नहीं किया है, NRPE उन्हें खोज नहीं सकता है, या उन्हें एक्सेस नहीं कर सकता है।

मुझे कभी भी अपने कमांड को सुडोर्स से नहीं जोड़ना पड़ा। सुनिश्चित करें कि कमांड Nagios उपयोगकर्ता के स्वामित्व में हैं और वे आसानी से पढ़े जा सकते हैं।


0

मुझे लगता है कि आपको अपने स्थानीय डायर में प्लगइन्स को जोड़ना होगा /usr/lib64/nagios/plugins/*। मुझे आपके समान समस्या थी और मैं इसे इस समाधान के साथ हल कर सकता हूं।


0

मुझे समस्या थी कि आप लिखें। मैंने जो परीक्षण किया वह पर्ल से था। /etc/nagios/nrpe.cfgकाम करने के लिए इस लाइन को फाइल में डालें ।

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

0

एक बहुत अच्छा लेख है जो पूरे NRPE एजेंट की स्थापना और कॉन्फ़िगरेशन को कई check_commands उदाहरणों के साथ कवर करता है, मैं इस लेख का उपयोग तब करता हूं जब मुझे कभी भी एक नए सर्वर पर NRPE स्थापित करने की आवश्यकता होती है। इससे अधिक, पृष्ठ के अंत में आप एक शांत स्क्रिप्ट पा सकते हैं जो स्वचालित रूप से आपके लिए NRPE स्थापित करता है और कॉन्फ़िगर करता है (आपके द्वारा निर्धारित चर के आधार पर), लेख मिल सकता है: यहां


लिंक को अपडेट कर दिया गया है
इटाई गनोट

0

यह आमतौर पर तब होता है जब NRPE सर्वर को nagios के बजाय उपयोगकर्ता nrpe के साथ शुरू किया जाता है।

फ़ाइल nrpe_userमें नागों में मान बदलने से /etc/nagios/nrpe.cfgआपकी समस्या का समाधान होना चाहिए।

nrpe_groupभी बदला जा सकता है अगर जरूरत है।


0

जांच करने के लिए एक और बात यह है कि यदि आपका कमांड कमांड sudo -u <another user>को चलाने के लिए उपयोग कर रहा है, तो libexecनिर्देशिका (और इसके ऊपर की निर्देशिका) को उपयोगकर्ता द्वारा पढ़े जाने योग्य होना चाहिए।

उदाहरण के लिए यदि आपकी आज्ञा है:

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

टॉमकैट उपयोगकर्ता को उस फ़ाइल तक पहुंचने में सक्षम होना चाहिए।

इसे ठीक करने का एक तरीका होगा:

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

जहाँ भी आपके निष्पादक रहते हैं, उसके अंतिम भाग को बदलना


0

मेरे पास एक ही मुद्दा था और मैं nagios प्रक्रिया (निगरानी मशीन पर) को मारकर इसे हल करने का प्रबंधन करता हूं:

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

उसके बाद सब ठीक हो गया।


0

बस FreeBSD पर यह मुद्दा था। एक घंटे के लिए एक दीवार के खिलाफ मेरे सिर को पीटने के बाद मुझे इस मुद्दे का एहसास हुआ कि /usr/local/nagios/etc/nrpe.cfgसूडो के लिए गलत स्थान पर इशारा किया गया था।

सूडो कमांड चलाने के लिए इंगित करने के लिए सही स्थान खोजने के लिए:

# whereis sudo

मैंने इसके बाद nrpe.cfg में कमांड_प्रिफ़िक्स बदल दिया:

command_prefix=/usr/local/sudo

सेवा मेरे:

command_prefix=/usr/local/bin/sudo

फिर भागे service nrpe restartऔर समस्या हल हुई।

अन्य ऑपरेटिंग सिस्टम पर एक समान समस्या हो सकती है, बस यह जांचने के लिए कि क्या आपने अन्य संभावित अनुमतियों के सभी मुद्दों की जांच की है और आप अभी भी इस समस्या को मारते हैं।


-1

एनआरईपी क्लाइंट पर नागिस प्लगइन्स गुम।

Yum install nagios- प्लगइन्स (nagios-plugins-2.0.3-1.el6.x86_64) का उपयोग न करें। यह सभी प्लगइन्स को स्थापित नहीं करता है। Nagios-plugins-1.4.11.tar.gz डाउनलोड करें और इस दस्तावेज़ में निर्देश का पालन करें।

http://www.thegeekstuff.com/2008/06/how-to-monitor-remote-linux-host-using-nagios-30/


-2

मुझे यह समस्या थी और मैंने सेलिनक्स को अक्षम करने का हल किया

सेटेनफोर्स 0


2
सर्वर दोष में आपका स्वागत है। क्या आप यह बताते हुए अधिक विस्तार प्रदान कर सकते हैं कि यह कैसे / क्यों काम करता है?
मैं कहता हूं कि मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.