메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

시스템 관리용 오픈 소스 패키지 톱 5: 제4편 Nagios

한빛미디어

|

2003-07-25

|

by HANBIT

31,423

저자: 『시스템 관리의 핵심, 개정3판』의 저자 아일린 프리시 / 홍상욱 역

본 기사는 가장 유용하고 널리 사용되고 있는 오픈 소스 관리 툴을 소개하는 5부작 시리즈 기사중에 네번째 기사이다. 어떠한 유닉스 운영체제를 사용하고 있든지 이와 같은 툴을 사용하면 작업이 한결 수월해진다.

2위: Nagios

5대 툴에서 2위는 Ethan Galstad가 작성한 Nagios다. Nagios는 풍부한 기능을 지닌 네트워크 감시 패키지로 전체 네트워크에서 시스템이나 자원 상태에 대한 정보를 화면에 보여 준다. 또한, 문제가 발생하면 경보 메시지를 전송하거나 행동을 취하도록 설정할 수도 있다. 여기서는 Nagios의 기능을 살펴 보고 간단히 설정하는 방법을 설명하고자 한다.

노트: Nagios는 기존에 넷세인트(Netsaint)라고 알려져 있던 패키지다. Nagios에서는 새로와진 보다 간편한 설정 파일을 사용하고 있으나 넷세인트 설정 파일도 호환된다. 또한 패키지에 포함되어 있는 convertcfg 유틸리티를 사용해서 넷세인트 설정 파일을 변환할 수도 있다.


시스템 관리의 핵심, 개정 3판

참고 도서

시스템 관리의 핵심, 개정 3판
에일린 프리시, 홍상욱 역




Nagios의 기능

Nagios는 로드 평균, 남아 있는 디스크 공간 등과 같은 시스템 성능 관련 수치, HTTP, SMTP 등과 같은 주요 서비스 사용 가능 여부, 호스트에 접근 가능한 네트워크와 호스트에서 접근 가능한 네트워크 등을 감시할 수 있다. 이 외에도 시스템 관리자가 각 호스트에서 주요 이벤트를 정의할 수 있게 해준다. 예를 들어 "너무 높은" 로드 평균치는 어느 정도나 되는지 정의하고, 너무 높을 경우 어떻게 처리할지를 지정할 수 있다는 말이다.

또한 호스트와 서비스에서 문제감지 외에도 Nagios를 사용하면 시스템 관리자가 결과적으로 무슨 일을 해야 하는지에 대한 세부 사항도 지정할 수 있다. 문제가 발생하면 다양한 통신 방법(이메일, 유닉스 메시지, 호출기 등)을 통해서 특정 인물에게 경보 메시지를 전달하게 할 수 있다. 이와 같은 방법 말고도 이벤트 처리 루틴을 정의할 수 있는데, 이벤트 처리 루틴은 문제가 발생시 실행되는 프로그램으로서 이상 상태를 발견했을 때 미리 조치를 취해서 심각한 문제를 방지하도록 할 수 있다.

Nagios에서 수집되는 정보는 자동으로 생성되는 웹 페이지로 표시된다. 웹 페이지로 구성되어 있기 때문에 시스템 관리자는 네트워크 어디에서나 네트워크 상태 정보를 확인해 볼 수 있기 때문에 아주 편리하다.

아래 [그림 1]은 Nagios 웹 페이지의 첫 화면으로서 "전략적인 개요" 화면이다.


[그림 1] Nagios 전략적인 개요 화면

화면 좌측에는 다양한 Nagios 화면으로 가는 링크가 나열되어 있다(현재 표시되어 있는 화면은 그림에 밝게 처리되어 있음). 전략적인 개요 화면에는 전체 네트워크 상태에 관한 포괄적인 통계치가 나타난다. 여기서는 20개의 호스트를 감시하고 있는데 현재 16개가 사용중이다. 3개는 다운되어 있으며, 1개는 게이트웨이 문제로 감시용 시스템에서 접속할 수 없는 상태이다. 다운되어 있는 세 호스트 중에 하나는 시스템 관리자가 알고 있는 문제로 표시되어 있다. 또한, 이 화면에는 세 가지 서비스가 "위험" 상태(아마도 서비스가 작동하지 않는다는 뜻), 두 가지 서비스가 "경고" 상태에 있는 것으로 나타나 있다.

