Nagios에 Windows 호스트 추가하기: 단계별 완벽 가이드
이 글에서는 Nagios를 활용해 Windows 머신의 CPU 부하, 디스크 사용량, 메모리 사용량, 서비스 상태 등 '내부(private)' 서비스를 모니터링하는 방법을 소개합니다. 이를 위해서는 대상 Windows 머신에 NSClient++ 애드온을 설치해야 합니다. 이 애드온은 Windows 머신과 Nagios 사이에서 프록시 역할을 수행하며, check_nt 플러그인과 통신하면서 실제 서비스 정보를 수집합니다. 이전에 소개한 Nagios 설치 가이드대로 진행하셨다면, check_nt 플러그인은 이미 Nagios 모니터링 서버에 설치되어 있을 것입니다.
본 가이드는 아래 문서들을 따라 Nagios 서버가 이미 설치·구성되어 있다고 가정합니다.
- RHEL/CentOS 6.x/5.x 및 Fedora 19/18/17에 Nagios 4.0.1 설치 방법
- Nagios 모니터링 서버에 Linux 호스트 추가 방법
Windows 머신 모니터링 절차 개요
Windows 머신을 모니터링하려면 다음 단계를 순서대로 진행해야 합니다.
- Windows 머신에 NSClient++ 애드온 설치
- Nagios 서버에서 Windows 머신 모니터링 설정 구성
- 새로운 호스트와 서비스 정의 추가
- Nagios 서비스 재시작
사전에 완료된 설정 항목
가이드를 쉽게 따라갈 수 있도록, Nagios 설치 과정에서 일부 설정이 이미 완료되어 있습니다.
- check_nt 명령 정의가 command.cfg 파일에 이미 추가되어 있습니다. 이 명령은 check_nt 플러그인이 Windows 서비스를 모니터링할 때 사용됩니다.
- Windows 서버용 호스트 템플릿이 templates.cfg 파일에 이미 생성되어 있습니다. 이 템플릿 덕분에 새로운 Windows 호스트 정의를 손쉽게 추가할 수 있습니다.
위 두 파일(command.cfg, templates.cfg)은 /usr/local/nagios/etc/objects/ 디렉터리에서 찾을 수 있습니다. 필요에 따라 자유롭게 수정하고 정의를 추가할 수 있지만, 이 글의 지침을 그대로 따르기만 해도 20분 이내에 Windows 호스트 모니터링을 성공적으로 시작할 수 있습니다.
1단계: Windows 머신에 NSClient++ 에이전트 설치
아래 절차에 따라 원격 Windows 호스트에 NSClient++ 에이전트를 설치하세요. 먼저 최신 안정 버전인 NSClient++ 0.3.1 소스 파일을 아래 링크에서 다운로드합니다.
- https://sourceforge.net/projects/nscplus/
다운로드가 완료되면 NSClient++ 파일의 압축을 새 C:\NSClient++ 디렉터리에 풀어줍니다.
이후 시작 화면 → 실행(Run) → 'cmd' 입력 후 Enter 키를 눌러 MS-DOS 명령 프롬프트를 열고, 해당 디렉터리로 이동합니다.
C:\NSClient++
다음 명령으로 시스템에 NSClient++ 서비스를 등록합니다.
nsclient++ /install
마지막으로 아래 명령으로 NSClient++ systray를 설치합니다.
nsclient++ SysTray
Windows 서비스 관리자를 연 뒤 NSClient 항목을 마우스 오른쪽 버튼으로 클릭하고 속성(Properties) → '로그온(Log On)' 탭으로 이동합니다. 여기서 "데스크톱과 상호 작용 허용(Allow service to interact with the desktop)" 체크박스를 선택합니다. 아직 체크되어 있지 않다면 반드시 활성화해 주세요.
C:\NSClient++ 디렉터리에 위치한 NSC.INI 파일을 열어 '[modules]' 섹션에 정의된 모듈 중 CheckWMI.dll과 RemoteConfiguration.dll을 제외한 나머지 모듈의 주석(#)을 제거하여 활성화합니다.
[modules]
FileLogger.dll
CheckSystem.dll
CheckDisk.dll
NSClientListener.dll
NRPEListener.dll
SysTray.dll
CheckEventLog.dll
CheckHelpers.dll
;CheckWMI.dll
;RemoteConfiguration.dll
'[Settings]' 섹션에서 "allowed_hosts"의 주석을 제거하고, Nagios 모니터링 서버의 IP 주소를 지정합니다. 값을 비워두면 모든 호스트의 접속을 허용하게 되므로, 보안상 실제 서버 IP를 명시하는 것이 좋습니다.
[Settings]
allowed_hosts=172.16.27.41
'[NSClient]' 섹션에서 "port"의 주석을 제거하고 기본 포트 '12489'로 설정합니다. 또한 Windows 방화벽에서 '12489' 포트가 열려 있는지 반드시 확인하세요.
[NSClient]
port=12489
모든 설정이 끝나면 아래 명령으로 NSClient++ 서비스를 시작합니다.
nsclient++ /start
설치와 설정이 올바르게 완료되었다면, 시스템 트레이에 노란색 원 안에 검은색 'M'자가 표시된 새 아이콘이 나타납니다.
2단계: Nagios 서버 설정 및 Windows 호스트 추가
이제 Nagios 서버에 로그인하여 새로운 Windows 머신을 모니터링할 수 있도록 설정 파일에 오브젝트 정의(object definitions)를 추가합니다. Vi 편집기로 windows.cfg 파일을 엽니다.
[root@tecmint]# vi /usr/local/nagios/etc/objects/windows.cfg
파일에는 샘플 Windows 호스트 정의가 이미 포함되어 있습니다. host_name, alias, address 필드만 여러분의 Windows 머신 환경에 맞게 수정하면 됩니다.
define host{
use windows-server ; 템플릿에서 기본값 상속
host_name winserver ; 이 호스트에 부여할 이름
alias My Windows Server ; 호스트의 상세 설명
address 172.31.41.53 ; 호스트의 IP 주소
}아래와 같은 서비스 정의들이 windows.cfg 파일에 이미 추가되어 활성화되어 있습니다. 추가로 모니터링할 서비스가 있다면 같은 파일에 정의를 더하기만 하면 됩니다. 단, 모든 서비스 정의의 host_name 값은 앞 단계에서 지정한 host_name과 동일하게 맞춰야 합니다.
# NSClient++ 버전 확인
define service{
use generic-service
host_name winserver
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}
# 서버 업타임 모니터링
define service{
use generic-service
host_name winserver
service_description Uptime
check_command check_nt!UPTIME
}
# CPU 사용률 모니터링 - 5분 평균 부하 80% 이상이면 WARNING, 90% 이상이면 CRITICAL 알림
define service{
use generic-service
host_name winserver
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}
# 메모리 사용량 모니터링 - 80% 이상이면 WARNING, 90% 이상이면 CRITICAL 알림
define service{
use generic-service
host_name winserver
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90
}
# C:\ 드라이브 사용량 모니터링 - 80% 이상이면 WARNING, 90% 이상이면 CRITICAL 알림
define service{
use generic-service
host_name winserver
service_description C:\ Drive Space
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
# W3SVC(IIS) 서비스 상태 모니터링 - 서비스 중지 시 CRITICAL 알림
define service{
use generic-service
host_name winserver
service_description W3SVC
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}
# Explorer.exe 프로세스 모니터링 - 프로세스 미실행 시 CRITICAL 알림
define service{
use generic-service
host_name winserver
service_description Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
}
마지막으로 /usr/local/nagios/etc/nagios.cfg 파일을 열어 windows.cfg 항목의 주석을 제거하여 활성화합니다.
[root@tecmint]# vi /usr/local/nagios/etc/nagios.cfg
# Definitions for monitoring a Windows machine
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
이제 Nagios 설정 파일에 오류가 없는지 검증합니다.
[root@tecmint]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
검증 과정에서 오류 메시지가 출력되면, 오류가 더 이상 나타나지 않을 때까지 수정한 후 진행하세요. 모든 오류를 해결했다면 Nagios 서비스를 재시작합니다.
[root@tecmint]# service nagios restart
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.
이것으로 설정이 완료되었습니다. 웹 브라우저에서 "https://서버-IP주소/nagios" 또는 "https://FQDN/nagios"에 접속한 뒤, 사용자 이름 "nagiosadmin"과 비밀번호를 입력하세요. 원격 Windows 호스트가 정상적으로 추가되어 모니터링되고 있는지 확인할 수 있습니다.
마무리
여기까지가 Windows 호스트를 Nagios에 추가하는 전체 과정입니다. 다음 글에서는 프린터(Printer)와 네트워크 스위치(Switch) 장비를 Nagios 모니터링 서버에 추가하는 방법을 다룰 예정입니다. Windows 호스트 추가 과정에서 어려움을 겪으셨다면 댓글로 질문을 남겨주세요. 더 유용한 기술 아티클로 다시 찾아오겠습니다!