在grafana中的connect point中使用webhook的方式推送到飞书,始终无法触发告警,原因是grafana推送的格式飞书不识别,现有两种方式
1.使用中转服务
使用flask搭建一个服务,grafana告警先通过webhook发送到web服务中,格式化之后再发送到飞书
from flask import Flask, request
import requests
import jsonapp = Flask(__name__)FEISHU_WEBHOOK = "https://open.feishu.cn/open-apis/bot/v2/hook/xxx" # 你的飞书机器人地址@app.route('/grafana-to-feishu', methods=['POST'])
def handle_grafana():data = request.jsonmessage = data.get("message", "No message")# 构造飞书 post 消息feishu_payload = {"msg_type": "post","content": {"post": {"zh_cn": {"title": "Grafana 告警通知","content": [[{"tag": "text", "text": message}]]}}}}# 发送到飞书r = requests.post(FEISHU_WEBHOOK, data=json.dumps(feishu_payload), headers={'Content-Type': 'application/json'})return "ok", r.status_code
2. 使用飞书机器人助手
https://botbuilder.feishu.cn/home
在我的指令中新建机器人指令,选择触发器,有个grafana告警
选择操作,根据文档指引操作添加机器人
这里消息标题就是grafana中json的各个部分,好用的只有消息,即对应grafana的message部分
然而坑的地方是grafana原生的告警只支持"msg_type": “test”,也就是说grafana告警的message中的换行符等不能转译,且字数限制为2048个字符,多了的话就全部不显示了。
所以不太好用,不推荐。