화면에 표시된 문제 표시는 문제가 있다는 사실을 알려주는 것은 물론이고 링크로 연결되어 있어서 보다 자세한 내용을 보여주는 웹 페이지로 이동할 수 있다.

아래 [그림 2]는 Nagios 상태 개요 화면이다. 세 부분으로 나뉘어져 있는데 좌측 상단에는 감시중인 호스트에 관한 상태 정보 요약, 우측 상단에는 감시중인 서비스, 하단에는 호스트 단위 상세 정보를 보여 준다. 역시 각 항목은 링크되어 있어 보다 자세한 정보를 보여 주는 웹 페이지로 연결된다. 여기서는 호스트를 4개의 집합으로 묶어서 보고하도록 설정되어 있으며 3개의 집합은 회사에서 같은 위치에 있는 단위로 묶은 것이다. 마지막 호스트 집합은 프린터로서 감시중인 네트워크 프린터를 포함하고 있다. 시스템 관리자는 필요에 따라 호스트와 장비를 자유자재로 집합에 포함할 수 있다.


[그림 2] Nagios 상태 개요 및 프린터 집합 상세 정보

[그림 2]에서 하단 화면은 상단 화면에서 Printers 링크를 클릭했을 때 표시되는 화면이다. 각각의 프린터가 나열되어 있으며 장치 및 서비스의 현재 상태가 표시되어 있다. 예제에서는 4개의 프린터 중 하나가 다운되어 있다. (프린터 ingress)

[그림 3]은 각 호스트 (또는 장비)에 대한 상세 정보를 보여 주는 화면이다. 여기서는 호스트 leah에 관한 상세 정보를 볼 수 있다. 역시 화면은 여러 부분으로 나뉘어져 있다. 상단 좌측에는 호스트 이름과 IP 주소, 시스템 관리자가 지정한 이 호스트에 해당하는 아이콘 등이 표시된다. 여기서 아이콘을 보면 그 시스템의 운영 체제가 윈도우라는 것을 알 수 있다. 보통 아이콘은 운영 체제 유형으로 지정해준다. 우측 상단에 있는 도표는 시스템 운영 시간 및 네트워크 상태에 관한 통계치를 보여 주고 있다.


[그림 3] 호스트 leah 상세 정보 화면

운영 체제 아이콘 밑에 "Host State Information"라고 제목이 붙은 도표는 현재 호스트의 사용가능 유무를 포함해 호스트의 현재 상태 및 그 상태를 유지한 기간, 마지막 점검일이 언제인지, 점검할 때 사용된 명령어는 무엇인지, (호스트 경보와 이벤트 처리기와 같은) 다양한 파라미터 설정 정보를 보여준다.

"Host Commands"라고 제목이 붙은 박스는 시스템 관리자가 다양한 감시 관련 작업을 취할 수 있도록 해주는 링크를 포함하고 있다. 각각의 항목은 [표 1]에 요약되어 있다. 도표를 보면 Nagios가 할 수 있는 작업을 이해하는데 도움이 될 것이다.

[표 1] Nagios 호스트 정보 화면에서 할 수 있는 작업

