在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個字符,多了的話就全部不顯示了。
所以不太好用,不推薦。