YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > Linux
검색
멤버이름    오토
비밀번호 
 

시스템/네트워크 모니터링 프로그램 nagios

페이지 정보

작성자 MintState 댓글 0건 조회 20,742회 작성일 09-01-05 11:30

본문

시스템/네트워크 모니터링 프로그램 nagios

작성자 : 문태준

ㅇ 관련 url
http://www.nagios.org/ nagios 메인페이지
http://tunelinux.pe.kr/zboard/view.php?id=info&no=10 오픈소스 기반 네트워크 모니터링·관리 시스템. zdnet의 자료인데 지금은 링크가 안되어서 제 사이트의 정보로 링크. nagios 외에도
http://network.hanbitbook.co.kr/view_news.htm?serial=676 한빛네트워크의 강의자료
http://nagios.sourceforge.net/docs/1_0/toc.html nagios 문서
http://tunelinux.pe.kr/wikix/index.php?display=SystemMonitoring 각종 시스템 모니터링 관련자료
제 사이트에 nagios 프로그램을 guest로 볼 수 있도록 해 놓았으니 이것을 참고.

ㅇ nagios 설명
nagios는 시스템 모니터링 프로그램으로 호스트, 서비스, 네트워크를 모니터링할 수 있다. 인터넷 서비스는 원격에서도 확인가능하지만 로컬서버의 자원을 모니터링하려면 다른 프로그램의 도움을 받아야한다. 예를 들어 nagios 관리서버가 다른 에이전트를 이용하여 관리할 컴퓨터의 플러그인을 실행(nrpe)할 수도 있고 관리할 컴퓨터에서 점검을 하여 중앙의 관리서버로 점검결과를 보낼수도 있다. (nsca)  nsca는 방화벽으로 외부에서 접근을 하지 못할 경우 유용할 것이다.

nrpe        - Daemon and plugin for executing plugins on remote hosts
nsca        - Daemon and client program for sending passive check results across the network

What is Nagios? An open source host, service and network monitoring program.

nagios 에서 모니터링가능한 항목은 다음과 같다. plugin을 쉽게 제작할 수 있으므로 원하는 것은 직접 만들어서 쓰면 된다.
- host
- host의 개별 서비스 : http, smtp, pop, imap, ssh, dns, oracle, mysql, 클러스터링 서비스 등
- host의 서버자원 :process 갯수, users 갯수, load average, disk 사용량 등

모니터링 결과 문제가 있으면 메일로도 받을 수 있지만 SMS(문자메시지 서비스)를 이용하여 핸드폰 메시지로 보내주면 언제 어디서나 문제가 생긴것을 빠르게 알 수 있을 것이다.

서버의 갯수가 많은 경우에는 Distributed Monitoring 을 이용하여 여러대의 서버에서 분산 모니터링도 가능하다. 예를 들어 중앙의 관리서버가 있다면 방화벽으로 접근이 안되는 특정 사이트의 경우에는 방화벽 내부에 그 방화벽 내부의 서버를 모니터링할 관리서버를 세팅하고 nsca등을 이용하여 중앙의 관리서버로 보낼수가 있다.

간단하게 tcp 포트 모니터링하는 정도라면 간단히(?) 세팅할 수 있지만 여러가지 고급 기능들을 쓰려면 매뉴얼을 꼼꼼하게 읽어보아야한다.

그리고 모니터링결과를 db로도 저장할 수 있기 때문에 자기한테 익숙한 언어로 이용하여 프로그램을 새롭게 짤 수도 있을 것이다.

참고로 MRTG나 RRDTOOL은 일반적으로 특정 자원의 변화의 흐름을 보는 것이라면 nagios는 어떤 이벤트가 발생한 경우 이것을 신속하게 확인하고 처리할 수 있도록 하는 프로그램이다. 예를 들어 시스템의 하드디스크 용량은 MRTG 등으로 그래프를 그려서 볼 수 있지만 중요한 것은 하드디스크 공간이 얼마 남지 않았을 경우 이를 미리 알아채서 문제가 생길 것을 예방하는 것이다. MRTG나 RRDTOOL로 시스템자원을 모니터링할 수 있지만 실제 문제가 생기지 않을 때까지는 잘 안 본다.

