集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案
本页是一篇介绍“集成 Prometheus 与 DolphinDB 规则引擎”的文章,并给出作者署名与发布日期信息。
Source: https://dolphindb.cn/blogs/331
What this page covers
- 方案背景与 Prometheus 原生告警体系的痛点梳理。
- Prometheus 数据与 DolphinDB 规则引擎融合的目标与架构要点。
- 使用 HttpClient 插件调用 Prometheus HTTP API 获取指标并写入 DolphinDB。
- Prometheus HTTP API 的状态码、响应格式、即时/范围查询接口与参数。
- 批量历史数据导入示例:TSDB 表、query_range 拉取与写入流程。
- 资源监控用例:关键指标、阈值告警与“流表+分布式表”存储架构。
- 规则热更新:updateRule/deleteRule 在线调整阈值与验证方式。
技能认证特训营第二期正式开启(限时报名)
页面顶部包含活动报名引导与优惠提示。
- 提供“技能认证特训营第二期”的报名入口。
- 该入口以页面顶部引导形式呈现。
集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案(作者与日期)
本节给出文章标题、作者署名与发布日期信息。
- 作者署名为 HuangWeifeng。
- 发布日期为 2026-03-10。
1 概述:方案背景与痛点
说明云原生场景下监控复杂度上升,并列出仅依赖 Prometheus 原生告警体系的主要不足。
- Prometheus 被描述为云原生生态中的事实监控标准。
- 仅依赖 Prometheus 原生告警体系难以覆盖复杂业务监控与告警需求。
- 告警规则以 YAML 分散配置会带来规则膨胀与变更成本问题。
- 多 exporter 数据时间不对齐会降低规则可读性与可维护性。
- Prometheus 被描述为不具备高性能分布式存储与计算能力以支撑长期分析。
1.2 DolphinDB 规则引擎监控方案(目标与架构)
提出将 Prometheus 监控数据与 DolphinDB 规则引擎融合的方案目标、能力点与架构示意说明。
- 方案目标是将 Prometheus 监控数据与 DolphinDB 规则引擎深度融合。
- 规则引擎用于对监控指标进行实时计算。
- 方案可通过插件快速集成企业现有告警体系。
- 方案描述为不引入其他中间件,以降低系统复杂性与资源消耗。
- 监控规则在 DolphinDB 中集中式管理,并支持热更新。
2 Prometheus 监控指标同步(HttpClient + HTTP API)
介绍使用 DolphinDB HttpClient 插件调用 Prometheus HTTP API 获取指标并写入 DolphinDB 表的方式。
- HttpClient 插件可调用 Prometheus HTTP API 实时获取监控指标。
- 获取的数据可在格式转换后写入 DolphinDB 分布式表或流表。
- 提供 HttpClient 插件文档链接以供参考。
2.1 Prometheus HTTP API 简介(状态码、响应格式、查询接口)
概述 Prometheus HTTP API 的根路径、状态码、JSON 响应封装,以及即时查询与范围查询的端点和参数。
- Prometheus HTTP API 根路径为 /api/v1。
- 请求正确执行时返回 2xx 状态码。
- 参数缺失或不正确时返回 400 Bad Request。
- 表达式无法执行时返回 422 Unprocessable Entity。
- 查询超时或中止时返回 503 Service Unavailable。
2.2 Promethus 数据同步案例:批量历史数据导入
给出创建 TSDB 引擎表、调用 query_range 拉取历史数据、解析 JSON 并写入 DolphinDB 分布式表的示例流程与代码。
- 示例创建了 engine="TSDB" 的表结构用于存储监控数据。
- 示例包含按月分区并按 timestamp 分区的设计。
- 示例使用 loadPlugin("httpClient") 加载插件。
- 示例描述 query_range 返回整型时间戳,单位为秒,起点为 1970-01-01。
- 示例给出将秒级 epoch 转为 DolphinDB TIMESTAMP 的方法。
3 集成 DolphinDB 规则引擎与 Prometheus:资源监控方案与流程
以数据库资源监控为例,说明采集关键指标并通过规则引擎阈值告警,以及流表+分布式表双层存储架构与流程图。
- 示例监控对象包括 CPU、内存、磁盘空间与网络流量等资源。
- 示例指标包含 cpuUsage、memoryUsed、diskFreeSpaceRatio 等。
- 示例给出 cpuUsage、diskFreeSpaceRatio、networkRecvRate 的阈值规则。
- 示例采用流表作为规则引擎输入与缓冲层。
- 示例采用分布式表用于历史数据存储。
3.2 程序实现:数据接入、告警输出与规则热更新
概述程序实现的三部分,并分别给出流表接入与轮询、规则引擎与告警回调、规则热更新方法与注意事项。
- 实现内容包含监控数据接入到流表的部分。
- 实现内容包含规则引擎告警输出与回调的部分。
- 实现内容包含规则热更新的部分。
3.2.1 监控数据接入 DolphinDB 流表(表结构、轮询与入库)
定义流表与分布式告警表结构,提供即时查询与定时拉取函数,并演示提交作业拉取 Prometheus 指标。
- 示例创建并共享持久化流表 dataReceiveTable。
- dataReceiveTable 列包含 metricName、timestamp、value、instance、job。
- query 函数用于发送即时查询并将 HTTP 响应解析为 table。
- pullData 函数用于定时轮询 Prometheus Server 获取数据。
- 示例说明轮询方式可减少对监控目标端的侵入性。
图 3-2:拉取的监控指标(样例说明)
展示从 Prometheus 拉取的实时监控指标数据样例并解释字段含义与指标示例。
- 本节展示了从 Prometheus 拉取到的监控指标样例。
- 本节对样例字段含义进行说明。
3.2.2 规则引擎监控预警(ruleSets、回调、订阅与性能注意事项)
介绍规则引擎用途与 createRuleEngine 参考链接,给出 ruleSets 初始化、邮件/企业微信告警回调示例、订阅流表,以及高频告警下 callback 同步 I/O 的注意事项。
- DolphinDB 规则引擎被描述为规则检查与告警模块,支持集中化运维。
- 提供 createRuleEngine 文档链接以供参考。
- 示例 ruleSets 初始化包含 cpuUsage、diskFreeSpaceRatio、networkRecvRate 等索引与规则。
- 示例包含邮件与企业微信机器人告警推送方式。
- 在高频告警下不建议在同步 callback 中直接执行 I/O 操作。
图 3-3 与图 3-4:引擎状态与报警筛选
展示规则引擎状态监控界面与通过 rule=true 筛选告警数据的结果示意。
- 示例展示规则引擎的状态监控信息。
- outputTable 包含原始监控信息与判断结果 rule(BOOL array)。
- 示例可用 rule[0]=true 筛选超过阈值的数据。
3.2.3 规则集热更新(updateRule/deleteRule 示例)
说明随工况变化动态调整阈值的需求,并展示通过 updateRule 在线更新规则及验证告警输出的示例与截图说明。
- 规则集热更新支持运行时新增、修改、删除规则。
- 支持通过 updateRule 和 deleteRule 实现热更新。
- 示例展示将 CPU 阈值更新为 85 的 updateRule 调用。
- 示例通过插入样例数据验证规则更新效果。
- 本节强调阈值需要随工况变化进行动态调整。
4 总结
归纳集成方案带来的集中化告警、简洁架构与运维便利性,并指出解决的传统痛点。
- 方案总结包含“监控告警集中化、架构简洁、运维便捷”。
- 方案用于应对规则分散难管理的问题。
- 方案用于降低线上规则调整成本。
- 方案用于缓解监控与长期存储分析脱节的问题。
5 附件(脚本下载)
提供示例脚本 pullMetric.dos、metricData.dos、ruleEngine.dos 的下载链接。
- 提供 pullMetric.dos 脚本链接。
- 提供 metricData.dos 脚本链接。
- 提供 ruleEngine.dos 脚本链接。
Facts index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案 | 发布日期 | 2026-03-10 | high |
| 集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案 | 作者署名 | HuangWeifeng | high |
| Prometheus | 定位/地位 | 作为云原生生态中事实上的监控标准,在指标采集、存储和基础查询方面表现出色,已被大量企业用于构建监控体系的基础设施层 | medium |
| Prometheus 原生告警体系 | 不足 | 仅依赖 Prometheus 原生告警体系难以满足复杂业务场景下的监控与告警需求 | medium |
| Prometheus 告警规则管理 | 成本/问题 | 告警规则以 YAML 文件形式分散配置,随着系统与指标增长导致规则文件数量膨胀;修改依赖人工排查与运维流程,难以频繁调整,不利于跨团队协作,演变为“配置负债” | medium |
| Prometheus 复杂规则 | 困难点 | 多个 exporter 的数据往往时间不对齐,需要聚合与对齐处理(在 yaml 编写清洗逻辑),导致规则可读性和可维护性下降 | medium |
| Prometheus 存储与计算能力 | 不足 | 不具备高性能的分布式存储与计算能力,企业难以对大量历史监控数据进行长期存储和分析 | medium |
| DolphinDB 规则引擎监控方案 | 方案描述 | 将 Prometheus 的监控数据与 DolphinDB 规则引擎深度融合,构建易于运维管理、高性能的监控体系 | high |
| DolphinDB 规则引擎监控方案 | 实时监控与告警能力 | 通过规则引擎对监控指标进行实时计算;插件快速集成企业现有告警体系 | medium |
| DolphinDB 规则引擎 | 处理能力 | 每秒可处理高达百万级别的规则判断 | medium |
| DolphinDB 规则引擎监控方案 | 架构与依赖 | 不引入其他中间件,降低监控系统复杂性与资源消耗 | medium |
| DolphinDB 分布式数据库 | 存储与分析能力(用于监控/告警数据) | 可将监控数据、告警数据持久化存储至 DolphinDB 分布式数据库,支持长期趋势分析、容量规划与运维工作复盘分析 | medium |
| DolphinDB 规则管理 | 集中化与热更新 | 规则在 DolphinDB 中集中式管理,通过脚本语言 Dlang 编写;监控规则支持热更新 | high |
| DolphinDB HttpClient 插件 | 与 Prometheus 的集成方式 | 支持调用 Prometheus HTTP API 实时获取监控指标数据;经过数据格式转换后可写入 DolphinDB 分布式表或流表 | high |
| HttpClient 插件文档 | 参考链接 | https://docs.dolphindb.cn/zh/plugins/httpClient/httpclient.html | high |
| Prometheus HTTP API | 根路径 | /api/v1 | high |
| Prometheus HTTP API | 成功状态码范围 | 请求正确执行时返回 2xx | high |
| Prometheus HTTP API | 错误状态码(参数缺失或不正确) | 400 Bad Request | high |
| Prometheus HTTP API | 错误状态码(表达式无法执行) | 422 Unprocessable Entity | high |
| Prometheus HTTP API | 错误状态码(查询超时或中止) | 503 Service Unavailable | high |
| Prometheus HTTP API | 响应数据格式 | JSON(带 status, data, errorType, error, warnings, infos 等字段的封装格式) | high |
| Prometheus 即时查询 API | 端点 | GET /api/v1/query;POST /api/v1/query | high |
| Prometheus 即时查询 API | URL 参数 | query=<string>;time=<rfc3339 | unix_timestamp>(可选,省略则使用当前服务器时间);timeout=<duration>(可选);limit=<number>(可选) | high |
| Prometheus 时间参数处理 | 存储时区 | Prometheus 内部统一以 UTC 时间存储所有时序数据 | high |
| curl 查询 Prometheus time 参数 | 时间转换要求 | 需要在命令行中手动将本地时间转换为 UTC 时间后传入(示例:北京时间 2025-11-10 16:14:27 → UTC 2025-11-10T08:14:27Z) | high |
| DolphinDB HTTP Client(文中描述) | 时间处理说明 | DolphinDB 默认使用本地时间进行数据处理和查询;查询某时间点指标时可用 gmtime 转换为 UTC 后传入;从 Promethus 取出数据进行告警规则处理时也需要转换为本地时间(localtime) | medium |
| Prometheus 范围查询 API | 端点 | GET /api/v1/query_range;POST /api/v1/query_range | high |
| Prometheus 范围查询 | 返回限制 | 最大单次查询单时间序列最多返回 11000 条 | high |
| Prometheus 范围查询 API | URL 参数 | start=<rfc3339 | unix_timestamp>(包含在内);end=<rfc3339 | unix_timestamp>(包含在内);step=<duration | float>;query/limit/timeout 同即时查询 | high |
| 启用 Prometheus 持续监控 DolphinDB Server 文档 | 参考链接(用于生成样例监控数据) | https://docs.dolphindb.cn/zh/tutorials/promethues2.html | high |
| DolphinDB TSDB 引擎表(示例 metricsDB.data) | 分区方式 | 按月分区(示例:VALUE(2025.10M..2025.11M)),并按 timestamp 分区 | high |
| DolphinDB TSDB 引擎表(示例 metricsDB.data) | 引擎类型 | engine="TSDB" | high |
| metricsDB.data 表结构(示例) | 列定义 | metric_name SYMBOL;timestamp TIMESTAMP(compress="delta");value DOUBLE;instance SYMBOL;job SYMBOL(comment="Promethus job 名称") | high |
| metricsDB.data 表(示例) | 排序列 | sortColumns = `metric_name`timestamp | high |
| DolphinDB httpClient 插件 | 加载方式(示例) | loadPlugin("httpClient") | high |
| Prometheus query_range 返回时间戳(文中描述) | 时间戳单位与起点 | 默认返回整型时间戳,起点为 1970.01.01,单位为秒 | high |
| DolphinDB 时间转换(示例) | 从秒级 epoch 转 TIMESTAMP 的方法 | 使用 temporalAdd(timestamp(1970.01.01), <seconds>, "s") 转换为 DolphinDB TIMESTAMP | high |
| 数据库资源监控方案(示例案例) | 监控对象 | DolphinDB 服务器 CPU 使用率、内存占用、磁盘空间和网络流量等硬件资源实时监控 | high |
| Prometheus 自动采集指标(示例) | 指标示例 | cpuUsage, memoryUsed, diskFreeSpaceRatio 等关键指标 | high |
| 告警规则示意(示例) | 阈值规则 | cpuUsage > 90;diskFreeSpaceRatio < 0.1;networkRecvRate > 10000000 | high |
| 存储架构(示例) | 双层存储 | 采用流数据表 + 分布式表:流表作为规则引擎输入及输入缓冲层,分布式表用于历史数据存储 | high |
| 轮询方式获取监控数据(示例设计) | 优点 | 轮询方式能够最大程度减少对监控目标端的侵入性(更符合监控轻量化诉求) | medium |
| query 函数(示例代码) | 用途 | 发送即时查询请求并将 response HTTP 报文解析为 table 类型数据 | high |
| pullData 函数(示例代码) | 用途 | 定时轮询 Prometheus Server 获取数据(调用 query 函数) | high |
| pullData 函数参数 interval(示例说明) | 建议 | 建议与 Prometheus 配置文件中的 scrape interval 设置保持一致 | medium |
| DolphinDB 流表 dataReceiveTable(示例) | 创建方式 | enableTableShareAndPersistence(table=streamTable(1000:0, colName, colType), tableName=`dataReceiveTable, cacheSize=1000000) | high |
| dataReceiveTable(示例) | 列名与类型 | colName=`metricName`timestamp`value`instance`job;colType=[SYMBOL, DATETIME, DOUBLE, STRING, STRING] | high |
| dfs://metricsDB.warn 表(示例) | 列定义与 rule 字段类型 | metric_name SYMBOL;timestamp TIMESTAMP;value DOUBLE;instance SYMBOL;job SYMBOL;rule BOOL[] | high |
| Prometheus 指标选择(示例) | metrics 参数示例 | {__name__=~"cpuUsage|diskFreeSpaceRatio|networkRecvRate"} | high |
| Prometheus Server(示例) | host/port 示例 | host = "192.198.1.36";port = 9090 | high |
| DolphinDB 规则引擎 | 产品描述 | 简洁、高效、可扩展的规则检查与告警模块,支持对监控规则的集中化运维(新增、修改、删除) | high |
| createRuleEngine 文档 | 参考链接 | https://docs.dolphindb.cn/zh/funcs/c/createRuleEngine.html | high |
| ruleSets(示例) | 规则集初始化内容 | index 包含 cpuUsage、diskFreeSpaceRatio、networkRecvRate、NULL;规则分别为 value>90、value<0.1、value>10000000、value==NULL | high |
| 告警推送方式(示例) | 支持的示例方式 | 邮件告警与企业微信机器人告警(示例代码给出) | high |
| 企业微信机器人告警(示例) | Webhook URL 形式 | https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=yourUUidKey(key 采用 UUID 标识推送目标) | medium |
| DolphinDB 规则引擎输出表(示例) | 包含内容与筛选方法 | outputTable 包含原始监控信息及判断结果 rule(BOOL array);可用 rule[0]=true 筛选超过阈值的数据 | high |
| 告警回调 callback(示例教程注意事项) | 高频告警限制与建议 | callback 同步执行;若告警密度很大(例如每秒上千条),不建议在 callback 中直接调用 I/O;可先写入 outputTable 到流表再订阅并在 handler 推送 | high |
| 规则集热更新 | 支持的函数 | 支持通过 updateRule 和 deleteRule 实现运行时新增、修改、删除 | high |
| updateRule(示例) | CPU 阈值更新示例 | updateRule("ruleEngine","cpuUsage",[<value>85>])(将 CPU 阈值更新为 85) | high |
| 规则更新验证(示例) | 插入样例数据 | 插入 cpuUsage 在 2025.12.01 10:00:00 的 value=88.0(示例)并查看规则 | high |
| 本文方案总结 | 效果/价值主张 | 实现监控告警集中化、架构简洁、运维便捷;解决规则分散难管理、线上规则调整成本高、监控与长期存储脱节等问题 | medium |
| 附件脚本 | pullMetric.dos 链接 | https://docs.dolphindb.cn/zh/tutorials/script/prometheus_and_ruleEngine_integration/pullMetric.dos | high |
| 附件脚本 | metricData.dos 链接 | https://docs.dolphindb.cn/zh/tutorials/script/prometheus_and_ruleEngine_integration/metricData.dos | high |
| 附件脚本 | ruleEngine.dos 链接 | https://docs.dolphindb.cn/zh/tutorials/script/prometheus_and_ruleEngine_integration/ruleEngine.dos | high |
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |