众所周知, 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 机器人发送报警消息成功实现, 预祝大家配置愉快, 如喜欢, 请转发加点赞!
来源: http://blog.51cto.com/183530300/2124750