众所周知,telegram的机器人还是非常好用,而且是免费的,所以这就给监控系统发送报警消息提供了一个非常好的渠道,相信很多朋友已经垂涎三尺了,所以废话不多说,直奔主题吧!

zabbix系统基础配置部分此处就直接跳过了,如果需求请参阅 http://blog.51cto.com/183530300/category8.html

此处我们直接从创建机器人开始,当然创建机器人的前提是你要先有一个telegram账号,接下来是在telegram客户端上的操作了

第一步:在搜索栏里直接使用@BotFather打开和telegram官方机器人的对话框
第二步:发送/start
第三步:给自己的机器人取一个名字(需要符合官方的要求:需要以_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机器人发送报警消息成功实现,预祝大家配置愉快,如喜欢,请转发加点赞!