NRPE가 출력을 읽을 수 없지만 왜 그렇습니까? 명령을 실행하려고하면 다음과

NRPE 에이 문제가 있습니다. 지금까지 인터넷에서 찾은 모든 것들이 이미 시도한 것을 나에게 지적하는 것 같습니다.

# /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

누구든지 내가 이것으로 실수했을 수도있는 다른 곳을 생각할 수 있습니까? 다른 여러 서버에서 문제없이 동일한 작업을 수행했습니다. 내가 생각할 수있는 유일한 차이점은이 상자는 RHEL 5 기반이며 다른 상자는 RHEL 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파일을 자세히 읽고 그에 대해 이야기하는 내용을 얻습니다.



답변

권리 문제가 있습니다.

명령을 다음과 같이 변경하십시오.

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

(스도 추가)

그런 다음 nagios-user를 sudoers에 추가하십시오.

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

또는 파일을 chmod 할 수도 있습니다 … 작동합니다.

CentOS, Red Hat, Scientific 또는 Fedora를 사용 Defaults requiretty하는 경우 sudoers 파일에서 비활성화 하십시오.


답변

짧은 대답 : Bash 플러그인을 사용하는 경우 사용할 해석기를 나타내는 shebang 이 있는지 확인하십시오 .#!/bin/bash


내가 직접 작성한 Nagios 플러그인과 같은 문제에 직면했습니다. nagios다음 명령문을 사용하여 사용자로 실행할 때에도 스크립트가 로컬에서 실행될 때 예상대로 실행되었습니다 .

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

그러나 Nagios3 서버에서 NRPE를 사용한 원격 시작은 실패했습니다.

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

NRPE를 통해 스크립트를 실행하면을 (를) 실행할 때와 동일한 인터프리터를 사용하지 않은 것처럼 보이므로 스크립트에 shebang 을 추가 하여이 사례를 마침내 해결 했습니다 sudo sudo -s -u nagios.


답변

내 경우에는 문제는 간단했다-사용자 nagios 는 스크립트를 실행할 수 없었습니다. chmod 후 작동하기 시작했습니다. Sudo는 필요하지 않습니다. 그것의 악 🙂


답변

내가 사용하는 플러그인이 SELinux에서 제대로 작동하지 않아 check_nrpe가 로컬에서 확인 작업을 수행했지만 ‘NRPE : 출력을 읽을 수 없음’을 얻었습니다. 이를 비활성화하고 파일 컨텍스트를 제거하십시오.

$ 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, iptables를 확인하십시오.

내 클라이언트 : nrpe.cfg의 경로 문제였습니다. 명령 경로를 check_ * 플러그인 이름으로 다시 확인하십시오. 경로 이름으로 (lib / local) (libexec / plugins)을 혼동 할 수 있습니다. 실수로 주석 처리 된 주석 처리 된 nrpe cfg 파일의 경로를 넣어 명령을 내 렸습니다. make install 또는 yum 플러그인 설치는 difft 디렉토리에 저장합니다.

commaneted : / usr / local / nagios / libexec / check_disk

실제 경로 : / usr / lib / nagios / plugins / check_disk

서버에서 방화벽 문제가 아니라는 것을 확인할 수 있었고 5666 포트에 telnet 할 수 있고 담요 check_nrpe를 실행할 수 있으며 상태를 반환 값으로 얻을 수 있습니다. 명령을 로컬로 실행할 수 있지만 nrpe의 클라이언트에서 nrpe.cfg의 경로가 잘못되었습니다.


답변

필자의 경우 하나의 플러그인 만 실패하고 다른 플러그인은 정상적으로 작동했습니다. LOCALE 문제로 판명되었습니다.

플러그인은 의 출력에서 check_mem.shgrep을 수행했습니다 . 그러나 시스템 전체 LOCALE이 대신 (독일어)을 반환 했으므로 수신 된 모든 값은 빈 문자열이었습니다.MemfreeSpeicherMem


답변

이것은 권한 문제이며 스크립트 실행 권한을 부여하면 괜찮습니다.

예를 들면 :
Before / Remote host :

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

문제가 해결되었습니다.