==================================================================
ㅇ 설치
지금 설명하는 내용은 nagios 1.1, nagios-plugin 1.3.1 을 소스로 설치한 경우이다.

- http://www.nagios.org/download/ 에서 nagios, nagios-plugin  을 받는다.


기본경로


위의 기본경로를 사용할 것이라면 별도로 지정하지 않고 configure만 실행해도된다.



실행과정중에 설명을 친절하게 보여주니 어렵지는 않다.

이제는 nagios-plugin을 설치한다


prefix 는 nagios 설치디렉토리(기본 /usr/local/nagios)
나머지 옵션도 nagios 설치했을때와 동일하게 하면 된다. 별도 지정하지 않으면 nagios 동일한 기본경로를 가진다.



** freebsd에서는 port로 설치하면 된다.


ㅇ 웹서버 설정
httpd.conf 파일에 nagios 실행을 위한 환경설정을 추가한다. alias와 인증관련 설정을 하면 된다.


** AuthName 부터 require 까지를 .htaccess 파일에 넣어두는 것이 관리상 편리할것임


** freebsd는 port로 설치하면 디렉토리 경로가 약간 다르다.




** 위에서 추가한 사용자는 contatcs.cfg에 설정해주어야한다.
** contacts.cfg에 설정한 내용에 따라 자신이 볼수 있는 service, host 가 정해지며 system, process, config 등에 대한 추가 권한은 cgi.cfg 에서 설정한다. 보통 nagios 의 관리자에게만 추가권한을 설정하면 될 것이다. 추가권한은 다음과 같다.



웹을 다시 재시작한다.

이러한 권한설정이 작용하려면 nagios/etc/cgi.cfg 의 파일에 다음 내용이 들어가야하는데 기본으로 설정되어있다.

use_authentication=1

ㅇ external command 실행 설정 (이에 대해서 아직 모르면 뒤의 내용부터 본다)
external command 를 실행하기 위해서는 적절한 퍼미션 설정이 필요하다. (이 프로그램은 cgi 에서 외부 프로그램을 사용할 경우 필요하다. 예를 들어 comment 를 달거나 service 에 대한 모니터링을 중단하는등)

nagios, apache 유저가 동시에 접근할 수 있는 그룹을 설정한다.


아래와 같이 퍼미션이 나오면 된다.


여기서 other 사용자는 권한이 있으면 안된다.

ㅇ 환경파일 설정 및 프로그램 시작하기
- etc 디렉토리의 샘플파일을 이용하여 수정, 추가하면 된다.

참고로 처음 설치시에는 -sample 이런 형태로 파일이 되어있으므로 간단하게 쉘스크립트를 이용하여 파일명을 바꾸자.



- 편리하게 실행하기 위해 nagios/bin 을 경로에 추가한다.
- nagios -v nagios.cfg  명령을 통해 프로그램을 시작하지 않고도 설정파일에 문제가 있는지 확인할 수 있다. 아니면 syslog 를 확인해도 된다.
** init 스크립트에 위 명령을 추가하면 편리할 것이다. (redhat /etc/init.d/nagios, freebsd /usr/local/etc/rc.d/nagios.sh test)

