CentOS: 원격 서버의 nrpe/snmp 에이전트에서 출력을 읽을 수 없습니다. 로컬에서는 작동하지만, 제가 뭘 잘못하고 있는 걸까요?

CentOS: 원격 서버의 nrpe/snmp 에이전트에서 출력을 읽을 수 없습니다. 로컬에서는 작동하지만, 제가 뭘 잘못하고 있는 걸까요?

Nagios를 사용하여 이 서버를 모니터링하고 싶기 때문에 일부 서버에 NRPE 및 SNMP를 설치했습니다. 이미 제대로 실행되고 있는 몇 가지 검사가 있고 의도한 대로 출력이 나옵니다. 오늘은 check_ifstatus내 서버 중 하나의 네트워크 인터페이스 카드 상태를 모니터링하기 위해 Nagios 명령을 설치했습니다 mysql. check_ifstatus서버에서 로컬로 실행하는 동안 관련 정보를 올바르게 얻습니다.

[root@dbr4 nagios]# /usr/lib64/nagios/plugins/check_ifstatus -H localhost
    OK: host 'localhost', interfaces up: 4, down: 0, dormant: 0, excluded: 0, unused: 0    |up=4,down=0,dormant=0,excluded=0,unused=0
[root@dbr4 nagios]#

하지만 Nagios 서버에서 명령을 실행하면 다음 오류가 발생합니다.

[root@monitorvm ~]# /usr/lib64/nagios/plugins/check_ifstatus -H amadbr4
CRITICAL: No response from remote host 'dbr4' for 1.3.6.1.2.1.2.2.1.8  with snmp version 1
[root@monitorvm ~]#

확인하려는 서버에서 snmp를 활성화해야 한다는 뜻인가요? 이 검사를 실행하기 위해 NRPE를 사용할 수 있는 방법이 있습니까? SELINUX는 모든 시스템에서 비활성화됩니다.

답변1

SNMP를 통해 사물을 확인하기 위해 NRPE를 사용하는 이유는 무엇입니까? snmp가 외부 인터페이스에서 수신하고 있다고 가정하면 Nagios 상자에서 직접 확인할 수 있습니다(잘못된 포트를 찾았음에도 불구하고 netstat 주석으로 판단하면 원하는 것 같습니다).

SSL 지원 없이 NRPE를 컴파일하지 않은 경우 -n을 사용하면 안 됩니다.

(또한 지정할 필요가 없습니다.-p 5666, 그것이 기본값이기 때문입니다. 와 같다-t 10.)

  1. Nagios 상자의 IP가 allowed_hosts 목록에 있는지 확인하세요.
  2. 더 이상 인수 없이 "check_nrpe -H dbr4"를 실행하여 NRPE 데몬과 대화할 수 있는지 확인하세요. NRPE 버전 번호를 다시 받아야 합니다.
  3. nrpe.cfg의 "command[check_ifstatus]" 줄이 수동 테스트와 일치하는지 확인하세요.

답변2

Keith의 대답이 가장 정확합니다. SNMP 검사를 수행하기 위해 NRPE를 사용할 필요가 없으며 불필요한 복잡성을 추가합니다.

그렇긴 하지만, 여기서 가장 가능성이 높은 즉각적인 문제는 SELinux를 껐다는 사실을 알지 않는 한 SELinux입니다. getenforceNRPE 호스트에서 실행합니다 . "Enforcing"이라고 표시되면 SELinux가 활성화된 것입니다. SELinux가 활성화된 경우 check_nrpeNagios 호스트에서 명령을 실행한 다음 /var/log/audit/audit.logNRPE 호스트를 확인합니다. "avc: 거부됨"이라는 "type=AVC" 줄이 있는 경우 SELinux 제한 사항이 적용되었을 가능성이 높습니다.

이를 방지하는 쉬운 방법은 (언젠가 이 시스템에서 SELinux를 다시 활성화할 계획인 경우) 또는 (이 시스템에서 SELinux를 다시 실행하고 싶지 않은 경우) 를 편집 /etc/selinux/config하고 설정하여 SELinux를 끄는 것입니다. . 물론 이렇게 하면 SELinux의 이점을 잃게 됩니다.SELINUXpermissivedisabled

플러그인 의 SELinux 컨텍스트를 변경하여 이 문제를 해결할 수 있습니다 check_ifstatus. 를 사용하여 해당 컨텍스트를 확인할 수 있습니다 ls -Z. 내 시스템(표준 대상 정책 포함)에는 "system_u:object_r:nagios_system_plugin_exec_t:s0" 컨텍스트가 있으며, 그 중 "nagios_system_plugin_exec_t"가 중요한 부분입니다. "nagios_system_plugin_exec_t"(사용)로 설정해도 chcon -t nagios_system_plugin_exec_t check_ifstatus작동하지 않으면 "nagios_unconfined_plugin_exec_t"를 사용해 보세요. 이러한 변경 사항 중 하나라도 효과가 있으면 를 사용하여 영구적으로 적용해야 합니다 semanage fcontext -a -t nagios_system_plugin_exec_t '/usr/lib(64)?/nagios/plugins/check_ifstatus'.

그 중 아무것도 작동하지 않으면 아마도 루프백 주소를 사용하는 프로세스에 대한 일부 제한 사항에 직면하게 될 것이며 AVC 메시지를 살펴보고 자체 SELinux 정책을 작성해야 합니다. 나는 조언을 제공할 만큼 충분한 작업을 수행하지 않았지만("Nagios 호스트에서 직접 SNMP를 확인하십시오. 이것이 바로 SNMP의 목적입니다"), 이 작업에 대한 온라인 참고 자료가 몇 군데 있습니다. audit2allowSELinux 정책에 적응하는 과정에 도움이 되는 를 살펴보고 싶을 수도 있습니다 .

관련 정보