항목 의미
Disable checks of this host 이 호스트의 감시를 중단한다.
Acknowledge this host problem 현재 발견되어 있는 문제를 인지한다. (밑에 설명)
Disable notifications for this host 호스트가 접근 불가능일 경우 경보를 보내지 않는다.
Delay next host notification 호스트가 접근 불가능이 되었을 경우 경보 메시지를 한 번 표시하지 않는다.
Schedule downtime for this host. Cancel scheduled downtime for this host 시스템이 다운되어 있을 시간을 정의하거나 취소한다. 다운되어 있을 시간에는 호스트가 접근 불가능이 되어도 문제로 취급되지 않는다.
Disable notifications for all services on this host. Enable notifications for all services on this host 호스트의 서비스에 문제가 발생했을 경우 경보 메시지를 전달하지 않는다/전달 한다.
Schedule an immediate check of all services on this host 모든 서비스를 점검해 본다. (다음 점검 시간까지 기다리지 않고 즉시 점검)
Disable checks of all services on this host
Enable checks of all services on this host
서비스 점검을 비활성화 시키거나 활성화 시킨다.
Disable event handler for this host 이 호스트에서 문제가 발생헀을 경우 이벤트 처리기를 사용하지 않도록 한다.
Disable flap detection for this host 호스트 또는 서비스 접근 여부가 갑자기 변경되는 문제가 있는지 확인하지 않도록 한다.


두 번째 메뉴 항목은 현재 문제를 인지하는데 사용된다. 여기서 인지한다는 것은 그 문제에 대해서 알고 있으며 현재 처리중이라고 표시할 뿐이다. Nagios는 현재 상태를 그렇게 표시해 주고 정상이 될 때까지 더 이상의 경보 메시지를 보내지 않는다. 여기서는 현재 상황을 설명할 수도 있는데 여러 관리자가 감시용 데이터를 살펴보고 있는 환경에서 유용하다.

도표로 표시된 상태 정보를 보는게 싫다면 그래픽으로 보여주는 기능도 있다. 예를 들어 [그림 4]는 감시중인 네트워크에 해당하는 지도 그림이다. 이 지도는 3개의 호스트 집단을 표시하고 있으며 호스트 taurus가 좌측 상단의 집단과 하단의 집단을 서로 연결해주는 게이트웨이 역할을 하고 있다.


[그림 4] Nagios 지도

훨씬 더 복잡한 네트워크 구성도 마찬가지로 표현될 수 있으며 Nagios 웹 사이트에서 예제 화면 스크린 샷을 찾아 볼 수 있다.

Nagios 설정

Nagios를 설정하는 것이 처음에는 복잡하게 보일 수도 있다. 처음 설정할 때 해야 할 작업이 꽤 있기 때문이다. 특히 아래와 같은 사항은 염두에 두어야 한다.
  • 처음 생각했던 것 보다 힘들거나 시간이 오래 걸리는 편은 아니다
  • 충분히 노력해 볼만하다
Nagios에서는 아래와 같은 설정 파일을 사용한다.
  • nagios.cfg: 주 Nagios 설정 파일로서 패키지의 전역 설정을 포함하고 있다. 패키지로 묶인 다양한 컴포넌트의 위치, 데몬의 사용자 및 그룹 환경, 로깅할 항목, 로그 파일 회전 설정, 다양한 시간 제한 및 기타 성능 관련 설정, 패키지의 고급 기능에 해당하는 추가 항목(이벤트 처리기 사용 여부, 전역 이벤트 처리기 등)에 해당하는 설정이 여기서 정의된다.
  • 객체 설정 파일: 이 설정 파일은 감시할 호스트와 서비스를 정의하는데 사용된다. 또한, 호스트 및 서비스 점검 명령어, 호스트 집단, 경보 및 경보 받을 사람, 이벤트 처리기, 특정 객체 설정 등을 정의한다.
  • cgi.cfg: Nagios 화면에 관한 설정을 포함하고 있다. 여기서는 웹 페이지 항목 및 스크립트 경로, 항목 당 아이콘 및 음성 등이 정의되어 있다. Nagios의 데이터와 명령어에 관한 엑세스를 정의하고 있기도 하다.
  • resource.cfg: 보안 용도로 사용되는 매크로를 정의하는데 사용한다. 여기에는 CGI 프로그램에서 암호를 볼 수 없게 하는 등의 설정이 포함된다.
패키지에는 모든 설정 파일의 예제 버전이 함께 제공된다. 이제부터는 설정 파일에 대한 내용을 설명할 것이다. Nagios 설정 파일은 일반적으로 /usr/local/nagios/etc에 저장된다.

