nagios - (시스템 및 네트워크 모니터링) 리눅스 서버 모니터링 설정하기(모니터링측)





    저번시간에 원격지에서 진행하였으니 이번시간에는 모니터링 측에서 진행하다록 하겠습니다.




    APM 설치 관련글 :


    APM 컴파일 설치방법 - http://server-talk.tistory.com/59


    APM YUM 설치방법 - http://server-talk.tistory.com/174




    관련글 :


    오픈소스 서버 모니터링 툴 - http://server-talk.tistory.com/120


    Nagios 구성파일 알아보기 - http://server-talk.tistory.com/193




    이전글 : 

    nagios - (시스템 및 네트워크 모니터링) 설치하기 - http://server-talk.tistory.com/157


    nagios - (시스템 및 네트워크 모니터링) 로컬호스트 모니터링 설정하기 - http://server-talk.tistory.com/192


    nagios - (시스템 및 네트워크 모니터링) 리눅스 서버 모니터링 설정하기(원격지측) - http://server-talk.tistory.com/180






     원격지측 Nagios NRPE 컴파일 설치하기





    1. Nagios NRPE 압축해제

    [root@nagios ~]# tar zxvf nrpe-2.13.tar.gz
    



    2. Nagios Plugin 컴파일 설치하기

    [root@nagios ~]# tar zxvf tar zxf nrpe-2.13.tar.gz
    [root@nagios ~]# cd nrpe-2.13
    [root@nagios ~]# ./configure ; make all ; make install-plugin ; make install-daemon ; make install-daemon-config ; make install-xinetd
    






     모니터링측 Nagios NRPE 데몬 설정하기




    1. Nagios 모니터링에 필요한 xinetd 설정하기


    Nagios NRPE IP 설정



    [root@nagios ~]# vi /etc/xinetd.d/nrpe
    
    # default: on
    # description: NRPE (Nagios Remote Plugin Executor)
    service nrpe
    {
            flags           = REUSE
            socket_type     = stream
            port            = 5666
            wait            = no
            user            = nagios
            group           = nagios
            server          = /usr/local/nagios/bin/nrpe
            server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
            log_on_failure  += USERID
            disable         = no
            only_from       = 127.0.0.1 [원격지측 서버IP 입력]
    }
    


    vi /etc/xinetd/nrpe 파일의 only_from에 원격지측의 IP주소를 입력 합니다.




    3. 원격지측 서버 통신테스트

    [root@client ~]# /usr/local/nagios/libexec/check_nrpe -H [원격지측 서버의IP]
    NRPE v2.13
    

    NRPE를 이용한 원격지측서버와 통신이 잘되지는 확인하는 테스트입니다.








     Nagios 원격서버 장치 추가하기



    원격지측 서버를 모니터링 하기 위해선 새로운 config파일을 생성하여 추가하여도 되며, 현재 사용하고 있는 config파일을 복사하여 원격지측 서버의 정보로 수정하여도 됩니다 저는 여기서 현재 사용중은 설정파일을 가지고 수정하도록 하겠습니다.




    1. 설정파일 복사


    [root@server ~]# cd /usr/local/nagios/etc/objects/
    [root@server objects]# ls
    commands.cfg  contacts.cfg  localhost.cfg  localhost.cfg_bak  printer.cfg  switch.cfg  templates.cfg  timeperiods.cfg  windows.cfg
    [root@server objects]# cp -rp localhost.cfg remote.cfg
    


    nagios/etc/objects의 디렉토리로 이동하면 localhost.cfg의 파일이 있으며 파일의 내용을 복사합니다.




    2. 설정파일 내용 수정


    1) vi remote.cfg


    [root@server ~]# vi /usr/local/nagios/etc/objects/remote.cfg
    ###############################################################################
    # LOCALHOST.CFG - SAMPLE OBJECT CONFIG FILE FOR MONITORING THIS MACHINE
    #
    #
    # NOTE: This config file is intended to serve as an *extremely* simple 
    #       example of how you can create configuration entries to monitor
    #       the local (Linux) machine.
    #
    ###############################################################################
    
    
    
    
    ###############################################################################
    ###############################################################################
    #
    # HOST DEFINITION
    #
    ###############################################################################
    ###############################################################################
    
    # Define a host for the local machine
    
    define host{
            use                     linux-server            ; Name of host template to use
    							; This host definition will inherit all variables that are defined
    							; in (or inherited by) the linux-server host template definition.
            host_name               remote_server		; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            alias                   remote			
            address                 192.168.65.134		; 원격지측 서버의 IP
            }
    
    
    
    ###############################################################################
    ###############################################################################
    #
    # HOST GROUP DEFINITION
    #
    ###############################################################################
    ###############################################################################
    
    # Define an optional hostgroup for Linux machines
    
    #define hostgroup{
    #        hostgroup_name  linux-servers ; The name of the hostgroup
    #        alias           Linux Servers ; Long name of the group
    #        members         localhost     ; Comma separated list of hosts that belong to this group
    #        }
    
    
    
    ###############################################################################
    ###############################################################################
    #
    # SERVICE DEFINITIONS
    #
    ###############################################################################
    ###############################################################################
    
    
    # Define a service to "ping" the local machine
    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       remote_server	      ; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            service_description             PING
    	check_command			check_ping!100.0,20%!500.0,60%
            }
    
    
    # Define a service to check the disk space of the root partition
    # on the local machine.  Warning if < 20% free, critical if
    # < 10% free space on partition.
    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       remote_server	      ; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            service_description             Root Partition
    	check_command			check_local_disk!20%!10%!/
            }
    
    
    
    # Define a service to check the number of currently logged in
    # users on the local machine.  Warning if > 20 users, critical
    # if > 50 users.
    
    define service{
            use                             local-service         ; Name of service template to use
    	host_name                       remote_server	      ; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            service_description             Current Users
    	check_command			check_local_users!20!50
            }
    
    
    # Define a service to check the number of currently running procs
    # on the local machine.  Warning if > 250 processes, critical if
    # > 400 processes.
    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       remote_server	      ; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            service_description             Total Processes
    	check_command			check_local_procs!250!400!RSZDT
            }
    
    
    
    # Define a service to check the load on the local machine. 
    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       remote_server	      ; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            service_description             Current Load
    	check_command			check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
            }
    
    
    
    # Define a service to check the swap usage the local machine. 
    # Critical if less than 10% of swap is free, warning if less than 20% is free
    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       remote_server	      ; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            service_description             Swap Usage
    	check_command			check_local_swap!20!10
            }
    
    
    
    # Define a service to check SSH on the local machine.
    # Disable notifications for this service by default, as not all users may have SSH enabled.
    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       remote_server	      ; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            service_description             SSH
    	check_command			check_ssh
    	notifications_enabled		0
            }
    
    
    
    # Define a service to check HTTP on the local machine.
    # Disable notifications for this service by default, as not all users may have HTTP enabled.
    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       remote_server	      ; 나기오스 상에서 웹페이지의 띄울 장치(서버의)이름
            service_description             HTTP
    	check_command			check_http
    	notifications_enabled		0
            }
    


    remote.cfg는 원격지측의 서버의 설정하는 내용입니다.

    host_name은 나기오스 상에서 웹페이지를 띄울 내용입니다 또한 address는 원격지측 서버의 IP를 입력합니다. 그리고 모니터링을 원하는 프로세스의 host_name를 최상단의 선언한 host_name으로 변경하셔야 되며, 모니터링을 하지않을 서비스의 프로세스는 주석처리하시면 됩니다.





    2) nagios.cfg


    [root@server ~]# vi /usr/local/nagios/etc/nagios.cfg
    
    			*
    
    			*
    
    			*
    
    			*
    
    # Definitions for monitoring the local (Linux) host
    cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
    cfg_file=/usr/local/nagios/etc/objects/remote.cfg
    
    			*
    
    			*
    
    			*
    
    			*
    
    


    위에서 생성한 remote.cfg 파일을 나기오스 상에서 설정하는 부분입니다 

    cfg_file=/usr/local/nagios/etc/objects/remote.cfg를 추가하여 주시면 됩니다.



    3. Nagios 설정정보 반영

    [root@server ~]# service nagios reload
    [root@server ~]# service nagios restart
    




    웹브라우저로 나기오스를 접속하시면 remote_server가 추가된것을 확인하실 수 있습니다.


    Posted by Server-talk 서버이야기

    • 2017.11.29 17:07

      비밀댓글입니다

    • 바로 위에 캡쳐내 용을 보시고 말씀하시는 거죠?
      위에 캡쳐 내용에서 모니터링 서버(로컬)과 모니터링 서버(원격지)와 똑같은 이유는 동일한 파티션을 설정하여서 그렇습니다.


    • 2017.11.30 08:40

      비밀댓글입니다


    • 2017.11.30 12:11

      비밀댓글입니다


    • 2020.06.05 17:42

      비밀댓글입니다

    • 방문해주셔서 감사합니다

      localhost.cfg 파일을 그대로 복사하면 로컬호스트 정보가 나오게 됩니다

      하지만

      포스팅에서는 localhost.cfg 파일을 copy 해서 remote_server.cfg 파일을 생성하였고,

      remote_server.cfg 파일을 수정하였습니다


      감사합니다.!