
이전 글 'Nagios 3.0 점프스타트 가이드'에서는 Red Hat 서버에 Nagios 3.0을 설치하고 기본 설정하는 방법을 다뤘습니다. 이번 연재 3개의 챕터에서는 원격 리눅스 호스트와 그 위에서 실행 중인 다양한 서비스를 모니터링하는 방법을 자세히 살펴보겠습니다. Nagios 관련 다른 글들도 함께 참고하시면 큰 도움이 됩니다.
1부. 개요
Nagios가 원격 리눅스 호스트의 특정 서비스(예: 디스크 사용량)를 모니터링할 때, 높은 수준에서 보면 다음 세 단계의 동작이 일어납니다.
- Nagios는 nagios-server에서 check_nrpe 명령어를 실행하고, 원격 호스트의 디스크 사용량을 check_disk 명령어로 확인하도록 요청합니다.
- nagios-server의 check_nrpe는 원격 호스트의 NRPE 데몬에 접속하여 해당 호스트에서 check_disk를 실행하도록 요청합니다.
- check_disk 명령의 결과는 NRPE 데몬을 통해 다시 nagios-server의 check_nrpe로 반환됩니다.
이 흐름을 요약하면 다음과 같습니다.
Nagios Server (check_nrpe) —–> 원격 호스트 (NRPE 데몬) —–> check_disk Nagios Server (check_nrpe) <—– 원격 호스트 (NRPE 데몬) <—– check_disk (디스크 사용량 반환)
2부. 원격 호스트에 Nagios 플러그인과 NRPE 설치하기 (6단계)
- Nagios 플러그인 및 NRPE 애드온 다운로드
- nagios 계정 생성
- Nagios 플러그인 설치
- NRPE 설치
- NRPE를 데몬 형태로 구동 설정
- /usr/local/nagios/etc/nrpe.cfg 수정
1단계. Nagios 플러그인과 NRPE 애드온 다운로드
Nagios.org에서 아래 파일들을 내려받아 /home/downloads 디렉터리로 옮깁니다.
- nagios-plugins-1.4.11.tar.gz
- nrpe-2.12.tar.gz
2단계. nagios 계정 생성
[remotehost]# useradd nagios [remotehost]# passwd nagios
3단계. Nagios 플러그인 설치
[remotehost]# cd /home/downloads [remotehost]# tar xvfz nagios-plugins-1.4.11.tar.gz [remotehost]# cd nagios-plugins-1.4.11 [remotehost]# export LDFLAGS=-ldl [remotehost]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround [remotehost]# make [remotehost]# make install [remotehost]# chown nagios.nagios /usr/local/nagios [remotehost]# chown -R nagios.nagios /usr/local/nagios/libexec/
참고: Red Hat 환경에서 ./configure 명령이 "checking for redhat spopen problem..." 메시지와 함께 멈추는 경우가 있습니다. 이 문제를 우회하려면 configure 명령에 --enable-redhat-pthread-workaround 옵션을 추가하세요.
4단계. NRPE 설치
[remotehost]# cd /home/downloads [remotehost]# tar xvfz nrpe-2.12.tar.gz [remotehost]# cd nrpe-2.12 [remotehost]# ./configure [remotehost]# make all [remotehost]# make install-plugin [remotehost]# make install-daemon [remotehost]# make install-daemon-config [remotehost]# make install-xinetd
5단계. NRPE를 데몬(xinetd)으로 구동 설정
- /etc/xinetd.d/nrpe 파일을 열어 only_from 항목에 Nagios 모니터링 서버의 IP 주소를 추가합니다. 127.0.0.1과 모니터링 서버 IP 사이에는 반드시 공백이 있어야 합니다. (이 예제에서 모니터링 서버 IP는 192.168.1.2입니다.)
only_from = 127.0.0.1 192.168.1.2
- /etc/services 파일 맨 끝에 다음 내용을 추가합니다.
nrpe 5666/tcp # NRPE
- xinetd 서비스를 재시작합니다.
[remotehost]# service xinetd restart
- NRPE가 정상적으로 리스닝 중인지 확인합니다.
[remotehost]# netstat -at | grep nrpe tcp 0 0 *:nrpe *:* LISTEN
- NRPE가 제대로 작동하는지 최종 점검합니다.
[remotehost]# /usr/local/nagios/libexec/check_nrpe -H localhost NRPE v2.12
6단계. /usr/local/nagios/etc/nrpe.cfg 수정
원격 호스트에 위치한 nrpe.cfg 파일에는 해당 호스트의 서비스를 점검하는 데 필요한 명령들이 정의되어 있습니다. 기본값으로 몇 가지 표준 체크 명령이 샘플로 포함되어 있는데, 그중 check_users와 check_load는 아래와 같습니다.
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
모든 체크 명령에서 "-w"는 Warning(경고), "-c"는 Critical(심각) 임계값을 의미합니다. 예를 들어 아래의 check_disk 명령에서 사용 가능한 디스크 공간이 20% 이하로 떨어지면 경고 메시지를, 10% 이하로 떨어지면 심각(Critical) 메시지를 발송합니다. 운영 환경에 맞게 -w와 -c 값을 조정하세요.
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
팁: nrpe.cfg에 정의된 명령은 원격 호스트의 명령줄에서 직접 실행해 결과를 미리 확인할 수 있습니다. 예를 들어 check_disk 명령을 직접 실행하면 다음과 같은 출력을 볼 수 있습니다.
[remotehost]# /usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 DISK CRITICAL - free space: / 6420 MB (10% inode=98%);| /=55032MB;51792;58266;0;64741
위 예제에서 /dev/hda1의 여유 디스크 공간이 10%밖에 되지 않기 때문에 CRITICAL 메시지가 표시되며, 이 결과가 Nagios 서버로 전달됩니다.
3부. Nagios 모니터링 서버 측 설정 (4단계)
- NRPE 애드온 다운로드
- check_nrpe 설치
- 원격 호스트의 호스트·서비스 정의 생성
- Nagios 서비스 재시작
1단계. NRPE 애드온 다운로드
Nagios.org에서 nrpe-2.12.tar.gz를 내려받아 /home/downloads 디렉터리로 옮깁니다.
2단계. 모니터링 서버에 check_nrpe 설치
[nagios-server]# tar xvfz nrpe-2.12.tar.gz [nagios-server]# cd nrpe-2.12 [nagios-server]# ./configure [nagios-server]# make all [nagios-server]# make install-plugin
./configure 실행 시 아래와 같은 설정 요약이 출력됩니다.
*** Configuration summary for nrpe 2.12 05-31-2008 ***: General Options: ----------------- NRPE port: 5666 NRPE user: nagios NRPE group: nagios Nagios user: nagios Nagios group: nagios
참고: ./configure 실행 중 "checking for SSL headers... configure: error: Cannot find ssl headers" 오류가 발생한다면, 아래와 같이 openssl-devel을 설치한 후 configure를 다시 실행하면 해결됩니다.
[nagios-server]# rpm -ivh openssl-devel-0.9.7a-43.16.i386.rpm krb5-devel-1.3.4-47.i386.rpm zlib-devel-1.2.1.2-1.2.i386.rpm e2fsprogs-devel-1.35-12.5.el4.i386.rpm warning: openssl-devel-0.9.7a-43.16.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing… ########################################### [100%] 1:e2fsprogs-devel ########################################### [ 25%] 2:krb5-devel ########################################### [ 50%] 3:zlib-devel ########################################### [ 75%] 4:openssl-devel ########################################### [100%]
모니터링 서버가 원격 호스트와 통신할 수 있는지 확인합니다.
[nagios-server]# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.3 NRPE v2.12
참고: 192.168.1.3은 2부에서 설명한 대로 NRPE와 Nagios 플러그인이 설치된 원격 호스트의 IP 주소입니다.
3단계. 원격 호스트의 호스트·서비스 정의 생성
해당 원격 호스트를 위한 호스트 및 서비스 정의를 담을 새 설정 파일 /usr/local/nagios/etc/objects/remotehost.cfg를 생성합니다. 기존의 localhost.cfg를 remotehost.cfg로 복사한 뒤 필요에 맞게 수정하는 방식을 추천합니다.
호스트 정의 샘플:
define host{
use linux-server
host_name remotehost
alias Remote Host
address 192.168.1.3
contact_groups admins
}
서비스 정의 샘플:
define service{
use generic-service
service_description Root Partition
contact_groups admins
check_command check_nrpe!check_disk
}
참고: 위 예제의 remotehost는 실제 운영 환경의 원격 호스트 이름으로 교체해서 사용하세요.
4단계. Nagios 서비스 재시작
아래 명령으로 Nagios를 재시작한 후, 웹 인터페이스(https://nagios-server/nagios/)에 로그인하여 새로 추가한 원격 리눅스 서버의 모니터링 상태를 확인합니다.
[nagios-server]# service nagios reload
추천 Nagios 서적
Nagios Core 3 eBook – 필자는 수년간 Nagios를 사용해 왔습니다. 모든 시스템을 Nagios가 감시하고 잠재적인 문제가 심각해지기 전에 미리 알려주기 때문에 안심하고 잘 수 있습니다. Nagios를 깊이 있게 이해하고 싶다면 Nagios Core 3 eBook을 읽어볼 것을 강력히 추천합니다. Nagios는 무료 소프트웨어이므로, 책 몇 달러의 비용은 가장 값진 투자 중 하나가 될 수 있습니다.
함께 읽으면 좋은 Nagios 관련 글
- Nagios로 네트워크 스위치와 포트 모니터링하는 방법
- 리눅스의 Nagios로 원격 윈도우 머신 모니터링하는 방법
- Nagios 3 점프스타트 가이드 – 개요, 설치 및 설정