Zabbix

Zabbix + Telegram 연동 [1]

말랑Cow 2021. 2. 19. 16:43
반응형

테스트 환경 : CentOS 7.9 + Zabbix 4.4.10

 

■ 자빅스 + 텔레그램 연동

 

1) 초기 세팅

 

yum -y install epel-release
yum -y install python-pip git
pip3 install requests
pip3 install telegram
pip3 install python-telegram-bot

 

위와 같이 AlertScriptsPath 경로를 확인합니다.

변경을 원한다면 원하는 경로로 변경 후 zabbix-server restart 하시면 됩니다.

 

2) 텔레그램 채팅 봇 생성

 

텔레그램 사이트로 들어가 윈도우 PC버전을 다운로드하여 설치합니다.

 

설치 후 botfather를 검색하여 메시지 start를 클릭합니다.

 

/newbot을 입력한 후 봇 이름과 사용자명을 입력합니다.

봇 이름 : SO_Test_bot

사용자명 : infracube_so_test_bot

SO_Test_bot 과 SJH_test_bot은 이미 사용중이라는 문구입니다.

사용자명의 경우 마지막에 bot단어가 들어가야 합니다.

 

Use this token to access the HTTP API 라는 문구 다음에 오는 코드를 복사하여 메모장 등에 보관합니다.

 

생성했던 채팅 봇 이름을 검색하면 나오게 되는데 시작을 누릅니다.

(여기서 시작을 누르지 않으면 이후 404 에러 발생)

 

위에서 fatherbot에게 받은 HTTP API 코드를 사용하여 웹 브라우저 URL에 접속해봅니다.

https://api.telegram.org/bot$HTTP_API_CODE/getUpdates 

 

HTTP_API_CODE는 위에서 메모장 등에 복사해놓은것을 붙혀넣으면 됩니다.

 

지금까지의 과정을 정상적으로 수행했다면 위처럼 "ok":true 메시지가 나올 것 입니다.

 

3) 템플릿 설치 및 설정

 

자빅스 서버로 돌아와 아래 코드와 같이 템플릿을 설치합니다.

cd ~
git clone https://github.com/ableev/Zabbix-in-Telegram
mv Zabbix-in-Telegram/* /usr/lib/zabbix/alertscripts

텔레그램 채팅 id를 확인할 Python 파일을 만듭니다.

cd ~
vi chat.py

#!/usr/bin/env python
import telegram
import requests
my_token = 'father봇에게 받았던 코드'
bot = telegram.Bot(token = my_token)
updates = bot.getUpdates()
for u in updates :print(u.message)

파이썬 3버전을 실행시켜 chat.py 파일을 실행합니다.

python3 chat.py

여기서 아무것도 출력되지 않는다면 채팅봇에게 아무렇게나 채팅을 시도한 후 다시 파이썬파일을 실행합니다.

실행 결과에서 다음과 같은 id값을 추출합니다.

샘플파일을 복사한 후 권한을 설정합니다.

cp /usr/lib/zabbix/alertscripts/zbxtg_settings.example.py /usr/lib/zabbix/alertscripts/zbxtg_settings.py
chown -R root.zabbix /usr/lib/zabbix/alertscripts
usermod -a -G zabbix zabbix

 

복사된 파일을 열고 다음 부분들을 수정합니다.

vi /usr/lib/zabbix/alertscripts/zbxtg_settings.py


tg_key = "[father봇에게 받은 코드]"  # telegram bot api key

zbx_server = "http://자빅스서버 IP/zabbix/"  # zabbix server full url
zbx_api_user = "zabbix"
zbx_api_pass = "zabbix"

zbx_basic_auth_user = "SO_Test_bot"   # 아까 생성했던 봇 이름
zbx_basic_auth_pass = "[사용할 패스워드]"

zbx_tg_daemon_enabled_ids = ["아까 확인한 chat id", ]
zbx_tg_daemon_enabled_users = ["infracube_so_test", ] # 아까 생성했던 봇 사용자명

zbx_db_host = "localhost"
zbx_db_database = "zabbix"
zbx_db_user = "zabbix"
zbx_db_password = "[자빅스 설치 시 생성한 자빅스 계정 패스워드]"

 

/var/tmp/zbxtg/uids.txt 파일에 아래의 내용을 넣어주고 간혹 디렉토리가 생성되지 않아 쓰기가 불가능할 수 있기 때문에 추가작업 합니다.

 

mkdir /var/tmp/zbxtg
chown -R zabbix.zabbix /var/tmp/zbxtg
vi /var/tmp/zbxtg/uids.txt
# [봇 사용자명];private;[chat id]
infracube_so_test_bot;private;위에서 추출한 chat id

 

가끔 chat id가 날아갈수도 있어서 다음 설정까지 같이 해줍니다.

vi /home/zabbix/uids.txt

## /var/tmp/zbxtg/uids.txt와 동일하게 작성
# [봇 사용자명];private;[chat id]
infracube_so_test_bot;private;위에서 추출한 chat id

아래 내용을 추가하여 스크립트 파일을 생성합니다.

vim /home/zabbix/uids.sh

yes | cp -arpf /home/zabbix/uids.txt /usr/tmp/zbxtg/uids.txt

 

마지막으로 crontab 을 설정합니다.

 

crontab -e

0 0 * * * sh /home/zabbix/uids.sh >> /home/zabbix/uids_cron.log 2>&1

 

여기까지가 자빅스 서버설정이었고 자빅스 웹페이지 설정만 남았는데 [2] 에 내용 업로드 하겠습니다.

반응형