nagios.cfg 파일

이 설정 파일은 전체 Nagios 감시 시스템에 적용되는 지시문을 포함하고 있다. 다음은 주요 기능을 보여주는 주석 처리된 예제 설정 파일이다.
# 파일 위치
log_file=/usr/local/nagios/var/nagios.log
cfg_file=/usr/local/nagios/etc/checkcommands.cfg
cfg_file=/usr/local/nagios/etc/misccommands.cfg
cfg_file=/usr/local/nagios/etc/hosts.cfg
resource_file=/usr/local/nagios/etc/resource.cfg
lock_file=/usr/local/nagios/var/nagios.lock
...
설정 파일의 앞부분에서는 일반 로그 파일, 서비스 점검 명령어, 알림 및 이벤트 처리기 명령어 정의 (checkcommands, misccommands) 등의 파일 위치를 정의하고 있다. 기타 cfg_file 지시문은 관리자가 사이트에서 사용중인 객체 정의 파일을 지정하는데 사용되며(적색 표시), 기타 파일 유형의 위치는 그 다음에 표시된다. 락 파일에는 nagios 프로세스의 PID가 기록되어 있다.
# 로깅 설정
log_rotation_method=d 
log_archive_path=/usr/local/nagios/var/archives
use_syslog=1
log_host_retries=1
log_event_handlers=1
...
위 지시문은 로그 회전 시기(여기서는 매일), 이전 파일을 저장할 디렉토리, 심각한 문제를 syslog에 기록할지 안할지, 이벤트 유형을 각각 로깅할지 등의 로깅 설정을 정의하고 있다.
# 전역 설정
nagios_user=nagios
nagios_group=nagios
date_format=us
admin_email=nagadmin
admin_pager=19995551212
위 라인은 nagios 데몬을 실행하는 사용자/그룹, 날짜 출력 형식(여기서는 미국 방식), 관리자 이메일 주소 등의 다양한 전역 설정을 정의하고 있다. 최종 항목은 $ADMINPAGER$ 매크로 값을 정의하며 명령어 정의에 사용될 수 있다.
# 이벤트 처리기 정의
enable_event_handlers=1
global_host_event_handler=global-event-command
global_service_event_handler=global-svc-command
이벤트 처리기 관련 설정이다. 여기에서는 필요에 따라 모든 호스트 및 서비스 문제에 해당하는 이벤트 처리기를 정의할 수 있다. 명령어는 객체 설정 파일에 정의되어 있다.
# 동시 점검 회수 및 제한 시간
max_concurrent_checks=0
service_check_timeout=60
host_check_timeout=30
event_handler_timeout=30
notification_timeout=30
...
동시에 점검할 수 있는 개수를 지정하는데 사용된다(0은 무제한). 또한, 다양한 명령어의 제한 시간을 지정하는데 사용되기도 한다(제한 시간은 초 단위).
# 유지되는 상태 정보
retain_state_information=1
retention_update_interval=60
use_retained_program_state=1
Nagios가 세션간의 호스트와 서비스에 대한 정보를 유지하도록 한다. 정보는 매 60초마다 저장되고 시설이 시작되면서 다시 읽어들인다.
# 수동 서비스 점검
accept_passive_service_checks=1
check_service_freshness=1
위 지시문은 "수동 점검"을 활성화 시켜준다. 외부 명령어로 생성되는 상태 데이터로서 Nagios에서 주기적으로 읽어들인다.
# 나중에 사용하기 위해 Nagios 데이터 저장
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
위 지시문은 분석 또는 기타 용도를 위해 Nagios 데이터를 외부에 저장할 수 있도록 해준다. 여기서 지정되는 명령어는 객체 설정 파일에 정의되어 있어야 한다. 가장 간단한 명령어는 외부 파일로 명령어의 출력을 기록해 준다. 예: echo $OUTPUT$ >> file. 이 외에도 필요에 따라 다양한 작업을 할 수 있다(예: 데이터를 RRDTool 또는 기타 데이터베이스에 기록).

