怎么用Python编写钉钉机器人的自动化监控告警脚本?

小婷酱_4049

小婷酱_4049

2026-09-18

374人浏览

原创

用requests.post发送钉钉消息需指定content-type为application/json,传入合法json数据,并确保webhook url含正确access_token;常见错误包括json格式非法致400、token错误或机器人禁用致403。

怎么用python编写钉钉机器人的自动化监控告警脚本?

如何用 requests.post 发送钉钉机器人消息

钉钉机器人最基础的告警能力,就是通过 HTTPS POST 向 Webhook 地址推送 JSON 数据。不依赖 SDK,纯 requests 就够用,也更可控。

关键点在于:必须带 Content-Type: application/json 请求头;消息体必须是合法 JSON;Webhook URL 末尾的 access_token 参数不能漏或拼错。

  • 常见错误:400 Bad Request 多因 JSON 格式非法(比如中文没加双引号、逗号多写);403 Forbidden 基本是 token 错、URL 被手动改过、或机器人被禁用
  • 推荐用 json.dumps(..., ensure_ascii=False) 避免中文乱码
  • 简单文本消息示例:
import requests
import json
<p>url = "<a href="https://www.php.cn/link/93b5129e24b9c92e5b8e7115056b46bd">https://www.php.cn/link/93b5129e24b9c92e5b8e7115056b46bd</a>"
data = {
"msgtype": "text",
"text": {"content": "【告警】服务响应超时 > 5s"},
"at": {"isAtAll": False}
}
requests.post(url, headers={"Content-Type": "application/json"}, data=json.dumps(data, ensure_ascii=False))</p>

怎么构造带链接和按钮的富文本告警(actionCard 类型)

纯文本太单薄,生产环境通常需要跳转到 Grafana、Kibana 或运维平台。钉钉支持 actionCard 类型,能内嵌标题、描述、按钮,且点击直接唤起浏览器。

注意:actionCard 不支持 Markdown,按钮最多 1 个(singleURL)或最多 2 个(btns),且所有 URL 必须是 HTTPS 协议。

  • 如果填了 HTTP 链接,消息会发出去但按钮置灰不可点
  • btnOrientation 设为 "0" 是横向排列(默认),"1" 是纵向
  • 示例(单按钮跳转监控大盘):
data = {
    "msgtype": "actionCard",
    "actionCard": {
        "title": "【P0 级告警】API 接口异常率突增",
        "text": "⚠️ 当前异常率 23.6%(阈值 5%)\n\n- 时间:2024-06-12 14:22\n- 实例:api-service-03\n- 查看详情 →",
        "singleTitle": "打开 Grafana",
        "singleURL": "https://grafana.example.com/d/abc/api-error-rate"
    }
}

如何避免被钉钉限流导致告警丢失(atMobiles 和频率控制)

钉钉对机器人有明确限流策略:每分钟最多 20 条,每秒最多 20 次调用。高频告警(如全量接口失败)极易触发限流,返回 {"errcode":310000,"errmsg":"invalid access"} —— 这不是认证失败,是被限了。

python全能编程助手
python全能编程助手

SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、

下载

真正有效的缓解方式不是“重试”,而是从源头收敛:

  • atMobiles 替代 isAtAll=True,只 @ 当值人(需提前在群中开启“@所有人”权限限制)
  • 聚合告警:同一类错误 5 分钟内只发 1 条,附上累计次数和最近 3 条详情
  • 加随机延迟(time.sleep(random.uniform(0.1, 0.5)))防瞬时毛刺,但治标不治本
  • 关键路径建议搭配企业微信/短信兜底,钉钉只做辅助通道

为什么用 sign 签名验证的机器人更安全(以及怎么生成)

不带签名的 Webhook 地址一旦泄露,任何人可伪造告警。开启“加签”后,URL 中多了 signtimestamp 参数,服务端会校验签名有效性,大幅提升安全性。

签名生成逻辑固定:把 timestamp + "\n" + secret 做 SHA256 Hex 编码,再 Base64 编码。Python 一行搞定:

import hmac
import base64
import hashlib
<p>timestamp = str(int(time.time() * 1000))
secret = "SECxxx"
sign = base64.b64encode(hmac.new(secret.encode(), (timestamp + "\n" + secret).encode(), digestmod=hashlib.sha256).digest()).decode()</p>

之后请求 URL 变成:https://www.php.cn/link/93b5129e24b9c92e5b8e7115056b46bd&timestamp={timestamp}&sign={sign}。漏传 timestamp 或签名错,直接 403。

这个环节最容易忽略的是:时间戳单位必须是毫秒,且服务器时间与 NTP 误差不能超过 1 小时——否则签名永远验不过。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

python 钉钉

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1531

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

3564

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1549

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

20277

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2527

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2587

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1063

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

576

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2003

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程