1. 작업 내용

nagios 에 python을 이용해서 모 T서비스 모니터링를 붙여보았다. 

nagios는 상당히 오래된 모니터링 오픈소스 툴이다. 개인적으로 nagios도 처음이고, python 언어도 처음이라 두근거리는 마음으로 작업을 했었다. 


요구사항은 심플했다.

- http api alive 

- redis

- rabbitmq 

- 배치 서버(java) 로그


이를 python(with client module) 과 send_nsca, sqlite를 이용해서 구현을 완료했다. 


2. 느낀 점

(1) nagios을 쓰면서.

nagios(http://www.nagios.org/) 라는 툴은 마치 jenkins가 떠올랐다. UI 가 좀 당황스럽지만 참고 쓸만했도. 나름 설정 및 스크립트를 조절한다면  스케쥴 작업이나 detail한 작업을 할 수 있을 것 같다. 


나름 cache도 되어 있고, binary status정보도 쉽게 볼 수 있고, 익숙만 한다면야 쓸만한 툴임이 틀림없었다.

다만 scale 이슈가 분명 존재해서 서비스에서만 써야지, 확장성을 가지고 쓰기 어려운 부분이 존재했다.


그러나 jenkins와 다른 점은 agent 부분이었다. 크게 agent(http://nagios.sourceforge.net/docs/3_0/addons.html) 가 nrpe, nsca, ndoutils 를 사용할 수 있고, 커뮤니티에서 찾아서 쓸 수 있다. 


쉽지 않은 점은 이유를 알수 없는 동작 이슈. syntax, semantics 도 정확하게 맞는데 동작이 안될때는 미쳐 버리는 것 같았으나, 다른 방법으로 푸는 경우가 존재한다. 


nagios에서 기본 command 들이 존재한다. 대부분 binary라서 소스를 볼 수 없지만, 문서 잘보고 공부하면 잘 처리할 수 있다. 



(2) python 을 처음 쓰면서 /

함부로 python에 대해서 평할 수는 없으나, python이 고급언어가 아닌 perl이나 ruby와 같은 언어로 봤던 것이 가장 실수였던거 같다. python은 perl이나 ruby와 같은 레벨의 언어가 아니었다. java와 c#과 같은 급으로 개발하는 형태가 가장 좋은 형태인듯 하다.


logging을 위해서 redirection sign 대신 java나 c#처럼 log module을 써야 했던 부분이나 

그리고, linux command 실행시 output stream 받는 부분등.. 이런 부분을 좀 혼동했던거 같다. 

python이 old한 언어라 그런지,  oo를 지원하지만 class 안에서 self 를 쓰는 경우가 있어서 적응이 필요했다. 

그리고, python 모듈이 중앙집권적이지 않고, 일반 웹싸이트로의 파편화가 있어서 ruby나 perl처럼 api와 이용정보를 확인할 수 없는 길등이 좀 아쉬웠다. (python 은 자유롭게 개발하는 듯한 느낌이었다.)

python을 잘 사용 할려면 __xx__ 이런 것들을 좀 찾아봐야 하는 점이 있었다.


(3) RabbitMQ

rabbitmq 모니터링은 2가지 방법이 있다. rabbitmq http management api와 rabbitmq 설치시 rabbitmqadmin 이라는 스크립트 두가지 모두를 활용하면 queue별로 전체적으로 풍부한 모니터링이 할 수 있다. 


(4) Redis

info정보 이용하면 된다. port접속후 auth 인증후, info 정보 파싱해서 적당하게 만들면 된다. 



3. 연동후 소감

nagios-python 연동 작업 후 느낀 점은 팀단위의 모니터링툴로서는 좋은 듯 하다. core버전만 사용했을 경우, 추세는 보여줄 수 없고, 현재 정보에 대한 validation 체크가 가능하다. 추세를 보고 싶은 사람에게는 답답할 수 있다. 










Posted by '김용환'
,