본문 바로가기

IT/소프트웨어 설치

nagios 모니터링 툴

모니터링에는 다양한 툴들이 존재한다. 그중 무료이면서 전통적으로 많이 사용된 툴인 nagios에 대해 설명하고 설치하도록 하겠다. 2013년까지만해도 위키피디아에서도 사용하던 툴이다. 비록 현재는 다른 툴로 변경되었지만 외국어떤 회사에서는 입사지원요건 중 하나가 nagios 활용이었다고도 한다. 아 외국회사 가고싶다


nagios 개념 
nagios는 시스템 모니터링 프로그램으로 호스트, 서비스, 네트워크를 모니터링할 수 있다. 

 

nagios core - 로컬 호스트를 모니터링 할 수 있다 cpu사용량 메모리 사용량 등 다양하게 많다

nagios plugin - 모니터링할 수 있는 다양한 옵션들. 이 플러그인을 사용해서 원하는 모니터링을 설정할 수 있다. ssh를 통해 원격지의 정보를 주고받는다


nagios addon - nrpe, nsca등 다양한 애드온이 있다. 애드온은 nagios를 사용하는데 유용한 유틸리티이다. 합체로봇처럼 추가로 장착하는 옵션같은거다

  - nrpe - 원격 서버를 모니터링 할 수 있다. 두개의 서버 모두 nagios가 설치되어 있어야 하고, 모니터링 할 서버의 nrpe.cfg를 보고 그 항목을 감시할 수 있다

  - nsca - 폐쇄적인 서버를 모니터링할 때 사용. nrpe는 중앙서버에서 모니터링할 서버로 통신을 하는 방식이지만 nsca는 모니터링할 서버가 중앙서버로 감시 내용을 보내온다. 따라서 접속을 허용할 건덕지가 사라짐. 


간단히 생각하면 다음 그럼처럼 생각할 수 있다


우주선 도킹의 그림이다. 마치 우주선이 도킹하듯 nrpe를 장착하여 그 기능을 사용할 수 있다

반대로 말하면 nagios-plugin 없이 nrpe는 동작하지 않는다는 뜻이다


1. nagios core 설치

 1) dependency 설치(nagios가 설치되는데 있어 꼭 필요한 것들이다)


yum install -y httpd php gcc glibc glibc-common gd gd-devel make net-snmp


아파치랑 php가 깔려있어야. 댐 gcc는 소스컴파일에 사용. glib은 라이브러리용. gd는 그래픽용

 

nagios는 웹을 통해서 감시 내용을 볼 수 있기때문에 그 때 사용할 것들임 다 설치 해주고

yum이 안되는 리눅스는 rpm 알아서 다운로드 받을 것

 

 2) 유저 & 그룹 생성


useradd nagios

groupadd nagcmd


nagios와 apache를 nagcmd 그룹에 추가한다 - 웹으로 화면을 보기때문에 추가해준다

usermod -G nagcmd nagios

usermod -G nagcmd apache



2. nagios 설치


 //다운로드 디렉토리 생성

 # mkdir -p /src/nagios

 # cd /src/nagios


 // 다운로드

 # wget http://sourceforge.net/projects/nagios/files/nagios-4.x/nagios-4.0.8/nagios-4.0.8.tar.gz/download

 # wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz


 // 압축해제

 # tar vzxf nagios-4.0.8.tar.gz

 # tar vzxf nagios-plugins-2.0.3.tar.gz

 

 // nagios 컴파일(core)

 # cd nagios-4.0.8

 # ./configure --with-command-group=nagcmd

 # make all

 # make install

 # make install-init  ## /etc/init.d/에 등록됨

 # make install-commandmode   ##nagios라는 유저가 없으면 여기서 에러남

 # make install-config  ## /usr/local/nagios에 설정파일 생성됨

 # make install-webconf  ## /etc/httpd/conf.d/nagios.conf 생성됨


 // alert 메시지를 받을 메일 주소 입력

 # vi /usr/local/nagios/etc/objects/contacts.cfg