패키지에 포함되어 있는 예제 nagios.cfg 파일에는 지시문이 약간 다른 순서로 나타난다.

객체 설정 파일

대부분의 Nagios 설정은 객체 파일에서 이루어진다. 이 파일에는 감시할 호스트 및 서비스, 상태 정보 해석 방식, 문제가 발생했을 때 처리 방법 등이 정의 되어 있다. 객체 설정 파일은 다음과 같은 항목을 정의하고 있다.
  • 호스트: 컴퓨터 및 기타 네트워크 장비
  • 호스트 집단: 이름 있는 호스트 집단
  • 서비스: 특정 네트워크 서비스를 제공하는 주요 데몬
  • 연락처: 문제가 발생했을 때 연락 받을 사용자
  • 연락처 집단: 이름 있는 연락처 집단
  • 시간 주기: 점검일자, 언제 알림 메시지를 보낼지 등의 대한 시간 정보 설정
  • 명령어: 모든 용도(호스트/서비스 점검, 알림, 이벤트 처리기 등)에 사용되는 명령어. Nagios에는 미리 정의된 명령어를 포함하고 있는 파일(checkcommands.cfg, misccommands.cfg)이 있다.
  • 호스트 의존성: 호스트 접근 가능성 의존성 지정. 중간 호스트가 다운되어 있을 때는 그 호스트에 의존하는 기타 호스트는 점검되지 않는다.
  • 서비스 의존성: 서비스 의존성 요구사항 지정. 서비스 호스트가 다운되어 있을 때는 의존하고 있는 기타 서비스에 관해서는 점검을 하지 않는다.
  • 호스트 승격: 호스트 문제의 심각도를 변경하는데 사용되는 조건
  • 호스트 집단 승격: 호스트 집단 문제의 심각도를 변경하는데 사용되는 조건
  • 서비스 승격: 실패한 서비스에 심각도를 변경하는데 사용되는 조건
적색으로 표시되어 있는 항목은 대부분의 Nagios 설치에 필요할 것이다. 흑색으로 표시되어 있는 것은 없어도 된다. 패키지에 포함되어 있는 Nagios 예제 파일에는 각각의 객체 유형이 별도 설정 파일에 정의되어 있다. (파일 이름은 곧 객체 유형이다.) 그러나, 원하는대로 임의로 정리해도 된다.

호스트 및 호스트 집단

여기에 정의되는 모든 항목은 템플릿으로 정의된다. 템플릿은 이름이 부여된 특성 및 설정의 집단으로 임의의 객체에 적용할 수 있다. 예를 들어 다음은 호스트의 템플릿 정의다.
define host{
; 템플릿 이름
   name                      normal  
; 템플릿이다 (실제 호스트가 아니다)
   register                       0 

; 호스트 알림 사용
   notifications_enabled          1  
; 호스트가 사용 가능한지 확인하는데 사용하는 명령어
   check_command   check-host-alive  
; 문제가 발생했을 경우 재시도 회수
   max_check_attempts            
; 문제 알림을 2시간마다 반복
   notification_interval        120  
; 점검할 시간 (기간 이름)
 notification_period         24x7  
; 다운, 접근 불가능, 복구 되었을 때 알림
   notification_options       d,u,r  
; 호스트 이벤트 처리기 사용
   event_handler_enabled          1  
; 이벤트 처리기 명령어 (다른 곳에 정의)
   event_handler            host-eh  
; 온-오프 감지 사용하지 않음
   flap_detection_enabled         0  
; 성능 데이터 저장
   process_perf_data              1 
; 재시작 할 때 상태 정보 저장 
   retain_status_information      1  
}
위 템플릿은 다양한 호스트 감시 설정을 정의하고 있다(설정 내용은 세미콜론 다음에 오는 주석에 설명되어 있음) 다음은 위 템플릿을 사용하는 호스트 정의다
define host{
; 호스트를 정의하는데 사용할 템플릿
   use                        normal  
; 속성이 위와는 달리 "name" 이 아니다
   host_name                  beulah  
; Longer description
   alias            beulah: SuSE 8.1  
; IP 주소
   address              192.168.1.44  
; 템플릿 값 변경
   max_check_attempts              8  
}
다른 호스트도 비슷한 방법으로 정의할 수 있다. 호스트 정의에도 name 속성이 포함되어 있으면 템플릿으로 사용할 수 있다. 일단 호스트를 정의하고 나면 다음과 같은 지시문으로 호스트 집단에 포함시킬 수 있다.
define hostgroup{
   hostgroup_name      bldg2
   alias               Building 2
   contact_groups      admins1
   members             beulah,callisto,ariadne,leah,lovelace,valley
}
위 지시문은 6개의 호스트를 포함하고 있는 bldg2인 호스트 집단을 정의한다(6개의 호스트는 define host문으로 정의되어 있다). contact_groups 속성은 알림 메시지를 전달할 사람을 지정하는데 사용되는데 다른 장소에 정의되어 있다.

