웹사이트 검색

Ubuntu 12.10에서 Python으로 Nagios 플러그인을 만드는 방법


소개

Python은 기본적으로 Linux에서 사용할 수 있는 널리 사용되는 명령 프로세서입니다.

이전에 Ubuntu 12.10 x64에 Nagios 모니터링 서버를 설치하는 방법을 다루었습니다.

이번에는 이 아이디어를 확장하여 Python을 사용하여 Nagios 플러그인을 만들 것입니다.

이 플러그인은 클라이언트 VPS에서 실행되며 NRPE를 통해 실행됩니다.

1단계 - 클라이언트 VPS에 NRPE 설치

apt-get install -y python nagios-nrpe-server
useradd nrpe && update-rc.d nagios-nrpe-server defaults

2단계 - Python 스크립트 만들기

플러그인을 다른 Nagios 플러그인과 동일한 디렉토리에 유지하는 것이 좋습니다(예: /usr/lib/nagios/plugins/).

이 예에서는 셸에서 "df"를 호출하여 현재 디스크 사용량을 확인하고 85% 이상이 사용되면 경고를 표시하는 스크립트를 생성합니다.

#!/usr/bin/python
import os, sys
used_space=os.popen("df -h / | grep -v Filesystem | awk '{print $5}'").readline().strip()

if used_space < "85%":
        print "OK - %s of disk space used." % used_space
        sys.exit(0)
elif used_space == "85%":
        print "WARNING - %s of disk space used." % used_space
        sys.exit(1)
elif used_space > "85%":
        print "CRITICAL - %s of disk space used." % used_space
        sys.exit(2)
else:
        print "UKNOWN - %s of disk space used." % used_space
        sys.exit(3)

이 스크립트를 /usr/lib/nagios/plugins/usedspace.py에 저장하고 실행 가능하게 만듭니다.

chmod +x /usr/lib/nagios/plugins/usedspace.py

전체 Nagios NRPE 플러그인은 종료 코드를 사용하여 경고를 트리거하는 것으로 귀결됩니다.

스크립트에 논리 수준을 도입하고 경고(OK, WARNING, CRITICAL 또는 UNKNOWN인지 여부)를 트리거하려는 경우 종료 코드를 지정합니다.

다음 Nagios 종료 코드를 참조하십시오.

Nagios 종료 코드

Exit Code Status
0 OK
1 WARNING
2 CRITICAL
3 UNKNOWN

3단계 - 클라이언트 호스트의 NRPE 구성에 스크립트 추가

원본 /etc/nagios/nrpe.cfg를 삭제하고 다음 행을 추가하십시오.

log_facility=daemon
pid_file=/var/run/nagios/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=198.211.117.251
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nagios/nrpe.d/

command[usedspace_python]=/usr/lib/nagios/plugins/usedspace.py

여기서 198.211.117.251은 이전 기사의 모니터링 서버입니다. 이를 자신의 값으로 변경하십시오.

Nagios NRPE 서비스를 다시 시작해야 합니다.

service nagios-nrpe-server restart

4단계 - Nagios 모니터링 서버에서 Nagios 검사에 새 명령 추가

/etc/nagios/objects/commands.cfg에 새 명령 정의

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

보시다시피, NRPE를 사용하여 포트 5666에 대한 TCP 연결을 만들고 해당 원격 호스트의 /etc/nagios/nrpe.cfg에서 정의한 usedspace_python 명령을 실행합니다.

클라이언트 VPS에 대한 Nagios 구성 파일에 이 검사를 추가하십시오.

예를 들어 UbuntuDroplet이라는 서버를 모니터링하고 /etc/nagios/servers/UbuntuDroplet.cfg를 편집합니다.

define service {
        use                             generic-service
        host_name                       UbuntuDroplet
        service_description             Custom Disk Checker In Python
        check_command                   usedspace_python
        }

Nagios를 다시 시작하십시오.

service nagios restart

새 검사가 작동하는지 확인합니다.