define contact {

        contact_name          nagiosadmin          ## 간단한 이름

        use                      generic-contact      ##template에 정의되어 있다 궁금하면 찾아보셈

        alias                     Nagios Admin         ## 상세한 이름

        email                    dupont3031@naver.com  ## 여기다 email 주소 입력


 // 웹 인터페이스 접속시 사용할 패스워드 생성

 # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

New password:

Re-type new password:

Adding password for user nagiosadmin


 // nagios-plugin 컴파일

 # cd /src/nagios-plugins-2.0.3

 # ./configure --with-nagios-user=nagios --with-nagios-group=nagios

 # make

 # make install


 // 컨피그 파일 검사

 # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg


 // 서비스 테스트

 # service nagios start


 // 웹서버 접속방법

 아파치를 별도로 수정하지 않았기때문에 http://서버ip/nagios로 접속 후

 아까 설정한 ID/Pass 입력하면 접속 가능


3. nrpe를 통한 원격 모니터링

 1) 원격지 서버(모니터링 당할 서버, 모니터링 대상 서버, slave 서버 이정도면 이해되겠지?)


 // dependency 설치

 # yum install -y gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel


 // 유저 생성

 # useradd nagios

 # passwd nagios


 // 디렉토리 생성

 # mkdir /src/nagios


 // nagios-plugins 설치

 # wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz

 # tar vzxf nagios-plugins-2.0.3.tar.gz

 # cd nagios-plugins-2.0.3

 # ./configure

 # make

 # make install

 # chown nagios.nagios /usr/local/nagios

 # chown -R nagios.nagios /usr/local/nagios/libexec

-- core 없이 plugin만 설치할 수도 있다. core는 종합적인 기능을 다 가지고 있고, plugin만 설치하게 되면 libexec 디렉토리 밑에 있는 항목들에 대한 기능만 제공한다. 즉, addon 기능과 그 기능을 원격으로 주고 받는 역할만 하는 일종의 최소설치 개념이다


 // xinetd 설치

 # yum install -y xinetd

-- 최소설치와 비슷한 이유로 xinetd를 활용한다. xinetd는 서버에서 직접 동작 시키는게 아니라 요청이 들어왔을때만 xinetd 데몬이 받아서 메모리를 사용하고 사용이 끝나면 다시 메모리를 반환하는 방식으로 효율적으로 시스템을 운영할 수 있다. 이것도 역시 최소설치 개념으로 설치하였다


 // nrpe 컴파일

 # wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz/download

 # tar vzxf nrpe-2.15.tar.gz

 # cd /src/nagios/nrpe-2.15

 # ./configure

 # make all

 # make install-plugin  

 # make install-daemon  

 # make install-daemon-config  

 # make install-xinetd                     ## xinetd 밑에서 nrpe를 돌리고 싶을때 

-- make install-xinetd를 하면 /etc/xinetd.d/nrpe가 생성된다


 // /etc/xinetd.d/nrpe를 열어서 모니터링 control 서버ip 추가해준다

 # vi /etc/xinetd.d/nrpe

only_from = 127.0.0.1 localhost 192.168.136.135

-- 위 주소가 모니터링하는 서버, 중앙 서버, control서버, master서버 


 // /etc/services 파일에 nrpe 데몬 추가해준다 xinetd랑 services 파일이 짝짜꿍이다

 # vi /etc/services

nrpe        5666/tcp        NRPE

 # service xinetd restart

-- nrpe는 기본이 5666포트로 동작, 이상한 포트 넣고 xinetd 재시작해봤자 반응 없다(xinetd는 /etc/services 파일을 본다)


 // 로컬에서 확인

 # netstat -at |grep nrpe

tcp    0     0  *:nrpe    *:*    LISTEN

-- netstat -na 로 안보인다


 #/usr/local/nagios/libexec/check_nrpe -H localhost

NRPE v2.15


 // selinux 사용중일때 아래 추가

 # iptables -A INPUT -p tcp -m tcp --dport 5678 -j ACCEPT

 # service iptables save


--nrpe.cfg 파일을 열어보면 샘플 항목들이 있고 이와같은 방법으로 커스터마이징 할 수 있다.


 2) 모니터링 서버(모니터링 하는 서버, 중앙 서버, control 서버 master 서버)

단, nagios와 plugin이 이미 깔려있다는 가정에서 진행한다


 // 다운로드 및 설치

 # cd /src/nagios

 # wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz/download

 # tar vzxf nrpe-2.15.tar.gz

 # cd nrpe-2.15

 # ./configure

 # make all

 # make install-daemon


 // 확인

 # /usr/local/nagios/libexec/check_nrpe -H 192.168.136.136

