Zabbix对接飞书告警

利用服务器和飞书API给飞书账号发消息,在很多实际的场景中会有作用,比如应用程序的报警通知,或者数据报表的通知等等,这里就简单总结一下步骤。

有两种方式可以实现往飞书发送告警消息

一.通过群组机器人在同一个群组内发送告警消息(只能发给同一个群里,无法发送到群外的个人消息)

1.新建一个群聊天、点击设置,并点击群机器人,添加一个群机器人
Zabbix对接飞书告警_第1张图片
Zabbix对接飞书告警_第2张图片Zabbix对接飞书告警_第3张图片

2.配置机器人信息,这里可自行配置,我这边演示,默认即可,这里有个关键信息是 webhook地址
Zabbix对接飞书告警_第4张图片Zabbix对接飞书告警_第5张图片
3.编辑服务器上的发送脚本,并测试

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import requests
import json
import sys
import os
import datetime

# 你复制的webhook地址粘贴进url内
url = "https://open.feishu.cn/open-apis/bot/v2/hook/d61e7b5b-2c40-4de9-a263-10x1a0f6e037"


def send_message(message):
    payload_message = {
        "msg_type": "text",
        "content": {
            "text": message
        }
    }
    headers = {
        'Content-Type': 'application/json'
    }

    response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))
    return response


if __name__ == '__main__':
    text = sys.argv[1]
    send_message(text)

在这里插入图片描述在这里插入图片描述
这里注意一下,服务器上的脚本要提前确认好有执行权限,python环境正常。

二.通过自建应用发送告警消息(可以发给群组也可以发给个人)

1.先自己建立一个飞书测试的企业,信息随便填,这里不赘述;第一步是中建应用,在开发者后台自建Zabbix对接飞书告警_第6张图片

2.配置自建应用,这里只配置关键的功能,其他的可以自行配置,主要2个,机器人启用和权限开通;发送消息和通过手机号获取用户ID的权限

Zabbix对接飞书告警_第7张图片Zabbix对接飞书告警_第8张图片
Zabbix对接飞书告警_第9张图片

3.先将机器人拉到任意一个群内获取chatid,这一步一定要做;然后再复制App ID及App Secret到脚本内,并测试。
Zabbix对接飞书告警_第10张图片

#!/usr/bin/python3
#conding=utf-8
import requests,json,sys
mobiles=sys.argv[1]
subject=sys.argv[2]
messages=sys.argv[3]
def gettenant_access_token():
    tokenurl="https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
    headers={"Content-Type":"application/json"}
    data={
        "app_id":"XXXXX",
        "app_secret":"XXXXXXX"

    }
    request=requests.post(url=tokenurl,headers=headers,json=data)
    response=json.loads(request.content)['tenant_access_token']
    return response
def getuserid(tenant_access_token):
    mobiles="17317452675"
    userurl="https://open.feishu.cn/open-apis/user/v1/batch_get_id?mobiles=%s" % mobiles
    headers={"Authorization":"Bearer %s" % tenant_access_token}
    request=requests.get(url=userurl,headers=headers)
    response=json.loads(request.content)['data']['mobile_users'][mobiles][0]['user_id']
    return response
def getchatid(tenant_access_token):
    #获取chatid
    chaturl="https://open.feishu.cn/open-apis/chat/v4/list?page_size=20"
    headers={"Authorization":"Bearer %s"%tenant_access_token,"Content-Type":"application/json"}
    request=requests.get(url=chaturl,headers=headers)
    response=json.loads(request.content)['data']['groups'][0]['chat_id']
    return response
def sendmes(user_id,chat_id,tenant_access_token):
    #向群里发送消息
    sendurl="https://open.feishu.cn/open-apis/message/v4/send/"
    headers={"Authorization":"Bearer %s"%tenant_access_token,"Content-Type":"application/json"}
    data={"chat_id":chat_id,
        "msg_type":"text",
        "content":{
            "text":"%stest"%(messages,user_id)
        }
    }
    #给个人发送消息
    data={"user_id":user_id,
          "msg_type":"text",
          "content":{
              "text":"%stest"%(messages,user_id)
         }
    }
    request=requests.post(url=sendurl,headers=headers,json=data)
    print(request.content)


tenant_access_token=gettenant_access_token()
user_id=getuserid(tenant_access_token)
chat_id=getchatid(tenant_access_token)
sendmes(user_id,chat_id,tenant_access_token)

Zabbix对接飞书告警_第11张图片

测试正常!

附一些报错的原因及解决办法:

1.应用权限不足,无法通过手机号获取用户id


Traceback (most recent call last):
  File "./feishuapp.py", line 55, in 
    user_id=getuserid(tenant_access_token)
  File "./feishuapp.py", line 23, in getuserid
    response=json.loads(request.content)['data']['mobile_users'][mobiles][0]['user_id']

2.没有把机器人加入或者创建群聊,无法获取chatid

Traceback (most recent call last):
  File "./feishuapp.py", line 55, in 
    chat_id=getchatid(tenant_access_token)
  File "./feishuapp.py", line 30, in getchatid
    response=json.loads(request.content)['data']['groups'][0]['chat_id']
IndexError: list index out of range


三.补充zabbix端的配置

告警媒介:feishu.py是脚本名
Zabbix对接飞书告警_第12张图片用户配置
Zabbix对接飞书告警_第13张图片

动作配置
Zabbix对接飞书告警_第14张图片

你可能感兴趣的:(Zabbix,zabbix,服务器,机器人)