dolphinschedule配置企微告警服务(WeChat群组)

该文章已生成可运行项目,

一、前置说明

ds配置好工作流后,比较重要的一个就是上线后的监控报警服务,如果你是基于企微作为协同办公的,WeChat群组预警必须是要安排上的,文章基于自建应用配合群组方式构建预警群,接入后,任务成功或者异常,会通过企微应用在群组内发消息通知,废话不多说,开干!

二、企微前置准备

img

1、企业id

企业微信登录管理后台

https://work.weixin.qq.com/wework_admin/frame

点击【我的企业】- 获取企业ID,如图所示

img

2、秘钥

这里可以通过获取自建应用来加入群聊,秘钥即为应用的Secret,获取方式为【企微管理后台】-【应用管理】-【自建应用】,具体如下

img

点击查看,会下发到管理员企微通知上;另外注意应用的可见范围,最好是全员可见,坑之一

img

3、群聊ID
一、配置应用可信ip

在获取chatid之前,我们必须确保当前服务器ip在可信ip之列,具体配置【应用管理】-【应用详情】-【企业可信IP】

img

这里默认你是经过服务器授权的,即已经完成【网页授权及JS-SDK】,否则是不允许配置企业可信ip的

img

注意这里的IP是公网IP,win的话可以百度输入ip,直接查看的到,如果是云服务器可以去后台查看公网ip

二、获取chatid

目前企微只支持通过api方式创建的群聊有chatid,另外创建群聊也需要获取具体加入群聊用户的userid,下面通过Linux的curl方式获取chatid,win可使用postman等工具。具体分三步,

  1. 获取token

https://developer.work.weixin.qq.com/document/path/91039

#corpid 上文的企业ID
#corpsecret 上文的Secret
curl --location https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
  1. 手机号获取用户ID

https://developer.work.weixin.qq.com/document/path/95402

curl --location 'https://qyapi.weixin.qq.com/cgi-bin/user/getuserid?access_token=YOU_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
   "mobile": "16666666666"
}'
  1. 获取chatid

创建群聊会话 - 接口文档 - 企业微信开发者中心

原接口里的chatid为非必填项,在这里尽量自定义,随机的结果比较长,放到DS会报错,这个坑要避

curl --location 'https://qyapi.weixin.qq.com/cgi-bin/appchat/create?access_token=YOU_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
    "name" : "数据预警",
    "owner" : "USERID",
    "userlist" : ["USERID1", "USERID2"],
    "chatid" : "datawarn001"
}'

上述获取完成后可以去DS配置告警组了,go

三、DS配置告警服务

管理员账户登录【安全中心】-【告警实例管理】

img

新建WeChat告警实例,注意这里的发送类型选择GROUP CHAT/群聊

img

配置好之后新建shell类型任务测试可用性

img

这里运行任务记得修改【通知策略】为失败发或者成功失败都发,小细节,然后选择你刚刚新建的报警组

img

具体通知如下

img

本文章已经生成可运行项目
### Grafana 配置企微机器人告警信息模板的指南 在 Grafana 中配置企微企业微信)机器人告警信息模板,需要结合 Grafana 的告警功能和企微机器人的 API。以下是关于如何实现这一目标的详细说明。 #### 1. 模板语法基础 Grafana 使用 Go 模板语言来定义告警消息的内容。以下是一个示例模板,用于生成包含告警详情的消息: ```go {{ define "WeCom.title" }} {{ len .Alerts.Firing }} 条告警触发, {{ len .Alerts.Resolved }} 条告警恢复 {{ end }} {{ define "WeCom.message" }} {{- if gt (len .Alerts.Firing) 0 -}} {{ range $i, $alert := .Alerts.Firing }} [告警名称]: {{ index $alert.Labels "alertname" }} [描述]: {{ index $alert.Annotations "description" }} [触发时间]: {{ (.StartsAt).Format "2006-01-02 15:04:05" }} --- {{ end }}{{- end }} {{- if gt (len .Alerts.Resolved) 0 -}} {{ range $i, $alert := .Alerts.Resolved }} [告警名称]: {{ index $alert.Labels "alertname" }} [描述]: {{ index $alert.Annotations "description" }} [状态]: 已恢复 [触发时间]: {{ (.StartsAt).Format "2006-01-02 15:04:05" }} [恢复时间]: {{ (.EndsAt).Format "2006-01-02 15:04:05" }} --- {{ end }}{{- end }} {{ end }} ``` 此模板定义了两个部分:标题和消息内容。标题显示当前告警的数量,而消息内容则根据告警状态(触发或恢复)动态生成具体信息[^1]。 #### 2. 创建 Webhook 联络点 为了将 Grafana 的告警信息发送到企微机器人,需要创建一个 Webhook 类型的联络点。以下是步骤概述: - 在 Grafana 的告警规则中,选择“Webhook”作为通知方式。 - 配置 Webhook URL 为企微机器人的接口地址,例如 `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_webhook_key`。 #### 3. 使用中间服务格式化消息 如果需要对消息进行更复杂的处理,可以使用 Flask 等工具搭建中间服务。以下是一个示例代码,展示如何接收 Grafana 的告警消息并将其转换为企业微信支持的格式: ```python from flask import Flask, request import requests import json app = Flask(__name__) WECHAT_WEBHOOK = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_webhook_key" @app.route('/grafana-to-wechat', methods=['POST']) def handle_grafana(): data = request.json message = data.get("message", "No message") # 构造企业微信消息 wechat_payload = { "msgtype": "markdown", "markdown": { "content": f"Grafana 告警通知\n> {message}" } } # 发送至企业微信 r = requests.post(WECHAT_WEBHOOK, data=json.dumps(wechat_payload), headers={'Content-Type': 'application/json'}) return "ok", r.status_code if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` 上述代码实现了从 Grafana 接收告警消息,并将其以 Markdown 格式发送到企微机器人[^2]。 #### 4. 测试与验证 完成配置后,可以通过触发告警规则来测试消息是否正确发送到企微机器人。确保模板中的字段与实际告警数据匹配,并调整格式以满足需求。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值