호스트 집단은 임의의 개수를 정의해서 사용할 수 있다. 호스트는 여러 호스트 집단에 포함될 수 있으며 호스트 집단 자체도 포함할 수 있다.

서비스

다음은 서비스 템플릿과 서비스 정의 예제이다.
define service{  ; 모든 서비스 디폴트 정의
   name                  generic
   register                    0
; 30분마다 서비스 점검
   normal_check_interval      30  
; 문제가 발생했을 경우 3분에 한번씩 5번까지 다시 점검한다
   retry_check_interval        3  
   max_check_attempts          5
   event_handler_enabled       1
   check_period             24x7
; 2시간에 한 번씩 알린다
   notification_interval     120  
   notification_period     6to22
; 심각한 문제와 복구시에 알린다
   notification_options      c,r  
   notifications_enabled       1
   contact_groups         admins
} 

define service{  ; SMTP 서비스 정의
   use                    generic
   name              generic-smtp
   register                     0

   service_description Check SMTP
   check_command       check_smtp
   event_handler          eh_smtp
   contact_groups      mailadmins
}

define service{  ; 감시할 서비스 정의
   use               generic-SMTP
; 이 호스트 집단에 있는 모든 호스트에 대해서 SMTP 감시
   host_groups          mailhosts  
}
첫 번째 탬플릿(generic)은 특정 셋팅을 정의한다. 이 셋팅은 다양한 서비스 타입에 적용될 수 있다. 두 번째 템플릿(generic-SMTP)은 시작점으로 첫 번째 템플릿을 사용하고 일반적인 SMTP 모니터링 서비스를 생성하기 위해 추가한다. 특히 이는 SMTP 모니터링 서비스에 적용할 수 있는 점검 명령, 이벤트 핸들러, 연락처 집단을 정의한다. 마지막 정의 서비스 절은 mailhosts 호스트 그룹 내에 있는 모든 호스트에 대해 SMTP 모니터링을 실시한다.

연락처 및 연락처 집단

아래는 연락처 및 연락처 집단을 정의하는 두 절을 나타낸다.
define service{  ; 모든 서비스 디폴트 정의
   contact_name                    nagadmin
   alias                           Nagios Admin
; 서비스 문제를 알려줄 때
   service_notification_period     6to22  
; 호스트 문제를 알려줄 때
   host_notification_period        24x7   
; 심각한 문제와 복구에 대한 통보
   service_notification_options    c,r    
; 호스트 다운과 복구에 대한 통보
   host_notification_options       d,r    
   service_notification_commands   notify-by-email
   host_notification_commands      host-notify-by-epager
   email                           nagios-admins@ahania.com
   pager                           $ADMINPAGER$
}

