电报-Telegram(需要代理)是一款基于云的移动和桌面消息应用程序,专注于安全性和速度。深得开发程序员的喜爱

zabbix每日都有很多的警告,警告的通知可使用Email、短信等通知到用户。在GitHub上有这么一个项目Zabbix-in-Telegram,直接使用电报来转发到用户。类似微信公众号的效果,每时每刻都可以接受到。

效果图

image.png

先决条件 已经有的直接跳到正式安装步骤

  • 创建这个目录/usr/lib/zabbix/alertscripts
  • 拥有一个TelegramAPI机器人
  • 安装git
先决条件步骤
创建zabbix可执行脚本的目录位置及安装git
创建TelegramAPI机器人

首先,通过以下链接连接到 @BotFather :https://telegram.me/BotFather。当在电报中打开与 BotFather 的聊天窗口时,按下Start按钮。

你会看到像这样的消息:

image.png
按 /newbot 命令,并输入您的机器人的名称。

image.png
在这之后,您必须为机器人设定用户名。按照屏幕上的说明操作即可。

image.png
选择用户名后,您的机器人将自动创建并可以使用。然后,您将看到如下消息。
image.png

请注意: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,创建对应的告警媒介,动作,用户

告警媒介设置

image.png

选项里面使用默认就可以

创建一个动作

image.png

告警发送设置

image.png

请注意下面的后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}
恢复和更新操作设置(默认也可以)

image.png

告警主机:{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}
用户告警媒介选择

image.png

其他使用默认即可

收件人写你的telegram用户名(eg:@BotFather)没有的可以在telegram的设置里面的个人资料的info里面设置

到这里安装就结束了。结果如开题的第一张图片

我安装的时候遇到的问题

  • 图片显示不存在或没权限
  • zbxtg;graphs 分号被我写成冒号
  1. 第一个问题是因为我使用了不能登录前端web无法登录的用户,图片id能获取到,但是没有权限读。然后我在zbxtg_settings.py中设置为Admin用户,并且将告警媒介和动作删了重做。结果都没有用
    最后用了一个下午Google问题。没有解决办法,最后将/usr/lib/zabbix/alertscripts里面的zbxtg.py zbxtg_settings.example.py zbxtg_group.py都删掉重新copy一份。最后才有效
  2. 分号写成冒号,测试的时候是没有图片的。正常情况下,机器人一个警告发2条消息,一个text一个图片

Done.TingBob


zhang12c
6 声望1 粉丝

渺小普通人运维转游戏前端开发