- nagios.cfg 에서는 check_external_commands 를 1로 수정해준다. 그래야 앞에서 설명한 external command 를 실행할 수 있다.
- hosts.cfg 에서는 모니터링할 호스트를 지정한다.
host_name, alias, address 정도 수정하면 된다. (** parents 를 이용하면 서버간의 연관관계를 줄수 있다. 이는 웹에서 Status map을 보는 경우 편리하다.)
- contacts.cfg 에는  contact_name, alias , email 수정하면된다. 이를 contactgroups.cfg 를 이용하여 그룹으로 묶는다.
- hostgroups.cfg 에는 모니터링할 호스트(hosts.cfg)의 그룹을 지정할 수 있다. contact_groups 에 관련된 contact group을 설정하고 (contacts.cfg) members에는 hosts.cfg 에 지정한 host 를 넣는다.
- service.cfg 에는 해당 host 에 대한 모니터링할 service를 지정한다. host_name, service_description, contact_groups, check_command 등을 조정하면된다.
- dependencies.cfg 와 escalations.cfg 는 아직 사용법을 몰라 모두 주석처리했다.
- checkcommands.cfg 는 hosts.cfg 와 service.cfg 의 check_command 에서 사용할 수 있는 명령어를 지정하며 libexec 에 있는 plugin에 있는 명령을 사용할 수 있다.
** checkcommands.cfg 는 모든 플러그인에 대한 정의가 들어있는 것은 아니며 예를 들어 check_ssh 등은 추가를 해주어야한다. 문법을 보면 그리 어렵지 않다.
- misscommands.cfg 에는 주로 notification command 가 들어있다.
- resource.cfg 에는 plugin 디렉토리, db연동시 관련된 내용을 지정하는데 기본 실행을 하는데는 바꿀 필요가 없다.
- hostextinfo.cfg  에는 각 호스트별도 별도의 아이콘을 지정할 수 있다. 이경우에는 nagios 사이트에서 Image packs을 다운받아야한다. 나는 base와 cook을 이용했다.

** 설정파일을 보면 알겠지만 기본설정을 만들어 register로 등록(템플릿)하면 편리하다. 공통되는것을 등록해놓고 상속받는다고 생각하면 된다.
** service 등에서는 host_name 에 호스트그룹설정도 가능하며 여러개의 호스트를 개별적으로 설정할 수 있다. 중복된 설정작업을 막아주는 것이다.전체적으로 그룹으로 묶어서 관리하면 편리하다.

수정을 하였으면 이제 프로그램을 실행하면 된다.


웹에서 접속하여 확인을 해본다. http://localhost/nagios/ 인증창이 뜨고 htpasswd 에 입력한 사용자 계정과 contats.cfg 의 내용을 이용하여 적절한 권한을 제공한다.

ㅇ nsca 설치
Passive Service Checks 라고 하여 nagios 서버에서 주기적으로 체크하는 것이 아니라 클라이언트에서 메시지를 보내 nagios 서버가 메시지를 처리하도록 할 수도 있다. 사설망이라서 접근하지 못하는 경우에 유용할 것이다.

http://www.nagios.org/download/extras.php 에서 Nagios Service Check Acceptor (NSCA) 2.4 를 받는다.
nsca 간의 통신을 할때 암호화를 하려면 http://mcrypt.hellug.gr/ 를 참고하여 http://sourceforge.net/project/showfiles.php?group_id=87941 에서 libmcrypt-2.5.7.tar.gz 를 받아서 미리 설치해야한다.

libmcrypt 소스를 푼다


이제 /etc/ld.so.conf 에 다음 줄을 추가한다.




nsca 소스를 푼다


** libmcrypt 를 이용하여 컴파일할 경우에는 아래와 같이 지정한다.



src 디렉토리에 바이너리들이 복사가 된다. 적절한 위치로 이동을 한다.

나는 /usr/local/nagios/nsca 디렉토리에 복사를 하였다.

 

nsca : nagios 서버에서 돌아가는 대몬
nsca.cfg : nsca 에서 사용하는 환경파일
send_nsca : client 프로그램
send_nsca.cfg : client 환경파일


inetd 나 xinetd 설정을 해야한다.

/etc/service 에 다음 내용을 추가한다.



xinetd 는 다음과 같은 파일을 /etc/xinet.d/nsca 로 복사해서 작성하여 사용한다.



ㅇ nsca 설정
nsca.cfg : debug=1 로 설정하면 syslog 에서 좀더 자세한 정보를 볼 수 있다. allowed_hosts 는 xinetd 를 이용한 경우 작동을 하지 않는 것 같은데 tcp_wrapper 나 xinetd 에서 only_from 을 이용하여 설정하면 된다. decryption_method 는 nsca.cfg 와 send_nsca.cfg 를 동일하게 설정해야한다. 여기에 추가하여 password 까지 동일하게 설정하면 보안을 더 강화할 수 있을 것이다.

