python-威尼斯人2299

玩技站长
管理员, keymaster
7002
文章
2
粉丝
运维笔记3216字数 3128阅读10分25秒阅读模式
所属分类:运维笔记 应用平台: synology chat 资源版本: docker25.1.5 最后更新:2025年7月23日 09:17

前言说明:

在日常服务器或网站监控中,check酱 是一款轻量级的可视化监控工具,它支持通过 webhook 推送告警通知。与此同时,synology chat 是很多人内部协作首选的聊天平台。如果你希望:

  • 监控结果自动通知到 chat 群组

  • 支持格式化展示多个字段

  • 自动换行、美化结构,避免“堆一团”

本文将教你如何通过一个轻量级的 docker webhook 转发服务,将 check酱 的 webhook 完美适配 synology chat,由于synology chat无法直接接受json格式请求需要需要咱们自己搭建一套转发服务。

项目亮点:

  • 支持 check酱 webhook 的 jsonpayload= 格式;

  • 自动解析字段并转为中文别名(如 url → “目标地址”);

  • 多行字段(如 value/html)支持 🔸 图标并换行美观显示;

  • 兼容 synology chat 的换行规范(使用 \n);

  • 容器化部署,一键启动,稳定可靠!

 

整体架构:

check酱 ➝ webhook (post) ➝ 转发器 (flask   docker) ➝ synology chat webhook

环境准备:

群晖设置:

  1. 打开 synology chat

  2. 点击头像 → 整合传入 webhook

  3. 新建 webhook,记录其 url,例如:

https://yourdomain:5001/webapi/entry.cgi?api=syno.chat.external&method=incoming&version=2&token=xxxxxxxx

转发部署(docker)

我们使用 python flask 编写一个简洁的转发服务,自动将接收到的 check酱 webhook 转为 chat 所需格式。

评论后刷新
由于本站被大量采集,顾添加评论验证防止因采集造成的网络崩溃
发表评论

拓展知识:

check酱自定义脚本:脚本类型(javascript node16.15.0)结果变量一定是要stdout命名

const https = require('https');
// 从环境变量中读取 url
const url = process.env.url;
https.get(url, (res) => {
  let raw = '';
  res.on('data', chunk => raw  = chunk);
  res.on('end', () => {
    try {
      const json = json.parse(raw);
      if (!json.data || !array.isarray(json.data)) {
        console.error('返回的数据格式不正确');
        process.exit(1);
      }
      // 取前 10 条数据,并提取 title、hot_value、label_desc、url
      const stdout = json.data
        .slice(0, 10)
        .map(item => ({
          title: item.title,
          hot_value: item.hot_value,
          label_desc: item.label_desc,
          url: item.url
        }));
      // 输出到 stdout,作为监控任务返回值
      console.log(json.stringify(stdout, null, 2));
    } catch (e) {
      console.error('解析 json 失败:', e.message);
    }
  });
}).on('error', err => {
  console.error('请求失败:', err.message);
});

 

宝塔通知:

配置页面和位置  宝塔面板 - 设置 - 告警通知 - 自定义消息通道 - 添加

评论后刷新
由于本站被大量采集,顾添加评论验证防止因采集造成的网络崩溃
发表评论

通知消息内容展示:

哪吒通知:

项目:https://github.com/nezhahq/nezha

位置:后台管理 - 通知 - 添加 -请求体 输入