define contactgroup{  ; 연락처그룹 정의
   contactgroup_name               mailadmins
   alias                           Mail Admins
   members                         mailadm,chavez,catfemme
}
첫번째 부분은 이름이 nagadmin인 연락처를 정의한다. 어떤 경우에 연락처에 연락을 할지, 얼마나 자주 알릴지도 정의하고 있다. 알림 메시지를 작성하는데 사용되는 명령어 및 파라미터도 정의되어 있다.

기간

기간 정의는 간단하다. 다음은 지금까지 사용된 기간 정의 예제다.
define timeperiod{
   timeperiod_name 24x7
   alias           24 Hours A Day, 7 Days A Week
   sunday          00:00-24:00
   monday          00:00-24:00
   tuesday         00:00-24:00
   wednesday       00:00-24:00
   thursday        00:00-24:00
   friday          00:00-24:00
   saturday        00:00-24:00
}

define timeperiod{
   timeperiod_name 6to22
   alias           Weekdays, 6 AM to 10 PM
   Monday          06:00-22:00
   Tuesday         06:00-22:00
   Wednesday       06:00-22:00
   Thursday        06:00-22:00
   Friday          06:00-22:00
}
여기에서 필요없는 날짜는 기술하지 않아도 된다.

명령어

앞에 객체 정의에서 사용된 명령어도 정의되어 있어야 한다. 예를 들어 다음은 SMTP 서비스 점검 명령어 정의다.
define command{
   command_name  check_smtp
   command_line  $USER1$/check_smtp -H $HOSTADDRESS$
}
위 명령어는 $USER1$ (resource.cfg 파일에 정의되어 있음 - 아래 참조) 매크로로 정의되어 있는 디렉토리 안에 check_smtp 스크립트를 실행한다. 이 매크로에는 보통 Nagios 플러그인 디렉토리가 정의되어 있다. 위 명령어는 -H 옵션, 점검할 호스트 IP 주소로 실행된다(후자는 $HOSTADDRESS$ 매크로로부터 추출됨). 플러그인의 사용 방법은 --help 옵션을 사용해서 실행해 보면 알 수 있다. Nagios에 추가 플러그인을 설치해서 기능을 확장 시켜 줄 수도 있다. 자세한 내용은 문서를 참조하기 바란다.

이벤트 처리기도 다음 예제와 비슷한 방법으로 정의할 수 있다.
define command{
   command_name  eh_smtp
   command_line  /usr/local/nagios/eh/fix_mail $HOSTADDRESS$ $STATETYPE$
}
위에서는 eh_smtp 명령어를 정의했다. 실행할 프로그램의 완전 경로를 지정하고 있으며 호스트의 IP 주소, $STATETYPE$ 매크로 값 등을 파라미터로 지정했다. $STATETYPE$ 매크로는 심각한 문제일 경우 HARD, 경고일 경우 SOFT로 지정된다.

다음은 알림에 사용되는 명령어 정의다(여기서는 읽기 편하게 하기 위해서 command_line 설정을 여러 줄에 표기했다).
define command{
   command_name  notify-by-email
   command_line  /usr/bin/printf "%b" "***** Nagios 1.0 *****\n\n
                 Notification Type: $NOTIFICATIONTYPE$\n\n
                 Service: $SERVICEDESC$\n
                 Host: $HOSTALIAS$\n
                 Address: $HOSTADDRESS$\n
                 State: $SERVICESTATE$\n\n
                 Date/Time: $DATETIME$\n\n
                 Additional Info:\n\n$OUTPUT$" | 
     /usr/bin/mail -s "** $NOTIFICATIONTYPE$
     alert - $HOSTALIAS$/$SERVICEDESC$ 
                 is $SERVICESTATE$ **" $CONTACTEMAIL$
}
위 명령어는 printf와 다양한 내장 Nagios 매크로를 사용해서 간단한 이메일 메시지를 작성한다. 그리고 나서 메시지를 mail 명령어를 사용해 $CONTACTEMAIL$ 매크로로 정의되어 있는 연락처로 메일로 보낸다. 이 매크로에는 알림 메시지를 보내고자 하는 호스트 또는 서비스에 해당하는 email 속성을 포함하고 있다.

