数据监控及异常报警是数据质量的主要组成部分。离线数据监控依据监控规则监控对象,支持 Hive模板规则、Hive自定义规则、双数据源校验规则等规则配置类型。其中,模板意在定义监控校验规则,方便后期复用。下面将为您介绍如何配置监控及现有的模板规则。
角色类型为管理员、开发或复查人的项目成员才可创建并管理规则,而访客和非项目成员仅具备查看权限。管理项目成员的操作请参见成员管理。
已绑定要监控数据的引擎服务,相关操作可参见新建项目。

监控规则配置相关参数说明如下表所示。其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。
参数 | 说明 |
|---|---|
新建监控对象 | |
*集群 | 要创建规则的数据库集群,支持 Apache Hadoop、MiniBase Hadoop、LAS 三种引擎类型,下拉可选相应引擎下已创建的集群。
|
*库表名 | 创建监控对象的库、表名称,支持按表录入和按库录入两种设置方式。
说明 仅可添加有权限的分区表作为监控对象。 |
新建监控规则 | |
*选择分区 | 根据表的现有分区,自动识别,可编辑。 |
规则配置 | |
规则 | 规则个数,可按需创建多个规则,每个规则下需配置一个规则模板。 |
*规则模板 | 质量评估六大维度,包含完整性、唯一性、有效性、准确性、一致性、及时性,下拉可选。其中,各维度分别默认支持表行数、重复值、空值、异常值、表字段等模板类型,对应关系如下:
|
*规则名称 | 监控规则名称,自动填充,可编辑。 |
*监控字段 | 要监控的数据表字段名称,下拉可选。 说明
|
*空值类型 | 支持 NULL、空字符串和自定义三种选项。 说明 当规则模板选择空值时,需配置该参数。 |
*匹配逻辑 | 支持正常值列表和异常值列表两个选项。 说明 当规则模板选择异常值时,需配置该参数。 |
*匹配方式 | 支持枚举值和正则表达式两个选项。 说明 当规则模板选择异常值时,需配置该参数。 |
*匹配内容 |
说明 当规则模板选择异常值时,需配置该参数。 |
*计算方式 | 监控某字段所采取的计算方式,支持sum、count、avg 和 count distinct 四个选项。 说明 当规则模板选择表字段时,需配置该参数。 |
相关参数 | 涉及以下配置项,设置的参数在 SQL 中将使用${}的方式引用:
注意
|
*监控SQL | 所选规则对应的监控SQL语句,系统自动填充。确认无误后,选择解析SQL,系统将根据设置参数自动替换模板内容(替换后 SQL 详情可通过查看 SQL按钮获取)并解析对应指标,进一步完成报警条件的设置。 说明
|
*报警条件 | 是指规则发出报警时,指标需要满足的条件。当监控指标被计算出来后,如果满足报警条件,就会发出报警。
说明
|
执行方式 | |
*执行方式 | 支持关联dorado任务、定时调度、暂不设置三种选择。
|
*任务名称 | 数据开发关联调度任务的名称,可通过任务名称关键词或ID进行搜索选择。 说明
|
*规则强弱 | 提供强、弱两个配置选项。
说明 当执行方式选择关联dorado任务时,需设置该参数。 |
*熔断方式 | 如果是强规则,可选择以下两种熔断方式:
|
*执行频率 | 任务监控规则执行频率,提供分钟级、小时级、天级三个选项。 说明 当执行方式选择定时调度时,需设置该参数。 |
*执行时间 | 根据执行频率,设置具体的执行时间。 说明 当执行方式选择定时调度时,需设置该参数。 |
*执行引擎 | 使用的计算引擎,支持 SPARK 和 PRESTO 两个选项。 说明 仅选择的 Apache Hadoop 集群配置了 Presto 计算引擎,该参数才会显示 PRESTO 选项。相关配置操作请参见集群管理。 |
*运行队列 | 规则使用的运行队列,支持使用任务队列、自行指定队列两个选项。
说明 当执行引擎选择 SPARK 时,需设置该参数。 |
报警设置 | |
*报警方式 | 支持邮箱、Webhook、飞书的告警方式。 |
*hookUrl | Webhook 请求地址,以 http 或 https 开头。 从下拉列表中选择 http 或 https,填写 Webhook URL 地址。欲了解详细的配置说明,请参见Webhook使用说明。 说明
|
*报警接收 | 接收报警的用户、飞书群。
|
高级设置 | |
重试条件 | 运行失败 |
运行参数 | 按需配置 SQL 语句前的运行参数,如“set 参数名1=取值;”。 |
过滤条件 | where之后的条件语句,语法逻辑跟HSQL一致,无需输入Where,如 type='xxx'。 |
对已创建监控规则的监控对象,可进行相应的管理操作,步骤如下:

