Nagios NRPE: "my_command" 명령이 정의되지 않았습니다.

Nagios NRPE: "my_command" 명령이 정의되지 않았습니다.

나는 클라이언트에 설치했고 Nagios® Core™ 3.5.1실행 중입니다.NRPE v2.14RHEL 6.3

내 Nagios에 이 오류 메시지가 표시됩니다.

NRPE: Command 'check_mysql_connections' not defined

내에서는 nrpe.cfg이미 다음을 설정했습니다 allowed_host, include_dir.

allowed_hosts=xx.xx.xx.xx
dont_blame_nrpe=1
include_dir=/etc/nagios/services

내 명령은 켜져 있어/etc/nagios/services/check_mysql_connections.cfg

command[check_mysql_connections]=/usr/lib64/nagios/plugins/check_mysql_all -K connections -H myHOST -u myUSERNAME -p myPASSWORD

Nagios 서버에서 이미 파일을 설정 하고 다음과 같은 내용 을 nagios.cfg추가합니다 .commands-custom.cfg/etc/nagios/objects

define command {
command_name    check_mysql_connections
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_mysql_connections
}

그리고 /etc/nagios/servers나는mysql.cfg

## Define Host Group ##

define hostgroup {
hostgroup_name          mysql-databases
alias                   MySQL Databases
}

#######################
## Define Hosts ##

define host {
use             linux-server
host_name       bdgbnbpmydb02
alias           MySQL Database
address         xx.xx.xx.xx
hostgroups      mysql-databases
contact_groups  admins
check_command   check-host-alive
}

#######################
## Define Service ##

define service {
use                     generic-service
hostgroup_name          mysql-databases
service_description     MySQL Connections
check_command           check_mysql_connections
}

이미 NRPE프로세스를 종료하고 를 제거한 /var/run/nrpe.pid후 NRPE 프로세스를 다시 시작합니다. 또한 내 NRPE는 xinet.d에서 실행되지 않습니다.

원격 호스트에서 로컬로 명령을 실행하려고 하면 결과가 나타납니다. 그리고 다음 명령을 사용하여 nagios 서버에서 실행하려고 하면:

/usr/lib64/nagios/plugins/check_nrpe -H xx.xx.xx.xx -c check_mysql_connections

그것은 또한 결과를 제공합니다. 다른 모든 명령이 정상적으로 실행되기 때문에 무엇이 잘못되었는지 모르겠습니다.

업데이트 및 해결

오랜 세월이 흐른 뒤에야 나는 이 문제를 해결하는 방법을 떠올렸습니다.

commands-custom.cfgNagios 서버 에서 사용자 정의 명령을 편집해야 하므로 /etc/nagios/objects다음과 같습니다.

define command {
command_name         check_nrpe
command_line         $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 
}

"서비스 정의" 아래에는 다음과 같습니다.

## Define Service ##

define service {
use                     generic-service
hostgroup_name          mysql-databases
service_description     MySQL Connections
check_command           check_nrpe!check_mysql_connections
}

정리하자면, 서비스가 될 것인지 확인하는 명령어를 분리 check_nrpe하고, 다음을 사용하여 커스텀 명령어를 호출해야 합니다.check_nrpe!check_mysql_connections

참조: https://support.nagios.com/forum/viewtopic.php?f=7&t=33448

답변1

한쪽 끝에서 시작하여 뒤로 돌아가십시오.

  • "/usr/lib64/nagios/plugins/check_mysql_all -K Connections -H myHOST -u myUSERNAME -p myPASSWORD"가 명령줄에서 작동한다고 말씀하셨습니다.
  • NRPE가 다른 명령을 사용하여 해당 서버에서 작동한다고 말씀하셨습니다.
  • nagios 서버의 명령줄에서 명령이 실패했다고 말씀하셨습니다.

이는 문제가 NRPE 서버의 정의에 있음을 시사합니다. myHOST, myUSERNAME 또는 myPASSWORD에 대한 난독화된 변수에 NRPE에서 문자 그대로 해석되지 않는 문자가 포함될 수 있습니까? (이미 오타와 중복된 정의를 확인했다고 가정합니다!)

답변2

원격 클라이언트 디스크 검사를 추가하려면 다음 단계를 따르세요. mysql을 설정할 때도 이 단계를 따를 수 있습니다.

고객


vi /etc/nagios/nrpe.cfg

allowed_hosts=127.0.0.1,nagios_server_ip_here
dont_blame_nrpe=1
#checking root  partion
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 25% -c 20% -p /

섬기는 사람


파일에서 다음 /usr/local/nagios/etc/resource.cfg과 같이 제공됩니다 $USER1$=/usr/local/nagios/libexec.

따라서 터미널에서 다음 명령을 실행하십시오.

locate check_nrpe                              //find the location of check_nrpe
cp /usr/lib/nagios/plugins/check_nrpe /usr/local/nagios/libexec/
cd /usr/local/nagios/libexec/
chown nagios:nagios check_nrpe

파일을 편집합니다 /usr/local/nagios/etc/objects/commands.cfg:

define command{
    command_name    check_disk
    command_line    $USER1$/check_nrpe -H '$HOSTADDRESS$' -t 30 -c check_disk
     }

편집하다 /usr/local/nagios/etc/servers/clients.cfg:

define service {
    use                             generic-service
    host_name                       BI Server
    service_description             Disk
    check_command                   check_disk
    notifications_enabled           1
    }

서비스 다시 시작

/etc/init.d/nagios restart                          //server side
/etc/init.d/nagios-nrpe-server restart             //client side

nagios 사용자로 터미널에서 명령을 확인할 수도 있습니다.

su - nagios
cd /usr/local/nagios/libexec/
./check_nrpe -H nagios_client_ip_here -t 30 -c check_mysql
./check_nrpe -H nagios_client_ip_here -t 30 -c check_disk

답변3

일반적으로 해당 플러그인에 권한 문제가 있는 것으로 의심됩니다. nagios(또는 nrpe) 사용자로 수동 테스트를 실행해야 합니다.

하지만 이 경우에는 NRPE 명령이 정의되지도 않았기 때문에 실행까지 도달하지도 못했다고 주장하고 있습니다.

NRPE 명령 def를 포함된 파일이 아닌 nrpe.cfg에 직접 넣으십시오. (그런 다음 NRPE를 다시 시작합니다.)

몇 년 전 비슷한 문제(그러나 EPEL의 NRPE 관련)가 있었던 것을 기억합니다. 어떤 이유로 nrpe.cfg에 다른 파일이 포함되지 않습니다. 하지만 포함 파일이 작동하지 않는 이유를 결코 파악하지 못했습니다.

답변4

저도 같은 증상이 있었어요. 그래서 아마도 이것은 다른 사람의 시간을 절약해 줄 것입니다. 내 문제는 포함 디렉터리의 파일에 .cfg 확장자가 없다는 것입니다.

내 포함 디렉토리는 다음과 같습니다.include_dir=/etc/nagios/nrpe.d

머신은 NRPE v2.15를 사용하여 참조용으로 Ubuntu 14.04를 실행하고 있습니다.

관련 정보