zabbix 配置 telgram 告警

zabbix 配置 telgram 告警

zabbix 配置 Zabbix-in-Telegram

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

1. 申请 Telegram 机器人

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

  1. 访问 https://telegram.me/botfather ,使用使用 **/newbot **命令创建新的bot.
1557131783149
  1. 将新生成的 bot 加入需要被告警的 Tel 群组.输入一些文本.稍后获取信息.

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

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

1557132763450

  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 中为文本内容

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 = "KEY"  # 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 "@dave99" "重要通知" "你的节操余额不足,请及时充值"
      
      ./zbxtg.py "Myball-Warning" "@brock" "你的节操 余额不足,..及时充值" --group
      

3.配置 zabbix-server-web

  1. 创建 Media types: 此配置为 3.0及以上版本配置

    1557134307629
  2. 创建 action

    登录到页面中在configuration->Actions->Triggers->Create action创建一个action

    1557134537805

    创建新的时候注意可以设置触发器级别,下图配置为超过infomation级别就会触发此动作

    1557134688635

    在Operations中,填写触发后的message,内容如下

    1557134833494
    {{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}
    

    设置 Operations 中,发送的组或用户,指定使用 Media TYPES.

    1557134967723

    在 Recovery operrations 中,填写触发后的message,和Details

    1557135056672
    {{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}
    
  3. 配置User,为被告警用户组添加 Media.

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

推荐阅读更多精彩内容