说明
规则运行后,您可到运行结果页面查看该规则的运行结果,查看报警情况,查找并分析问题。管理规则运行结果的相关操作说明请参见管理Hive模板规则监控结果。
数据质量目前支持的时间变量相关说明如下表所示。
变量 | 含义 | 格式 | 示例 |
|---|---|---|---|
${DATE} | 获取业务时间日期 | yyyy-MM-dd | 天任务:2019/01/02 8点执行,${DATE} =2019-01-01小时任务:2019/01/02 8点执行,${DATE} =2019-01-02 |
${date} | 获取业务时间日期 | yyyyMMdd | 天任务:2019/01/02 8点执行,${date} =20190101小时任务:2019/01/02 8点执行,${date} =20190102 |
${day} | 获取业务时间日期 | dd | 天任务:2019/01/02 8点执行,${day} =01小时任务:2019/01/02 8点执行,${day} =02 |
${HOUR} | 获取业务时间整点 | h(整数) | 天任务:2019/01/02 8点执行,${HOUR} =0小时任务:2019/01/02 8点执行,${HOUR} =7 |
${hour} | 获取业务时间整点 | hh | 天任务:2019/01/02 8点执行,${hour} =00小时任务:2019/01/02 8点执行,${hour} =07 |
${MINUTE} | 获取业务时间整分钟 | m(整数) | 天任务:2019/01/02 08:10点执行,${MINUTE} =0小时任务:2019/01/02 08:10点执行,${MINUTE} =05分钟任务:2019/01/02 08:10点执行,${MINUTE} =510分钟任务:2019/01/02 08:10点执行,${MINUTE} =10 |
${minute} | 获取业务时间整分钟 | mm | 天任务:2019/01/02 08:10点执行,${minute} =00小时任务:2019/01/02 08:10点执行,${minute} =005分钟任务:2019/01/02 08:10点执行,${minute} =0510分钟任务:2019/01/02 08:10点执行,${minute} =10 |
${month} | 获取业务时间月份 | MM | 天任务:2019/01/02 8点执行,${month} =01小时任务:2019/01/02 8点执行,${month} =01 |
${year} | 获取业务时间年份 | yyyy | 天任务:2019/01/02 8点执行,${year} =2019小时任务:2019/01/02 8点执行,${year} =2019 |
${timestamp} | 获取业务时间时间戳 | XXXXXX...(整数) | 天任务:2019/01/02 8点执行,${timestamp} =1546272000小时任务:2019/01/02 8点执行,${timestamp} =1546383600 |
${last_DATE} | 获取业务时间所处月份的最后一天 | yyyy-MM-dd | 天任务:2019/01/02 8点执行,${last_DATE} =2019-01-31小时任务:2019/01/02 8点执行,${last_DATE} =2019-01-31 |
${last_date} | 获取业务时间所处月份的最后一天 | yyyyMMdd | 天任务:2019/01/02 8点执行,${last_date-1} =20181231小时任务:2019/01/02 8点执行,${last_date-2} =20181130 |
${last_day} | 获取业务时间所处月份的最后一天 | dd | 天任务:2019/01/02 8点执行,${last_day-1} =31小时任务:2019/01/02 8点执行,${last_day-2} =30 |
创建模板规则过程中,当规则类型选择表行数时,可以配置动态阈值报警。
动态阈值可以根据历史分区的数据来预测下一个分区的行数范围,如果新分区的行数不在这个区间范围内会发出报警。
分析发现,表行数的数据分布主要有以下几种分布形态:
分布 | 单调不减(A) | 整体上升,偶尔下降(B) | 固定不变(C) | 变动频率小(D) | 其他 |
|---|---|---|---|---|---|
图示例 |
|
|
|
|
|
动态阈值在上述A、B、C、D四种分布上效果更佳。因此,开启动态阈值报警前,建议先查看一下历史表行数的数据走势,以判断该报警条件是否适用。
创建监控规则过程中,当您选择 Webhook 报警方式时,需注册 Webhook URL,后续报警会发送到注册的 URL。您可以根据 URL 的请求,制定后续的问题处理流程。
volc_quality_test.volcwebhook.xxx/xx/webhookRequest body示例
{ "source": "quality", // 源系统的中文名称 "region": "cn", // 源系统的部署环境 "type": 1, // 报警/消息:枚举值:1、报警 2、消息 "rule_name": "xxx_rule", // 源系统中产生事件的规则名称 "callback_url": "url_to_rule", // 源系统中产生事件的规则回调地址URL "target_type": "table", // 区分描述对象的大类,比如:任务、数据库、表 "target": "test_tb", // 描述具体的事件对象,一般信息包含:对象名称及具体名称值 "content": "alarm content", // 描述发生事件的具体内容,即为:报警内容 或 通知内容 "event_time": "2020-03-01 00:00:00", // 报警时间,消息通知时间 "owners": "test,test2" // 此次事件的直接负责人 "challenge": null }
Response body示例
{ "status": 0, //状态码,0 "data": null }