电报-Telegram(需要代理)是一款基于云的移动和桌面消息应用程序,专注于安全性和速度。深得开发程序员的喜爱
zabbix每日都有很多的警告,警告的通知可使用Email、短信等通知到用户。在GitHub上有这么一个项目Zabbix-in-Telegram,直接使用电报来转发到用户。类似微信公众号的效果,每时每刻都可以接受到。
效果图
先决条件 已经有的直接跳到正式安装步骤
- 创建这个目录
/usr/lib/zabbix/alertscripts
- 拥有一个TelegramAPI机器人
- 安装git
先决条件步骤
创建zabbix可执行脚本的目录位置及安装git
创建TelegramAPI机器人
首先,通过以下链接连接到 @BotFather :https://telegram.me/BotFather。当在电报中打开与 BotFather 的聊天窗口时,按下Start按钮。
你会看到像这样的消息:
按 /newbot 命令,并输入您的机器人的名称。
在这之后,您必须为机器人设定用户名。按照屏幕上的说明操作即可。
选择用户名后,您的机器人将自动创建并可以使用。然后,您将看到如下消息。
请注意:API Token 是机器人与Telegram系统通信的关键。请保持安全! 不要通过电子邮件或除 Telegram 以外任何其他即时消息应用程序发送机器人令牌。
注意
API token 需要保存备用,以后就是用你自己创建的这个机器人来给你发消息,启用机器人你得想和它发个消息,类似买了手机号码,你得打个电话激活号码
正式部署
项目环境
#克隆项目
git clone https://github.com/ableev/Zabbix-in-Telegram.git
#下载pip
sudo yum install python-pip #测试python3-pip也可以
#安装requirements.txt文件中的依赖
cd Zabbix-in-Telegram/
pip install -r requirements.txt
#将脚本拷贝到zabbix的脚本可执行目录
cp zbxtg.py zbxtg_settings.example.py zbxtg_group.py /usr/lib/zabbix/alertscripts
#zbxtg_group.py用与将告警发送到群组中
修改配置文件
tg_key = "XYZ" # telegram bot api key 机器人的tokenID
zbx_server = "http://127.0.0.1/zabbix/" # zabbix server full url
zbx_api_user = "api" #要有可读权限的用户
zbx_api_pass = "api"
zbx_api_verify = True # http的用True https - False
配置是否成功测试
#文字测试
./zbxtg.py @telegram_name "主题" "内容"
#图像测试
./zbxtg.py @telegram_name test "$(echo -e 'zbxtg;graphs: \nzbxtg;graphs_period=10800\nzbxtg;itemid:100648\nzbxtg;title:ololo')" --debug
相对应的在电报里能收到机器人的消息
配置zabbix-server-web
登录到zabbix,创建对应的告警媒介,动作,用户
告警媒介设置
选项里面使用默认就可以
创建一个动作
告警发送设置
请注意下面的后4行,zbxtg后面是分号
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
zbxtg;graphs
zbxtg;graphs_period=10800
zbxtg;itemid:{ITEM.ID1}
zbxtg;title:{HOST.HOST} - {TRIGGER.NAME}
恢复和更新操作设置(默认也可以)
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
用户告警媒介选择
其他使用默认即可
收件人写你的telegram用户名(eg:@BotFather)没有的可以在telegram的设置里面的个人资料的info里面设置
到这里安装就结束了。结果如开题的第一张图片
我安装的时候遇到的问题
- 图片显示不存在或没权限
- zbxtg;graphs 分号被我写成冒号
- 第一个问题是因为我使用了不能登录前端web无法登录的用户,图片id能获取到,但是没有权限读。然后我在
zbxtg_settings.py
中设置为Admin用户,并且将告警媒介和动作删了重做。结果都没有用
最后用了一个下午Google问题。没有解决办法,最后将/usr/lib/zabbix/alertscripts
里面的zbxtg.py zbxtg_settings.example.py zbxtg_group.py
都删掉重新copy一份。最后才有效 - 分号写成冒号,测试的时候是没有图片的。正常情况下,机器人一个警告发2条消息,一个text一个图片
Done.TingBob
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。