Check酱通过 Webhook 通知群晖 Synology Chat(完整实现教程)原创文章

玩技站长
玩技站长
管理员, Keymaster
11298
文章
1
粉丝
运维笔记评论87字数 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);
});

 

宝塔通知:

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

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

Check酱通过 Webhook 通知群晖 Synology Chat(完整实现教程)-图片1

通知消息内容展示:

Check酱通过 Webhook 通知群晖 Synology Chat(完整实现教程)-图片2

哪吒通知:

项目: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": "<p>服务器状态<br>温度:75°C<br>正常</p>"
}

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

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

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

{
  "id": 998,
  "title": "页面变动",
  "html": "<html>...</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
下载地址

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

匿名

发表评论

匿名网友
确定

拖动滑块以完成验证