跳转至

存储钩子

存储钩子在遥测写入数据库之前执行,用于校验、丰富和转发。

钩子类型

  • 表达式 — 修改传入数据点的 JavaScript 脚本。
  • Webhook — 将数据点发送到 HTTP URL。
  • WASM — 在沙箱内同进程执行的 WebAssembly(WASI)模块。

通用字段

  • 排序 — 钩子按升序执行。
  • 测点键 — 逗号分隔的适用测点键;为空表示适用于所有键。
  • 超时(毫秒) — 最长执行时间。
  • 失败策略 — 钩子失败时的处理方式:
  • 透传 — 仍然存储原始数据点。
  • 中止 — 不存储该数据点。
  • 死信 — 将数据点移入死信队列。

表达式示例

point.v_double = point.v_double * 2

WASM 钩子

WASM 钩子在沙箱内运行 WebAssembly(WASI)模块,无网络与文件系统访问。 数据点以单个 JSON 对象从模块的 stdin 传入;模块向 stdout 输出一个 JSON 对象,按与表达式钩子相同的契约覆盖数据点:

  • {"v_double": 42, "unit": "C"} 覆盖字段;
  • {"drop": true} 中止该数据点;
  • stdout 为空则保持数据点不变。

硬性预算:内存 16 MiB、输出 64 KiB、以及每个钩子配置的超时(死循环会被强杀)。 在钩子编辑器上传 .wasm 文件或粘贴标准 base64(config.module_b64),模块默认上限 2 MiB(可由运维配置)。编辑时模块字段留空表示保留已存储的二进制。模块在保存时会被 校验(编译),无效二进制会被立即拒绝。

可在死信队列页面查看并重放按 死信 策略拒绝的数据点。