참고 도서 |
[그림 1] Nagios 전략적인 개요 화면
[그림 2] Nagios 상태 개요 및 프린터 집합 상세 정보
[그림 3] 호스트 leah 상세 정보 화면
항목 | 의미 |
---|---|
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 | 호스트 또는 서비스 접근 여부가 갑자기 변경되는 문제가 있는지 확인하지 않도록 한다. |
[그림 4] 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=1Nagios가 세션간의 호스트와 서비스에 대한 정보를 유지하도록 한다. 정보는 매 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 또는 기타 데이터베이스에 기록).
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 }여기에서 필요없는 날짜는 기술하지 않아도 된다.
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로 지정된다.
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 속성을 포함하고 있다.
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]는 예제 상태 지도 화면을 보여줌).
# $USER1$ = 플러그인 디렉토리 경로 $USER1$=/usr/lib/nagiosplugins ... # 사용자명 및 암호 정의 $USER3$=administrator $USER4$=somepassword첫번째 매크로는 Nagios 플러그인 디렉토리 경로를 정의하고 있다. 이 매크로는 예제 설정 파일에서 그대로 사용된다. 기타 두 매크로는 사용자명과 암호를 저장하는데 사용되었다. 위 항목을 명령어 정의에서 사용해서 보다 Nagios를 안전하게 만들 수 있다. resource.cfg 파일을 root 이외의 사용자가 접근할 수 없게 해도 CGI 프로그램은 정상적으로 작동된다.
# cd /usr/local/nagios/etc # /usr/local/nagios/bin/nagios -v nagios.cfg위 명령어는 nagios.cfg를 주요 설정 파일로 사용하고 있는 Nagios 설정을 점검한다.
이전 글 : 네트워크 스트림(NetworkStream)
다음 글 : StringBuilder 입문
최신 콘텐츠