十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

工业大数据平台七类监控落地指南:指标定义、SQL实现与验证方法

工业大数据平台七类监控落地指南:指标定义、SQL实现与验证方法 简介《TSCTA 007-2021 工业大数据平台 数据运行监控 技术规范》是一份面向软件产品开发组织、独立测试机构、实施与咨询服务机构的技术标准文件适用于工业大数据平台数据运行监控功能的设计、开发、选型与验证。规范界定了数据运行监控的术语与定义并围绕数据资源、数据集成、周期任务、质量告警、服务调用、算法模型运算、时序数据七大监控要素分别给出一般要求、功能要求及对应验证方法同时涵盖组态画面、趋势展示与事件报警等模块。资源包内含1个PDF文件大小约738KB完整收录标准正文、目次、前言、范围、规范性引用文件、术语定义、监控要求与验证方法等章节便于按条目查阅与对照落地。目前已有181人学习关注适合从事工业大数据平台研发、测试与咨询的技术人员作为监控功能设计与验收的参考依据。1. 从一份团体标准说起工业大数据平台为什么需要七类监控很多团队做工业大数据平台监控是最后才补的。上线跑通了数据能进能出任务能调度就以为万事大吉。直到某天凌晨存储写满、集成任务静默失败三天没人发现、模型 API 被某个下游应用刷到超时才回头补监控。T/SCTA 007-2021 这份团体标准的价值就在于它把「数据运行监控」拆成了七个必须覆盖的面数据资源、数据集成、周期任务、质量告警、服务调用、算法模型运行、时序数据。它不是一份讲某个开源工具怎么配的文档而是一份验收清单——你做的监控系统这七类里缺哪一类在规范视角下就是功能不完整。本文按这份清单逐项拆解给出每一类监控的指标定义、采集方式、可落地的 SQL 与配置片段以及验证方法适合正在做平台监控模块的开发、测试和选型人员对照使用。2. 数据资源与数据集成监控从元数据表到流转速率2.1 数据资源监控的三个硬指标规范 5.1.2 把数据资源监控收敛成三件事表数量及其增量、存储使用量及其增量、可对绝对值和增长量设报警规则。这三件事听起来简单落地时的难点在于「增量」怎么算。常见做法是每天定时把元数据快照落一张表用相邻两天的快照做差而不是去查数据库的实时统计——实时统计在 Hive Metastore 或数据湖场景下开销很大且不同引擎口径不一致。先建一张资源快照表字段设计要能支撑「绝对值 增长量」两类查询-- 数据资源每日快照表按天分区 CREATE TABLE meta_resource_snapshot ( snap_date DATE COMMENT 快照日期, db_name STRING COMMENT 库名, table_cnt BIGINT COMMENT 表数量, storage_bytes BIGINT COMMENT 存储使用量(字节), etl_time TIMESTAMP COMMENT 采集时间 ) PARTITIONED BY (dt STRING);采集脚本每天凌晨跑一次把当天各库的表数和存储量写入对应分区。增量查询用窗口函数一次算出绝对值和环比增长-- 查询各库表数量、存储量及较前一日的增长 SELECT db_name, snap_date, table_cnt, table_cnt - LAG(table_cnt) OVER (PARTITION BY db_name ORDER BY snap_date) AS table_inc, storage_bytes, storage_bytes - LAG(storage_bytes) OVER (PARTITION BY db_name ORDER BY snap_date) AS storage_inc FROM meta_resource_snapshot WHERE snap_date DATE_SUB(CURRENT_DATE, 7) ORDER BY db_name, snap_date;LAG取同一库上一快照日的值相减即增量。报警规则不要写死在代码里落一张阈值配置表按库或按平台维度配置绝对阈值和增长率阈值例如「存储使用量 80% 容量」或「单日表数量增长 500」。验证方法对应规范 6.1在平台建一张表再查监控页面的表数看是否 1这是最直接的回归用例。2.2 数据集成监控成功率与传输速率怎么采规范 5.2 要求监控数据流转执行次数、成功率和集成详情源端配置、目的端配置、采集传输速率。集成任务通常由调度框架如 DolphinScheduler、Airflow驱动每次执行产生一条实例记录。监控的核心是把实例记录聚合成成功率并把速率算出来。成功率按任务维度按天聚合-- 集成任务执行成功率按任务、按天 SELECT task_id, task_name, DATE(start_time) AS run_date, COUNT(*) AS total_runs, SUM(CASE WHEN status SUCCESS THEN 1 ELSE 0 END) AS success_runs, ROUND(SUM(CASE WHEN status SUCCESS THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) AS success_rate FROM integration_task_instance WHERE start_time DATE_SUB(CURRENT_DATE, 30) GROUP BY task_id, task_name, DATE(start_time) HAVING success_rate 95; -- 只挑出低于阈值的便于告警传输速率 本次任务写入记录数 / 执行耗时。记录数从任务实例的统计字段取耗时用end_time - start_time。这里有个坑耗时包含调度排队时间还是纯执行时间不同框架口径不同必须在采集时明确否则速率会失真。我一般只取纯执行时间排队时间单独作为「等待时长」指标。验证方法对应规范 6.2配置并执行一个集成任务查看监控页展示的集成数据量与实际写入量是否一致。2.3 两类监控的报警联动数据资源和数据集成不是孤立的。存储增长异常往往伴随集成任务写入量突增把两张表的指标放在同一时间轴上对比能快速定位是「业务正常增长」还是「某个任务重复写入」。常见做法是在告警规则里加一条关联条件当存储日增量超过阈值且当日有集成任务成功率异常时告警级别提升。这类联动规则用配置表描述即可不必写死在代码里。3. 周期任务与质量告警监控DAG 状态机与 T1 校验3.1 周期任务监控的四层结构规范 5.3 把周期任务监控拆成概览、任务配置、任务实例、任务实例详情四层其中详情要能看到 DAG 图、步骤实例列表、各步骤状态、耗时和日志。这四层本质上是同一份调度数据的四种聚合粒度。落地时不要为每层单独建表而是建一张任务实例表加一张步骤实例表上层视图用查询实现。任务实例表记录一次调度的整体状态步骤实例表记录 DAG 中每个节点的状态-- 任务实例表 CREATE TABLE task_instance ( instance_id BIGINT, task_id BIGINT, status STRING, -- RUNNING/SUCCESS/FAILED start_time TIMESTAMP, end_time TIMESTAMP, duration_ms BIGINT ); -- 步骤实例表一个实例对应多行 CREATE TABLE step_instance ( instance_id BIGINT, step_name STRING, status STRING, start_time TIMESTAMP, end_time TIMESTAMP, log_path STRING );「概览」页查任务配置数量和实例执行概览「任务实例」页按状态和时间过滤「详情」页用instance_id关联步骤表并按 DAG 拓扑排序展示。DAG 图本身不需要监控系统渲染把节点和依赖关系存成边表前端用图库画即可。验证方法对应规范 6.3配置并执行一个主题开发任务查看任务运行状态是否与实际一致重点验证失败状态能否被正确捕获。3.2 质量告警监控数据质量与元数据质量分开管规范 5.4 明确质量告警包含数据质量告警和元数据质量告警两类且要能查看规则校验结果和实例详情。这两类的区别在于校验对象数据质量校验的是表里的数据如空值率、唯一性、值域元数据质量校验的是元数据本身如字段是否有注释、表是否有负责人、分区是否规范。规则运行后产生校验记录监控系统只负责展示和告警不负责执行校验。校验结果表设计如下-- 质量校验结果表 CREATE TABLE quality_check_result ( check_id BIGINT, rule_id BIGINT, rule_type STRING, -- DATA / META target_table STRING, check_status STRING, -- PASS / FAIL fail_count BIGINT, -- 不满足规则的记录数 check_time TIMESTAMP );告警数按天聚合分别统计两类规则的失败条数SELECT rule_type, DATE(check_time) AS check_date, COUNT(*) FILTER (WHERE check_status FAIL) AS fail_cnt FROM quality_check_result WHERE check_time DATE_SUB(CURRENT_DATE, 30) GROUP BY rule_type, DATE(check_time);这里的关键参数是校验周期。规范 6.4 的验证方法特别提到「至少 T1 的周期后查看校验结果」说明质量校验通常不是实时的而是按天调度。设计监控时要把「规则上次运行时间」也纳入监控规则超过预期周期没跑本身就是一种告警。3.3 周期任务与质量告警的依赖关系质量校验规则往往挂在周期任务之后执行。如果周期任务失败质量校验就不该跑否则会产生大量无意义的失败告警。常见做法是在调度层配置依赖监控层则通过「上游任务状态」字段过滤只统计上游成功的质量校验结果。这个字段在写入校验结果时一并记录避免查询时反复关联任务实例表。4. 服务调用与算法模型监控API 维度的可观测性4.1 服务调用监控的三级下钻规范 5.5 要求服务调用监控能看到月度访问情况耗时、调用次数、慢服务/异常服务/高频服务排行、调用情况调用方项目名、应用名、调用次数、平均耗时、调用详情调用方、耗时、错误原因。这是典型的三级下钻月 → 调用方 → 单次调用。数据模型 API 的调用日志是数据源。每次调用落一条明细包含调用方标识、耗时、状态码、错误信息CREATE TABLE api_call_log ( call_id BIGINT, api_id BIGINT, caller_project STRING, caller_app STRING, cost_ms BIGINT, status_code INT, error_msg STRING, call_time TIMESTAMP ) PARTITIONED BY (dt STRING);慢服务排行用百分位而不是平均值平均值会被大量快调用拉低掩盖长尾-- 各 API 的 P95 耗时与调用次数排行 SELECT api_id, COUNT(*) AS call_cnt, ROUND(AVG(cost_ms), 2) AS avg_cost, PERCENTILE_APPROX(cost_ms, 0.95) AS p95_cost, SUM(CASE WHEN status_code 500 THEN 1 ELSE 0 END) AS error_cnt FROM api_call_log WHERE dt DATE_FORMAT(DATE_SUB(CURRENT_DATE, 30), yyyyMMdd) GROUP BY api_id ORDER BY p95_cost DESC LIMIT 20;PERCENTILE_APPROX是近似百分位大数据量下比精确计算省资源误差在可接受范围。异常服务排行按error_cnt / call_cnt排序高频服务排行按call_cnt排序。验证方法对应规范 6.5配置并调用一个数据模型查看 API 调用情况是否展示正确。4.2 算法模型运行监控训练任务与 API 两条线规范 5.6 把算法模型监控分成项目列表各项目内 API 服务数、上线情况和训练任务列表。这两条线要分开看训练任务是离线批处理关注成功率和耗时模型 API 是在线服务关注调用指标可以复用 4.1 的 API 监控逻辑只是把api_id换成模型服务 ID。训练任务监控表结构简单关键是记录模型版本和对应的训练数据版本否则出了问题无法回溯是数据变了还是代码变了CREATE TABLE model_train_task ( task_id BIGINT, project_id BIGINT, model_version STRING, data_version STRING, status STRING, start_time TIMESTAMP, end_time TIMESTAMP, metrics_json STRING -- 训练指标如准确率、loss );metrics_json存训练产出的评估指标监控页面按模型版本画趋势线能直观看到模型效果是否退化。验证方法对应规范 6.6配置算法模型并运算后查看训练任务列表是否出现该任务。4.3 服务调用与模型监控的指标口径统一服务调用监控和算法模型 API 监控在指标定义上必须统一否则同一个 API 在两个页面显示的平均耗时不一致会让人怀疑数据。常见做法是抽一层统一的调用日志采集 SDK所有 API 网关和模型服务都接同一个 SDK指标口径自然一致。这一步在项目初期就要定后期统一成本很高。5. 时序数据监控与验证方法组态、趋势与报警的落地技巧5.1 时序数据监控的三个模块规范 5.7 把时序数据监控拆成组态模块、趋势模块、事件报警模块。组态模块是图形界面编辑通过拖拽和属性设置搭建工业监控画面趋势模块在画面中拖拽配置即可展示实时和历史数据趋势事件报警模块统一事件和报警平台供客户端显示和查询。这三块在工业场景里通常由组态软件承担但规范要求的是「监控能力」不一定非要买商业组态软件。如果自研趋势模块的核心是时序查询。实时趋势查最近 N 分钟历史趋势查指定时间段两者用同一套查询接口只是时间范围不同-- 时序数据趋势查询按设备、按时间范围降采样 SELECT device_id, ts, value FROM time_series_data WHERE device_id DEV-001 AND ts BETWEEN 2024-01-01 00:00:00 AND 2024-01-01 01:00:00 ORDER BY ts;数据量大时要做降采样按分钟或小时取平均避免前端渲染卡顿。报警事件表记录触发和恢复两个时间点便于计算持续时间CREATE TABLE alarm_event ( event_id BIGINT, device_id STRING, alarm_type STRING, trigger_time TIMESTAMP, recover_time TIMESTAMP, level STRING );5.2 七类监控的验证方法对照规范第 6 章给每一类监控都配了验证方法这些方法本质上是「造一个已知结果的操作看监控是否如实反映」。整理成对照表测试时逐项过监控类型验证操作检查点数据资源创建一张表表数是否 1数据集成执行集成任务集成数据量是否与实际一致周期任务执行主题开发任务任务状态是否与实际一致质量告警配置质量规则等 T1校验结果是否与实际一致服务调用调用数据模型API 调用情况是否展示算法模型配置模型并运算训练任务列表是否出现时序数据配置组态画面趋势图和报警事件是否与实际一致这张表可以直接作为验收用例清单。注意质量告警的验证周期是 T1测试排期时要预留一天不能当天配当天验。5.3 一个容易忽略的技巧监控自身的健康检查监控系统本身也会挂。如果采集脚本停了监控页面显示的还是昨天的数据看起来一切正常实际已经失联。常见做法是给每个采集任务加一个心跳表记录最近一次成功采集时间监控页面顶部展示「数据新鲜度」超过阈值就标红。这个技巧在规范里没写但实际运维中比任何单项监控都重要——监控系统自己失联是最危险的故障。本文还有配套的精品资源点击获取
返回列表