zabbix 配置 telgram 告警

zabbix4.0 配置 Zabbix-in-Telegram

telegram大概是国外最有逼格的聊天软件了,下面介绍用zabbix+telegram报警机制,自动给用户发送报警信息

国内推荐使用丁丁,微信或者qq等工具.



1. 申请 Telegram 机器人

申请机器人参考: https://core.telegram.org/bots#creating-a-new-bot

1.访问 https://telegram.me/botfather ,使用使用 **/newbot **命令创建新的bot.

image.png


2.将新生成的 bot 加入需要被告警的 Tel 群组.输入一些文本.稍后获取信息.

3.然后访问 https://api.telegram.org/botXXX:YYY/getUpdates 获取信息.

botXXX:YYY 中XXX:YYY 请替换为获取的 token

image.png

  1. type:group 为 Tle 的组, title 对应组名,id 为组 ID.

  2. 执行 POST 测试机器人是否正常.

    curl -X POST "https://api.telegram.org/botXXX:YYYY/sendMessage" -d "chat_id=ZZZ&text=my sample text"

    ZZZ 替换为 刚获取的 组ID 例如 -2788747XXX

    text 中为文本内容

    image.png

    image.png

2. 配置 Zabbix-in-Telegram

zabbix in Telegram 配置: https://github.com/ableev/Zabbix-in-Telegram

  1. 打开zabbix_server配置,查看

    AlertScriptsPath=/usr/lib/zabbix/alertscripts
  2. clone 代码,安装依赖.

    git clone https://github.com/ableev/Zabbix-in-Telegram.git
    yum install python-pip
    cd Zabbix-in-Telegram/
    pip install -r requirements.txt
  3. 复制告警脚本至配置路径

    cp zbxtg.py zbxtg_settings.example.py zbxtg_group.py /usr/lib/zabbix/alertscripts/
    cd /usr/lib/zabbix/alertscripts/
    mv zbxtg_settings.example.py zbxtg_settings.py
  4. 修改 zbxtg_settings.py

    tg_key = "XXX:YYY"  # telegram bot api key
    zbx_server = "http://youip:port/zabbix/"  # zabbix server full url
    zbx_api_user = "Admin"zbx_api_pass = "zabbix"

    tg_key 是生成的 Tel Token.zabbix用户名密码必须是能够登陆的,且有权限.可以使用Admin.

  5. 测试脚本是否可以正常发送告警.

    调试

    您可以使用以下命令从命令行发送消息:

    ./zbxtg.py "@username" "first part of a message" "second part of a message" --debug

    @username 是 telgrame  需要接受告警的 用户名,或者组名.使用组名时,加 --group参数

    ./zbxtg.py "@toby" "重要通知" "你的节操余额不足,请及时充值"
    ./zbxtg.py "@test"  "重要通知" "你的节操 余额不足,..及时充值" --group

3.配置 zabbix-server-web

  1. 创建 报警媒介类型: 此配置为 3.0及以上版本配置

    image.png

  2. 创建 动作

    image.png

  3. 在 操作 中,填写触发后的消息内容和发送用户组或用户,如下


    image.png

    {{fire}}{{fire}}{{fire}}:告警节点:{TRIGGER.NAME}
    问题详情:  {ITEM.NAME}:{ITEM.VALUE}
    告警主机:  {HOST.NAME}
    告警时间:  {EVENT.DATE} {EVENT.TIME}
    告警等级:  {TRIGGER.SEVERITY}
    告警信息:  {TRIGGER.NAME}
    告警项目:  {TRIGGER.KEY1}
    当前状态:  {TRIGGER.STATUS}.{ITEM.VALUE}
    事件ID:  {EVENT.ID}
    zbxtg:graphs
    zbxtg:graphs_period=10800
    zbxtq:itemid:{ITEM.ID1}
    zbxtg:title:{HOST.HOST} - {TRIGGER.NAME}


  4. 在 恢复操作 中,填写触发后的消息内容和用户

    image.png

    {{OK}}{{OK}}{{OK}}:恢复节点:{TRIGGER.NAME}
    问题详情:  {ITEM.NAME}:{ITEM.VALUE}
    恢复主机:  {HOST.NAME}
    恢复时间:  {EVENT.DATE} {EVENT.TIME}
    事件等级:  {TRIGGER.SEVERITY}
    恢复项目:  {TRIGGER.KEY1}
    当前状态:  {TRIGGER.STATUS}.{ITEM.VALUE}
    事件ID:  {EVENT.ID}
    zbxtg:graphs
    zbxtg:graphs_period=10800
    zbxtq:itemid:{ITEM.ID1}
    zbxtg:title:{HOST.HOST} - {TRIGGER.NAME}
  5. 配置 用户,为被告警用户组添加 报警媒介.

    image.png

  6. 模拟告警, 观察 Tel 组是否可以收到告警.

    image.png