[모니터링] Nagios(나기오스) - 호스트 모니터링 등록

이번 포스팅은 nagios에서 원격 호스트를 모니터링하는 방법에 대해 알아보겠습니다.

아직 nagios 설치가 안되신 분들은 아래 링크를 참고하여 먼저 설치를 진행해 주시기 바랍니다.

 

https://sh-safer.tistory.com/28

 

[모니터링] Nagios(나기오스) 모니터링 설치

설치 환경 VirtualBox CentOS 7.8 - (IP : 192.168.56.101) nagios-4.4.6 nagios-plugins-2.3.3 selinux 비활성화 vi /etc/selinux/config # SELINUX=enforcing SELINUX=disabled iptables 규칙 제거 작업 편의상..

sh-safer.tistory.com

실습 환경

VirtualBox
hostname : linux-1

CentOS 7.8 - (IP : 192.168.56.101)

nagios-4.4.6

nagios-plugins-2.3.3

VirtualBox
hostname : linux-2
CentOS 7.8 - (IP : 192.168.56.102)

linux-1 -> linux-2 ssh-key 등록

 

 

nagios 설정 파일 위치입니다. 대부분의 설정은 해당 경로에서 진행합니다.

/usr/local/nagios/etc/objects 

 

generic-host 템플릿 정의

우선, 원격 서버를 모니터링하기 위해서는 모니터링에 대한 기준틀을 잡아야 합니다.

nagios를 설치하면 기본으로 templates.cfg 파일에 define host로 정의가 되어있습니다.

 

define host {
    name                            generic-host            ; 호스트 템플릿의 이름
    notifications_enabled           1                       ; 호스트 알람 허용
    event_handler_enabled           1                       ; 호스트 event handler 허용
    flap_detection_enabled          1                       ; Flap 감지 허욛
    process_perf_data               0                       ; 성능 데이터 저장하지 않음
    retain_status_information       1                       ; 프로세스 재시작 간에 상태 정보 저장
    retain_nonstatus_information    0                       ; 프로세스 재시작 간에 상태 정보가 아닌 정보값 저장하지 않음
    notification_period             24x7                    ; 24시간 7일 언제나 모니터링
    register                        0                       ; 템플릿일 경우 0
}

 

참고로, "24x7"이라는 설정은 timeperiods.cfg 에 정의되어 있습니다. 주말이나, 퇴근 후에는 알람이 받기 원치 않으시면 조정을 하시면 됩니다. 일단은 그대로 두고 진행하겠습니다.

define timeperiod {

    name                    24x7
    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
}

 

linux-server 템플릿 정의

다음은 templates.cfg에 또 다른 define host 설정을 보겠습니다.

 

아래 설정에 4번 라인을 보시면 위에서 설명한 "generic-host" 템플릿이 use로 설정되어 있습니다.

즉, 위에서 설명한 generic-host 설정을 그대로 상속받아 적용한다는 것입니다,

 

일반적으로 모든 서버의 공통적인 정책은 "generic-host"에서 정의를 하고 "linux-server"에서는 좀 더 세부적인 설정을 하는 것이라고 보시면 됩니다. 

 

그럼 이이서 설정 내용을 보도록 하겠습니다

define host {

    name                            linux-server            ; 호스트 템플릿의 이름
    use                             generic-host            ; 이 템플릿은  generic-host 템플릿에서 값을 상속 받습니다
    check_period                    24x7                    ; Linux 호스트는 365일 내내 체크합니다
    check_interval                  5                       ; 체크 주기 5분
    retry_interval                  1                       ; 문제시 재시도 주기 1분
    max_check_attempts              10                      ; 문제시 재시도 체크 횟수
    check_command                   check_host_by_ssh       ; linux 호스트를 ssh를 통해 확인합니다
    notification_period             24x7                    ; 24시간 7일 언제나 모니터링
    notification_interval           120                     ; 두시간 마다 알람 재전송
    notification_options            d,u,r                   ; 호스트의 특정 상태 일때만 알람을 보냄 d = DOWN u = UNREACHABLE r = RECOVERY
    contact_groups                  admins                  ; 통보 그룹
    register                        0                       ; 템플릿일 경우 0
}
   

contact_group은 메일 또는 문자 알람 관련 설정입니다. 이 부분은 다음에 따로 다루고 이번 포스팅에서는 그냥 admin으로 두겠습니다.

 

 

ssh command 정의

위 설정에서 실질적으로 가장 중요한 부분인 check_command입니다

어떻게 원격 호스트를 모니터링하는지에 대한 설정입니다. 

우선 command.cfg 파일을 열어보겠습니다.

 

원래는 디폴트로 "check-host-alive" 커멘드가 설정이 되어있는데 저는 "check_host_by_ssh"로 변경을 했습니다

아무거나 사용하셔도 무방한데 저는 ping 체크보다는 ssh 체크를 더 선호하여 변경하여 사용하였습니다.

 

# check-host-alive
define command {

    command_name    check-host-alive
    command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
}

 

# check_host_by_ssh
define command{
        command_name    check_host_by_ssh
        command_line    $USER1$/check_ssh -H $HOSTADDRESS$
}

 

코멘트 라인을 그대로 CLI 창에서 입력하여 정상 통신되는 것을 확인합니다

[root@linux-1 objects]# /usr/local/nagios/libexec/check_ssh  -H linux-2
SSH OK - OpenSSH_7.4 (protocol 2.0) | time=0.014835s;;;0.000000;10.000000

(check_ping이나 check_ssh는 플러그인으로  /usr/local/nagios/libexec 경로에서 확인하실 수 있습니다.

각 플러그인에 대한 자세한 사용법은 공식 문서 참고를 권장드립니다.)

 

호스트 파일 생성 및 등록

이제 모니터링 대상 호스트를 등록을 하는 단계입니다,

/usr/local/nagios/etc/objects 경로에 원하시는 파일 이름으로 cfg 형식의 파일을 생성하고, 아래 예시처럼 호스를 등록합니다. 

# linux-host.cfg
define host {
    use linux-server
    host_name linux-2
}

 

그리고 nagios.cfg 메인 설정 파일에 위에서 생성한 설정 파일 경로를 등록해 줍니다

cfg_file=/usr/local/nagios/etc/objects/linux-host.cfg

모니터링 확인

네. 이제 설정은 끝났습니다.

마지막으로 nagios 재구동 한번 해주고 페이지에서 정상적으로 모니터링이 되는지 확인해 봅니다.

 

잘 등록이 되었네요

 

그럼 여기서 linux-2 서버를 한번 꺼보겠습니다.

 

예상대로 down으로 변경이 되었네요, ㅎㅎ

 

이번 포스팅은 간단하게 호스트 모니터링을 하는 방법에 대해 알아보았습니다. 감사합니다~

댓글

Designed by JB FACTORY

loading