NRPE v2.15

-- 위 주소는 원격지 주소, 모니터링 대상 서버, 모니터링 할 서버, slave 서버


 // 모니터링 설정

 # cd /usr/local/nagios/etc

 # touch hosts.cfg

 # touch services.cfg

 

 // 메인 설정 파일에 추가

 # vi /usr/local/nagios/etc/nagios.cfg

# You can specify individual object config files as shown below:

cfg_file=/usr/local/nagios/etc/hosts.cfg

cfg_file=/usr/local/nagios/etc/services.cfg


 // hosts.cfg 파일 설정

 # vi /usr/local/nagios/etc/hosts.cfg

define host{

use                  linux-server

host_name          libcom              ## 원격지 hostname이 아니다, 그냥 그냥.. 암거나

alias                 Lib Com            ## 이건 그냥 정식 이름 정도?

address             192.168.136.136   ## 이제 중요! 원격지 ip주소, 모니터링할 서버 ip

}


 // service.cfg 파일 설정

 # vi /usr/local/nagios/etc/service.cfg 

define service{

        use                     generic-service          ## template.cfg에 정의되어 있다

        host_name               libcom          ## 아까 지정한 이름

        service_description     CPU Load

        check_command           check_nrpe!check_load

        }


define service{

        use                     generic-service

        host_name               libcom

        service_description     Total Processes

        check_command           check_nrpe!check_total_procs

        }


define service{

        use                     generic-service

        host_name               libcom

        service_description     Current Users

        check_command           check_nrpe!check_users

        }


define service{

        use                     generic-service

        host_name               libcom

        service_description     SSH Monitoring

        check_command           check_nrpe!check_ssh

        }


define service{

        use                     generic-service

        host_name               libcom

        service_description     FTP Monitoring

        check_command           check_nrpe!check_ftp

        }

-- 일종의 기본 감시 정도를 설정한 것이다


 // commands.cfg에 nrpe 명령어 지정 

 # vi /usr/local/nagios/etc/objects/commands.cfg

define command{

        command_name check_nrpe

        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

        }


 // 확인

 # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Total Warnings: 0

Total Errors:    0

-- 이부분에서 에러를 많이 만날것이고 에러에서 말해주는 곳으로 가서 수정해주면 된다.


 // 재시작

 # service nagios restart

-- 이후 웹페이지에 접속하면 host와 service 등등 항목에 잘 추가되었는지 확인한다.


nagios는 설정파일들이 물고물린다는것이 특징이다. template.cfg에 지정된 내용을 참조해서 host.cfg파일에서 본다든지하는, 파일들끼리 물고 있어서 그부분만 잘 간파하면 설정하는것은 크게 무리가 없을 것이다.


사실 nagios는 이제부터가 시작이다. 이제부터 서버에 어떠한 점을 모니터링할 것인지를 정하고, 또 그렇게 하려면 어떠한 파일에 어떠한 설정을 추가하여야 하는지, 그리고 그것을 적용해보고 테스트해보고 하는 과정을 거쳐야 한다. 


물론 지금까지 많은 사람들이 그런한 노력을 기울여 왔고 관련 커뮤니티를 검색하면 다양한 addon과 plugin들을 이용해서 감시기능을 쉽게 추가할 수도 있다.


내용이 좀 길었는데 순서대로 따라하면 큰 무리없이 설치할 수 있고, 중간중간 문제가 생긴다면 이전에 설정한 부분이 제대로 되었는지부터 확인한다. 껄쩍지근하게 넘어간건 없는지, 설정이 문제가 없다면 방화벽이나 네트워크 상태를 확인하는 정도면 왠만한 에러는 다 잡을 수 있을 것이다. 

'IT > 소프트웨어 설치' 카테고리의 다른 글

MySQL 5.1.73 설치  (0) 2015.03.05
JBoss 6.0 설치하기 - centos6.5  (0) 2015.02.15
apache mod_cband 설치 및 설정  (0) 2015.02.09
mrtg 설치 및 모니터링  (0) 2015.01.06
NFS  (0) 2015.01.04