集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案

本页是一篇介绍“集成 Prometheus 与 DolphinDB 规则引擎”的文章,并给出作者署名与发布日期信息。

Source: https://dolphindb.cn/blogs/331

What this page covers

技能认证特训营第二期正式开启(限时报名)

页面顶部包含活动报名引导与优惠提示。

集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案(作者与日期)

本节给出文章标题、作者署名与发布日期信息。

1 概述:方案背景与痛点

说明云原生场景下监控复杂度上升,并列出仅依赖 Prometheus 原生告警体系的主要不足。

1.2 DolphinDB 规则引擎监控方案(目标与架构)

提出将 Prometheus 监控数据与 DolphinDB 规则引擎融合的方案目标、能力点与架构示意说明。

2 Prometheus 监控指标同步(HttpClient + HTTP API)

介绍使用 DolphinDB HttpClient 插件调用 Prometheus HTTP API 获取指标并写入 DolphinDB 表的方式。

2.1 Prometheus HTTP API 简介(状态码、响应格式、查询接口)

概述 Prometheus HTTP API 的根路径、状态码、JSON 响应封装,以及即时查询与范围查询的端点和参数。

2.2 Promethus 数据同步案例:批量历史数据导入

给出创建 TSDB 引擎表、调用 query_range 拉取历史数据、解析 JSON 并写入 DolphinDB 分布式表的示例流程与代码。

3 集成 DolphinDB 规则引擎与 Prometheus:资源监控方案与流程

以数据库资源监控为例,说明采集关键指标并通过规则引擎阈值告警,以及流表+分布式表双层存储架构与流程图。

3.2 程序实现:数据接入、告警输出与规则热更新

概述程序实现的三部分,并分别给出流表接入与轮询、规则引擎与告警回调、规则热更新方法与注意事项。

3.2.1 监控数据接入 DolphinDB 流表(表结构、轮询与入库)

定义流表与分布式告警表结构,提供即时查询与定时拉取函数,并演示提交作业拉取 Prometheus 指标。

图 3-2:拉取的监控指标(样例说明)

展示从 Prometheus 拉取的实时监控指标数据样例并解释字段含义与指标示例。

3.2.2 规则引擎监控预警(ruleSets、回调、订阅与性能注意事项)

介绍规则引擎用途与 createRuleEngine 参考链接,给出 ruleSets 初始化、邮件/企业微信告警回调示例、订阅流表,以及高频告警下 callback 同步 I/O 的注意事项。

图 3-3 与图 3-4:引擎状态与报警筛选

展示规则引擎状态监控界面与通过 rule=true 筛选告警数据的结果示意。

3.2.3 规则集热更新(updateRule/deleteRule 示例)

说明随工况变化动态调整阈值的需求,并展示通过 updateRule 在线更新规则及验证告警输出的示例与截图说明。

4 总结

归纳集成方案带来的集中化告警、简洁架构与运维便利性,并指出解决的传统痛点。

5 附件(脚本下载)

提供示例脚本 pullMetric.dos、metricData.dos、ruleEngine.dos 的下载链接。

Facts index

Entity Attribute Value Confidence
集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案发布日期2026-03-10high
集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案作者署名HuangWeifenghigh
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.htmlhigh
Prometheus HTTP API根路径/api/v1high
Prometheus HTTP API成功状态码范围请求正确执行时返回 2xxhigh
Prometheus HTTP API错误状态码(参数缺失或不正确)400 Bad Requesthigh
Prometheus HTTP API错误状态码(表达式无法执行)422 Unprocessable Entityhigh
Prometheus HTTP API错误状态码(查询超时或中止)503 Service Unavailablehigh
Prometheus HTTP API响应数据格式JSON(带 status, data, errorType, error, warnings, infos 等字段的封装格式)high
Prometheus 即时查询 API端点GET /api/v1/query;POST /api/v1/queryhigh
Prometheus 即时查询 APIURL 参数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_rangehigh
Prometheus 范围查询返回限制最大单次查询单时间序列最多返回 11000 条high
Prometheus 范围查询 APIURL 参数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.htmlhigh
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`timestamphigh
DolphinDB httpClient 插件加载方式(示例)loadPlugin("httpClient")high
Prometheus query_range 返回时间戳(文中描述)时间戳单位与起点默认返回整型时间戳,起点为 1970.01.01,单位为秒high
DolphinDB 时间转换(示例)从秒级 epoch 转 TIMESTAMP 的方法使用 temporalAdd(timestamp(1970.01.01), <seconds>, "s") 转换为 DolphinDB TIMESTAMPhigh
数据库资源监控方案(示例案例)监控对象DolphinDB 服务器 CPU 使用率、内存占用、磁盘空间和网络流量等硬件资源实时监控high
Prometheus 自动采集指标(示例)指标示例cpuUsage, memoryUsed, diskFreeSpaceRatio 等关键指标high
告警规则示意(示例)阈值规则cpuUsage > 90;diskFreeSpaceRatio < 0.1;networkRecvRate > 10000000high
存储架构(示例)双层存储采用流数据表 + 分布式表:流表作为规则引擎输入及输入缓冲层,分布式表用于历史数据存储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 = 9090high
DolphinDB 规则引擎产品描述简洁、高效、可扩展的规则检查与告警模块,支持对监控规则的集中化运维(新增、修改、删除)high
createRuleEngine 文档参考链接https://docs.dolphindb.cn/zh/funcs/c/createRuleEngine.htmlhigh
ruleSets(示例)规则集初始化内容index 包含 cpuUsage、diskFreeSpaceRatio、networkRecvRate、NULL;规则分别为 value>90、value<0.1、value>10000000、value==NULLhigh
告警推送方式(示例)支持的示例方式邮件告警与企业微信机器人告警(示例代码给出)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.doshigh
附件脚本metricData.dos 链接https://docs.dolphindb.cn/zh/tutorials/script/prometheus_and_ruleEngine_integration/metricData.doshigh
附件脚本ruleEngine.dos 链接https://docs.dolphindb.cn/zh/tutorials/script/prometheus_and_ruleEngine_integration/ruleEngine.doshigh
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high