자빅스 텔레그램 연동
텔레그렘 봇 생성
□ 텔레그램 로그인 → 검색창에 ‘botfather’ 검색 → ‘시작’ 클릭 → ‘/newbot’ 입력 → 원하는 봇 이름 입력 → 사용자 명 입력 (마지막에 bot으로 끝나야함.)
□ 생성 한 봇을 검색하여 추가
* https://api.telegram.org/bot[api값입력]/getUpdates
봇을 제대로 시작하고, 위 URL로 들어가면 아래와 같은 텍스트가 출력 (봇 시작 생략하면 404 에러 뜸)
2.2 텔레그렘 ID 확인 방법
□ 텔레그램에서 ‘IDBot’ 검색 → ‘시작’ 클릭 → ‘/start’ 입력 → ‘/getid’ 입력 → id 값 확인
2.3 자빅스 홈페이지 설정
□ zabbix 페이지 접속 → “관리” → “미디어 타입” → “연락 방법 작성”
□ 미디어 타입 설정
- 이름은 원하는 대로 설정
- 종류는 Webhook 선택
- 파라미터는 다음과 같이 설정
이름 | 값 |
Message | {ALERT.MESSAGE} |
ParseMode | HTML |
Subject | {ALERT.SUBJECT} |
To | {ALERT.SENDTO} |
Token | HTTP API 값 기재 (봇 생성할 때 나오는 값) |
- 스크립트 설정
var Telegram = { token: null, to: null, message: null, proxy: null, parse_mode: null, sendMessage: function() { var params = { chat_id: Telegram.to, text: Telegram.message, disable_web_page_preview: true, disable_notification: false }, data, response, request = new CurlHttpRequest(), url = 'https://api.telegram.org/bot' + Telegram.token + '/sendMessage'; if (Telegram.parse_mode !== null) { params['parse_mode'] = Telegram.parse_mode; } if (Telegram.proxy) { request.SetProxy(Telegram.proxy); } request.AddHeader('Content-Type: application/json'); data = JSON.stringify(params); // Remove replace() function if you want to see the exposed token in the log file. Zabbix.Log(4, '[Telegram Webhook] URL: ' + url.replace(Telegram.token, '<TOKEN>')); Zabbix.Log(4, '[Telegram Webhook] params: ' + data); response = request.Post(url, data); Zabbix.Log(4, '[Telegram Webhook] HTTP code: ' + request.Status()); try { response = JSON.parse(response); } catch (error) { response = null; } if (request.Status() !== 200 || typeof response.ok !== 'boolean' || response.ok !== true) { if (typeof response.description === 'string') { throw response.description; } else { throw 'Unknown error. Check debug log for more information.' } } } } try { var params = JSON.parse(value); if (typeof params.Token === 'undefined') { throw 'Incorrect value is given for parameter "Token": parameter is missing'; } Telegram.token = params.Token; if (params.HTTPProxy) { Telegram.proxy = params.HTTPProxy; } if (['Markdown', 'HTML', 'MarkdownV2'].indexOf(params.ParseMode) !== -1) { Telegram.parse_mode = params.ParseMode; } Telegram.to = params.To; Telegram.message = params.Subject + '\n' + params.Message; Telegram.sendMessage(); return 'OK'; } catch (error) { Zabbix.Log(4, '[Telegram Webhook] notification failed: ' + error); throw 'Sending failed: ' + error + '.'; } |
□ Message templates 설정
- 5개의 template을 추가 후 갱신합니다.
장애 위험: {EVENT.NAME} 문제 발생 시간: {EVENT.TIME} on {EVENT.DATE} 서버: {HOST.NAME} 심각성: {EVENT.SEVERITY} Original problem ID: {EVENT.ID} {TRIGGER.URL} |
|
Problem recovery 정상: {EVENT.NAME} 정상화 시간: {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE} 서버: {HOST.NAME} 심각성: {EVENT.SEVERITY} Original problem ID: {EVENT.ID} {TRIGGER.URL} |
|
Problem update Updated problem: {EVENT.NAME} {USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}. {EVENT.UPDATE.MESSAGE} Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}. |
|
|
디스커버리 Discovery: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS} Discovery rule: {DISCOVERY.RULE.NAME} Device IP: {DISCOVERY.DEVICE.IPADDRESS} Device DNS: {DISCOVERY.DEVICE.DNS} Device status: {DISCOVERY.DEVICE.STATUS} Device uptime: {DISCOVERY.DEVICE.UPTIME} Device service name: {DISCOVERY.SERVICE.NAME} Device service port: {DISCOVERY.SERVICE.PORT} Device service status: {DISCOVERY.SERVICE.STATUS} Device service uptime: {DISCOVERY.SERVICE.UPTIME} |
Autoregistrtion Autoregistration: {HOST.HOST} Host name: {HOST.HOST} Host IP: {HOST.IP} Agent port: {HOST.PORT} |
□ 연락 방법 설정
- ‘id’ 설정 접속 (‘관리’ 탭에서 ‘유저’ 메뉴 접속 후 생성한 id 클릭) → ‘연락 방법’ 클릭 및
‘추가’ → ‘종류’에서 ‘유저그룹선택’ 미디어 타입 선택 및 ‘수신처’에 고객의 텔레그램 id 입력
□ 액션 설정
- ‘설정’ → ‘액션’ → ‘액션 작성’ 접속
- ‘이름’은 원하는대로 지정 / 조건 ‘추가’ 클릭
□ 호스트 그룹 부분 왼쪽에 ‘선택’ 클릭 → 생성한 그룹 선택 후 ‘추가’ 클릭
□ 오퍼레이션 설정 방법
- 오퍼레이션, 복구시 실행내용, 갱신시 실행내용을 각각 추가
- ‘오퍼레이션 설정’ 부분에서 ‘추가’ 클릭
Send to users | 유저 추가 |
다른 미디어만 사용 | 생성한 타입 선택 |
Custom message 체크 후 아래 내용 작성 | |
제목 | [ZABBIX] 문제 발생 |
메시지 | 호스트: {HOST.NAME} ({HOST.IP}) 심각도: {TRIGGER.SEVERITY} 알람 명: {TRIGGER.NAME} 발생 시기: {EVENT.DATE} , {EVENT.TIME} Event ID: {EVENT.ID} 설명: {TRIGGER.DESCRIPTION} |
- ‘복구시 실행내용’ 부분에서 ‘추가’ 클릭
Send to users | 유저 추가 |
다른 미디어만 사용 | 생성한 타입 선택 |
Custom message 체크 후 아래 내용 작성 | |
제목 | [ZABBIX] 문제 해결(복구) |
메시지 | 호스트: {HOST.NAME} ({HOST.IP}) 심각도: {TRIGGER.SEVERITY} 알람 명: {TRIGGER.NAME} 복구 시기 : {EVENT.RECOVERY.DATE}, {EVENT.RECOVERY.TIME} Event ID: {EVENT.ID} |
- ‘갱신시 실행내용’ 부분에서 ‘추가’ 클릭
Send to users | 유저 추가 |
다른 미디어만 사용 | 생성한 타입 선택 |
- 모두 작성 완료 하였으면 추가
'모니터링 > Zabbix' 카테고리의 다른 글
zabbix agent (zabbix 5.2 버전)설치 및 설정 방법 (0) | 2022.01.12 |
---|---|
Zabbix memory 체크 템플릿 (0) | 2022.01.12 |
zabbix cpu 체크 템플릿 (0) | 2022.01.12 |
zabbix 포트 체크 템플릿 만들기 (0) | 2022.01.12 |
자빅스 서버(zabbix-server) 설치 5.2 / centos 7 (0) | 2022.01.11 |