이제 nagios 에서 설정을 해보자.

hosts.cfg, hostgroups.cfg 에는 동일하게 설정하면 된다.
service.cfg 에서는 is_volatile=1, max_check_attempts=1, active_checks_enabled 0, passive_checks_enabled 1 로 설정한다.

service 설정에서 host_name taejun, service_description nsca 라고 가정하겠다. 클라이언트에서 send_nsca 프로그램을 이용하면 된다. 형식은 아래와 같다. 보내는 메시지는 standard input 를 이용한다.

형식) ./send_nsca -H <host_address> [-p port] [-to to_sec] [-d delim] [-c config_file]



여기서 http.msg 내용을 보자. 아래 공백은 탭으로 띄어야한다.


메시지 형태는 다음과 같다.

Service Checks:


Host Checks:


원래는 external application 이 서비스 점검한 결과를 아래의 형식으로 알려주면 nagios 에서 처리를 한다.


return_code : 0=OK, 1=WARNING, 2=CRITICAL, 3=UNKNOWN

지금처럼 nsca를 이용할때는 send_nsca 가 보내준 메시지를 nsca 서버 프로그램에서 PROCESS_SERVICE_CHECK_RESULT 에서 본 형태대로 자동으로 바꾸어주는 것이다.


ㅇ Nagat - Nagios Administration Tool
http://sourceforge.net/projects/nagat/
nagios.cfg 등 환경설정파일을 웹에서 편집할 수 있는 php 프로그램이다. 위의 사이트에서 프로그램을 다운받고 원하는 디렉토리로 옮긴후 local.inc.dist 를 local.inc 로 복사하고 define("NGT_ROOT","/var/www/html/nagat/") 경로만 수정하면 된다. (nagios 는 /usr/local/nagios 에 설치되었다고 가정)
nagios 의 etc 디렉토리밑 파일을 수정하려면 웹사용자(apache)가 etc 디렉토리에 대한 권한이 있어야 한다. 앞에서 nagios, apache 유저가 동시에 접근할 수 있는 그룹인 nagioscmd 를 사용하면 될 것이다. 보안상 문제가 될 수 있으므로 SSL등을 이용하면 좋겠다.

웹에서 접속하여 먼저 Importer 를 이용하여 cfg 파일을 읽어들여야 한다. nagios.cfg, cgi.cfg 를 읽어들이고나면 나머지 다른 파일들도 import를 한다. 이제 원하는 내용을 편집하면 된다. 편집을 마치고나면 export를 이용하여 저장하면 파일이 저장된다. nagat 형식으로 바꾸어서 간결하게 바뀐다. nagat를 이용한 경우에는 직접 설정파일을 바꾸지 않을것을 추천하고 있다.


==============================================================================================
설정파일 : 원래의 설정파일과 변경된 부분만 참고로 올림



==> 위에서는 guest에 여러가지 정보를 보여주도록 하기 위해 view 권한을 주었음. hostextinfo.cfg 는 서버의 그래픽아이콘을 넣기 위하여 설정




--> 몇가지 명령어를 추가하였음




--> 웹에서 관리자권한으로 명령어 실행을 위하여 추가. 예를 들어 수동체크, 알람기능중지등.

댓글목록

등록된 댓글이 없습니다.

Total 360건 1 페이지
Linux 목록
번호 제목 글쓴이 조회 날짜
공지 MintState 104784 10-30
359 MintState 150364 11-10
358 MintState 36528 01-05
357 MintState 31145 11-17
356 MintState 28682 11-05
355 MintState 25470 01-05
354 MintState 24139 01-05
353 MintState 22634 01-05
352 MintState 22158 12-24
351 MintState 21366 07-26
350 MintState 21310 11-17
349 MintState 21143 05-08
348 MintState 20886 05-08
열람중 MintState 20743 01-05
346 MintState 20094 01-05
345 MintState 19810 12-04
344 MintState 19512 09-04
343 MintState 19335 07-27
342 MintState 19171 11-20
341 MintState 19085 01-05
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2022, YesYo.com MintState. ™