1. 程式人生 > >zabbix調用telegram機器人發送報警消息

zabbix調用telegram機器人發送報警消息

zabbix調用telegram機器人 telegram機器人發送多行消息 調用telegram api發多行文本 創建、調用telegram機器人 telegram bot use

眾所周知,telegram的機器人還是非常好用,而且是免費的,所以這就給監控系統發送報警消息提供了一個非常好的渠道,相信很多朋友已經垂涎三尺了,所以廢話不多說,直奔主題吧!?
zabbix系統基礎配置部分此處就直接跳過了,如果需求請參閱http://blog.51cto.com/183530300/category8.html
?
此處我們直接從創建機器人開始,當然創建機器人的前提是你要先有一個telegram賬號,接下來是在telegram客戶端上的操作了
第一步:在搜索欄裏直接使用@BotFather打開和telegram官方機器人的對話框
br/>?
zabbix系統基礎配置部分此處就直接跳過了,如果需求請參閱http://blog.51cto.com/183530300/category8.html
?
此處我們直接從創建機器人開始,當然創建機器人的前提是你要先有一個telegram賬號,接下來是在telegram客戶端上的操作了
第一步:在搜索欄裏直接使用@BotFather打開和telegram官方機器人的對話框
第三步:給自己的機器人取一個名字(需要符合官方的要求:需要以_bot結尾,前面的名字是自定義部分)
第四步:當機器人名字符合官方標準時,就會收到官方發送過來的token,此token一定要牢記,因為日後需要經常使用的
第五步:將自己的機器人添加到需要接收報警消息的telegram個人帳號裏,或者telegram群組裏面
?
使用https://api.telegram.org/bot"官方發過來token"/getUpdates,獲取相應的chat_id,如果機器發個人的,chat是一串純數字,如果機器人發給群組,chat_id是數據串前帶一個-

使用機器人的API向個人telegram賬號發消息(提前是你已經添加此機器人為好友了)的調用格式
curl -X POST "https://api.telegram.org/bot"官方發過來token"/sendMessage" -d "chat_id=$contact&text=$message" &>/dev/null
註意:此種方式只能發送單行消息,如果需要換行,只能使用算定的連接符連接需要換行的多行文本
?
當然只能改善單行消息這是不完美的,那麽怎麽辦了,有方法,那就是使用python封裝一下消息請求就可以了,在這裏給大家一個我自己實現的過程腳本

?
#!/usr/bin/env python
?
-- coding: utf-8 --*
?
@Author: lucker
@Date: 2018-06-01 18:59:26
@Last Modified by: lucker
@Last Modified time: 2018-06-01 19:09:47
@Description:Zabbix use telegram bot to send message to group**
?
import telegram
import sys
?
contact = sys.argv[1]
subject = sys.argv[2]
content = sys.argv[3]
?
bot = telegram.Bot(token=‘官方發過來token‘)
chat_id = contact
?
bot.send_message(chat_id=chat_id, text=subject+‘\n‘+content)
?
從代碼中可以看出,需要安裝python庫中的一個telegram調用庫,才可以實現python調用telegram接口發送消息
?
只要有了這個能夠發送多行內容的python腳本,剩下的也就好辦了:
?
第一步:將此腳本放到zabbix服務器上,並授權zabbix賬戶有執行權限。
第二步:確保你的zabbix服務器python版本是2.7以上,CentOS默認沒有這麽高的版本,需要手工升級python版本
如有需要,請參閱此博文https://blog.fazero.me/2016/10/13/centos-update-python/
第三步:手動測試使用此腳本發送多行消息,測試示例:python telegram_send_message.py -123456789 主題:測試信息 $‘first line\nsecond line\nthird line‘
第四步:zabbix的Administration(管理)->Media types(媒介類型)創建一個新的媒介類型,比如:telegram_send_message
第五步:配置需要接收telegram報警消息的運維人員賬戶Administration->Users->Media->add->telegram_send_message,添加並啟用telegram_send_message這個Media
第六步:創建一個使用telegram發送消息的active(動作),Configuration->Actions->Create action,選擇使用對應媒介方式,如剛才創建的telegram_send_message,並定義觸發此動作的條件。
關於此部分的詳細配置過程,請參閱博文http://blog.51cto.com/183530300/2089051
?
至此,zabbix調用telegram機器人發送報警消息成功實現,預祝大家配置愉快,如喜歡,請轉發加點贊!

zabbix調用telegram機器人發送報警消息