반응형

 

  • 자빅스 텔레그램 연동 후 여러개로 나눠서 관리 하는 방법

자빅스 텔레그램을 연동할 때, 여러개의 채팅 봇을 사용하여 용도별 또는 중요도 별로 나눠서 관리할 수 있습니다.

즉 ICMP Ping Down은 모니터링 1번방으로, Port Down은 모니터링 2번방으로 연동 한다거나 Warining 등급을 1번방으로, Average 등급을 2번방으로 나눠서 연동하여 관리할 수 있습니다. 참고로 연동할 수 있는 방의 개수 리밋은 확인하지 못했지만 현재 저가 가지고 있는 방만 15개가량 되므로 실무에서 충분히 나눠서 사용할 수 있습니다.

 

이번 포스팅의 경우 간단하게 작성할 예정이므로 텔레그램을 연동하는 방식에 대해 알고 있어야 합니다. 궁금하신 내용이 있을 경우 댓글 달아주세요.

자빅스 텔레그램 연동(1:1) : https://nirsa.tistory.com/269

자빅스 텔레그램 그룹방 연동(n:1) : https://nirsa.tistory.com/274

 

이번 포스팅에는 저가 미리 생성해둔 채팅 봇도 있고, 여러가지로 처음 구축하는 모양세는 아닙니다. 다만, 서버 설정이나 웹페이지에서 하는 설정들에 대한 이해도만 있다면 응용하는데는 무리가 없을것으로 보입니다.

 

  • 서버 설정

자빅스 서버에 접속하여 스크립트 경로를 확인 해주세요. /etc/zabbix/zabbix_server.conf 파일에서 확인할 수 있습니다.

 

저의 경우 이미 이전에 nirsa_test_bot을 설정 했기 때문에 스크립트 경로에 이미 zbxtg 파일이 존재 합니다.

 

아래 명령어를 이용해 alertscripts 디렉토리 안에 waring이라는 디렉토리를 생성하고, 파일들을 복사해 줍니다.

cd /usr/lib/zabbix/alertscripts
mkdir waring
chown zabbix.zabbix waring/
cp -p -R ./* waring/
rm -rf waring/waring/

 

기존에 사용중이던 파일을 복사했으므로 waring/zbxtg_settings.py 파일에서 tg_key , zbx_basic_auth_user , zbx_tg_daemon_enabled_ids , zbx_tg_daemon_enabled_users 부분만 변경 해주세요.

api code와 chat id, 채팅 봇의 계정명만 작성 해주시면 됩니다. ( zbx_basic_auth의 경우 false 이기 때문에 user를 변경하지 않아도 될것으로 예상 되지만 따로 테스트 해보지는 않아서 그냥 변경 해주고 있습니다. )

 

이후 /var/tmp/zbxtg/uids.txt 파일, /home/zabbix/uids.txt 파일에 해당 내용을 추가 해주어야 합니다. 만약, 기존에 아래와 같은 형식으로 이미 작성되어 있다면 그 아래줄에 채팅 봇 계정과 chat id를 추가 해주시면 됩니다.

nirsa_test_bot;private;105849283
nirsa_waring_bot;private;10235089 ## 추가

 

  • 자빅스 웹페이지 설정

아래 부분의 script name이 햇갈리실수도 있는데, 현재 자빅스 서버의 스크립트 경로는 /usr/lib/zabbix/alertscripts 이므로 zbxtg.py만 작성 한다면 /usr/lib/zabbix/alertscripts/zbxtg.py 가 되고, waring/zbxtg.py를 작성 한다면 /usr/lib/zabbix/alertscripts/waring/zbxtg.py가 됩니다.

이 부분만 이해하신다면 미디어 타입을 설정하는데에 큰 어려움은 없으실 겁니다. 하나뿐만이 아니라 여러개의 알람을 설정하도록 할때에도 같은 방법으로 작성 해주시면 됩니다.

 

Action 부분에 대해서는 각 셋팅 환경에 따라 조금씩 달라질 수 있습니다. 각각 다른 사용자 계정을 통해 관리 한다던지, Admin 계정만을 사용하여 관리 한다던지 등의 차이가 있습니다.

핵심은 Action에서 Conditions을 통한 알람 관리 입니다. 적절한 조건들을 조합하여 원하는 알람만 수신받을 수 있도록 해주어야 합니다.

기존에 저가 사용중이던 Action을 Average 등급만 알람을 수신한다고 예를 들자면 아래와 같이 Trigger sverity를 Average equals일때만 받도록 설정 해주어야 합니다.

 

새로 생성한 waring의 경우 기존에 사용중이던 action 말고, 새로운 action을 생성하면서 아래와 같이 waring 등급만 수신받을 수 있도록 설정 해주어야 합니다.

 

또 한가지, 하나의 계정(ex. Admin)만 사용할 경우 User의 Media에서 새로운 타입을 생성 해주셔야 합니다. send to가 다르기 때문에 user media를 생성하지 않으면 알람을 수신받을 수 없습니다.

저의 경우 waring만 수신받을 예정이기 때문에 use if severity를 waring만 체크한 media를 하나 더 생성 하였습니다.

 

  • 알람 확인

CPU 부하를 발생시켜 waring 알람이 재대로 동작 하는지 확인 해보앗습니다. waring을 연동한 봇에서는 알람을 정상적으로 수신할 수 있었고, 기존에 만들어둔 average을 연동한 그룹방에서는 알람을 수신받지 않았습니다.

이러한 방법으로 용도에 맞게 설정을 하여 크리티컬하지 않고 참고하여 다음날 처리해도 되는 알람들은 핸드폰에 알람을 꺼두거나 하여 퇴근 후 업무에 대한 스트레스를 조금이나마 줄일 수 있습니다.

 

반응형

+ Recent posts