cgi.cfg 파일

cgi.cfg 설정 파일은 Nagios 시스템에서 서로 다른 다양한 기능을 한다. 가장 중요한 기능으로는 인증으로서 Nagios와 데이터를 특정 인물로 제한해주는 것이다. 다음은 인증 관련 지시문의 예제이다.
use_authentication=1
authorized_for_configuration_information=netsaintadmin,root,chavez
authorized_for_all_services=netsaintadmin,root,chavez,maresca
첫번째 엔트리는 엑세스 제어 메커니즘을 사용하도록 한다. 다음 두 엔트리는 Nagios 설정 정보 및 서비스 상태 정보를 볼 수 있는 사용자를 지정하고 있다. 또한, 모든 사용자는 아파치 htpasswd 인증 방식을 통해서 웹 서버에 인증되어야 한다.

이 설정 파일은 아이콘 기반 상태 표시 설정도 포함하고 있다:
hostextinfo[janine]=;redhat.gif;;redhat.gd2;;168,36;,,;
hostextinfo[ishtar]=;apple.gif;;apple.gd2;;125,36;,,;
위 엔트리에는 janine, ishtar 등의 호스트에 해당하는 속성이 지정되어 있다. 예제에서 파일명은 상태 도표에서 사용되는 이미지 파일(GIF 형식 - 그림 3 참조), 상태 지도(GD2 형식) 등을 지정하고 숫자는 2D 상태 지도에서 장치의 위치(예를 들어 x, y 좌표)를 정의한다([그림 4]는 예제 상태 지도 화면을 보여줌).

resource.cfg 파일

마지막으로 살펴볼 설정 파일은 resource.cfg 파일이다. 이 파일은 특정 사이트에만 적용되는 매크로 정의에 사용되는데 보통 $USER1$에서 $USER32$로 이름이 붙여져 있다.
# $USER1$ = 플러그인 디렉토리 경로
$USER1$=/usr/lib/nagiosplugins    
...

# 사용자명 및 암호 정의
$USER3$=administrator
$USER4$=somepassword
첫번째 매크로는 Nagios 플러그인 디렉토리 경로를 정의하고 있다. 이 매크로는 예제 설정 파일에서 그대로 사용된다. 기타 두 매크로는 사용자명과 암호를 저장하는데 사용되었다. 위 항목을 명령어 정의에서 사용해서 보다 Nagios를 안전하게 만들 수 있다. resource.cfg 파일을 root 이외의 사용자가 접근할 수 없게 해도 CGI 프로그램은 정상적으로 작동된다.

Nagios 설정 점검

Nagios 설정이 꽤 복잡한 편이기 때문에 프로그램을 실행하기 전에 설정 파일을 점검할 수 있는 명령어가 포함되어 있다. 다음은 활용 예제다.
# cd /usr/local/nagios/etc
# /usr/local/nagios/bin/nagios -v nagios.cfg
위 명령어는 nagios.cfg를 주요 설정 파일로 사용하고 있는 Nagios 설정을 점검한다.

리소스

Nagios 설치, 감시 초기화 및 관리 등에 대해서 보다 자세한 정보를 알고 싶다면 다음 리소스를 참고하기 바란다. 이 기사를 재미 있게 읽었고 무료 ESA3 관련자료를 받아 보고 싶다면 여기에 등록하면 된다.

이 외에도 아일린의 『Essential System Administration Pocket Reference』도 도움이 될 것이다.
아일린 프리시는 VMS, 유닉스, 맥킨토시, 윈도우 시스템 등의 다양한 시스템을 20여년간 관리해 왔다. 이 기사를 재미있게 읽어보았고 무료 ESA3 전단지를 받아 보고 싶다면 http://www.aeleen.com/esa3_news.htm에서 등록하면 된다. 또한, 최근에 출간된 『System Administration Pocket Reference도 훌륭한 참고 서적이다.
TAG :
댓글 입력
자료실

최근 본 상품0