写法:实时出站:{{ printf \"%.2f\" (div #server.netoutspeed# 1048576) }} mb/s   (字节转兆

{
  "title": "🚨 #server.name#",
  "desp": "⚠️ 异常通知\n\n💻 ==基本信息:==\n\n-> 名称:#server.name#\n-> ip地址:#server.ip#\n-> ipv4:#server.ipv4#\n\n📊 ==资源情况:==\n\n-> cpu使用:#server.cpu#%\n\n🌐 ==网络流量:==\n\n-> 实时入站:{{ printf \"%.2f\" (div #server.netinspeed# 1048576) }} mb/s\n-> 实时出站:{{ printf \"%.2f\" (div #server.netoutspeed# 1048576) }} mb/s\n-> 总入流量:{{ printf \"%.2f\" (div #server.transferin# 1048576) }} mb\n-> 总出流量:{{ printf \"%.2f\" (div #server.transferout# 1048576) }} mb\n\n📈 ==系统负载:==\n\n-> 1 分钟:#server.load1#\n-> 5 分钟:#server.load5#\n-> 15 分钟:#server.load15#"
}

其他通知:

格式支持

1. 标准平铺结构(普通kv)

{
  "id": 101,
  "name": "服务器1",
  "cpu": 85,
  "memory": "70%",
  "status": "运行中"
}

2. 多级嵌套结构(dict 套 dict 或 list)

{
  "name": "服务a",
  "value": {
    "cpu": "88%",
    "memory": {
      "total": "8gb",
      "used": "5.5gb"
    }
  }
}

3. 字符串形式的嵌套 json(字符串内是 json)

{
  "value": "{\"cpu\": 90, \"mem\": \"8gb\", \"disk\": {\"used\": 40}}"
}

4. 包含 html 或换行标签的内容

{
  "info": "

服务器状态
温度:75°c
正常

" }

5. 包含表达式字段(如监控计算值)

{
  "netin": 10485760,
  "text": "实时入网速:{{ printf \"%.2f\" (div #netin# 1048576) }} mb/s"
}

6. check酱类格式(包含 link/html/data)

{
  "id": 998,
  "title": "页面变动",
  "html": "...",
  "link": "https://example.com",
  "data": "{\"变化\": \"新增字段\"}"
}

👉 htmllinkdata 会被自动跳过或特殊处理,避免污染通知信息。

7. list 格式(作为顶层或字段)

{
  "value": [
    {"item": "a", "count": 5},
    {"item": "b", "count": 8}
  ]
}
👉 会列出所有条目,并自动编号,如:
🔹 第 1 项:
   🔸 item: a
   🔸 count: 5

8. 空值处理

{}
👉 会显示 📭 收到空数据,避免报错。

特殊规则支持

  • ✅ 英文键支持百度翻译;

  • ✅ 自定义键名映射(通过 key_mapping_json);

  • ✅ 支持任意层级的数据深度;

  • ✅ chatgpt 聊天支持纯文本或代码智能判断。

✅覆盖了 99% 的 webhook 场景,特别适合以下平台推送格式:

  • ✅ check酱;

  • ✅ 哪吒监控;

  • ✅ uptimerobot、zabbix、grafana;

  • ✅ jenkins/github webhook;

  • ✅ prometheus alertmanager;

  • ✅ 自定义 json 通知等。

转发总结:

通过本教程,我们实现了:

  • ✅ check酱 webhook 与 synology chat 的无缝对接

  • ✅ 自动格式化与美化通知内容

  • ✅ 兼容多种 webhook 格式(payload / json / form)

  • ✅ 基于 docker 快速部署,无依赖

  • ✅ 支持宝塔面板的消息webhook通知

  • ✅ 兼容哪吒面板流量计算转换的webhook通知

  • ✅ 常见单位自动换算功能

本站镜像:

可以联系站长付费一键代搭服务

此隐藏内容仅限vip查看

更新日志:

2025年7月23日

修复了:网络速度转换 (b/s → mb/s) 流量数据转换 (b → gb) # kb → mb# mb → gb 按 1024 递进

2025年7月20日

更新了:常见单位换算功能网络速度转换 (b/s → mb/s) 流量数据转换 (b → gb) # kb → mb# mb → gb

2025年7月18日

更新了:哪吒面板webhook通知流量算法转换

2025年7月3日

更新了:支持宝塔面板通知到synology chat

2025年7月2日

更新了:支持字段自动映射

更新了:字段支持百度翻译

修复了:多层级index时提示无法转换的问题

修复了:多种json数据格式的支持

下载信息 资源名称check酱通知synology chat 应用平台synology chat 资源版本docker25.1.5 资源大小168kb
最近更新2025-7-23

原创声明:本文章为原创内容,所有文章均由博主亲自撰写,严格遵循原创原则。我们承诺不使用任何人工智能生成的内容,所发布的每一篇文章都经过深思熟虑,旨在为读者提供真实、有价值的观点和信息。我们坚信原创才是知识分享的根本,致力于为广大读者呈现最具真实性和独特性的文章。感谢您的支持与关注,欢迎持续关注1066vip威尼斯下载的原创内容。

  • 威尼斯人2299的版权提示:非本站文章仅供存储任何法律责任由作者承担
    免责声明:部分内容来自用户上传发布或新闻客户端自媒体如有侵权请反馈站长处理
  • 原创转载:阅读转载说明>>> https://www.playezu.com/974896.html
评论  3  访客  3
  1. 神田ワン

    帮大忙了。

  2. wyy

    试试

  3. gayr

    很棒!

发表评论

匿名网友
确定

拖动滑块以完成验证