其他
数据中心数据质量线上监控的实践
The following article is from 有赞coder Author 有赞技术
多维度是指支持正逆向交易、商品、客户、流量、营销活动... 多渠道是指支持全渠道、H5、APP、小程序(微信、支付宝、百度...)... 多周期是指支持实时、自然日、自然周、自然月、近7天、近30天、季度、自定义
一、有赞的数据流图
二、离线数据(批处理)的线上监控详解
1、离线数据描述
1.1 准确性规则-线上监控梳理
跨表对比:是指不同表相同指标之间的等值判断,有赞数据中心当前仍然存在着页面不同定义相同的指标,来源于不同的底层表,后期随着底层表统一模型的建设,此类对比监控比重会逐步下降。 同表逻辑性判断:是指同表不同指标之间的逻辑判断,比如支付人数<=支付订单数。 自身判断:是指做指标本身的规则判断,比如枚举值、唯一性、非空性判断。
行数判断:是指表全量或者分区表行数基于过去某时间数据的同比/环比的变化判断,同时也支持取值范围的判断。 大小判断:是指表全量或者分区表大小基于过去某时间数据的同比/环比的变化判断,同时也支持取值范围的判断。
历史数据不变判断:是指过去某天/周/月下,在指标定义不变的前提下,接口返回数据不变判断,属于数据回归部分。
1.2 及时性规则-线上监控梳理
开始调度时间,是指作业的开始进入队列时间,不是开始执行时间。 执行时长,是指作业开始执行到结束的时间,通常是由作业优先级、执行引擎、SQL执行效率影响。 deadline时间,是指从作业开始调度,最长的可执行时间。 规则校验时间,是指针对表编写的校验规则(电话告警)执行时间,数据更新时触发,当前最多可执行8分钟,超过即开始下游调度。
2、线上监控规则的实现
2.1 线上监控示例
2.1.1 准确性示例
2.1.2 及时性示例
三、实时数据(流处理)的线上监控详解
1、实时数据描述
1.1 准确性规则-线上监控梳理
上下游数据对比:是指业务方binglog日志传到数据侧时,在TIDB存入明细数据,按指标统计规则处理后与底层存储对比。 昨日实时与昨日离线数据对比:是指昨日实时数据完全落库后,通过接口再提取出来与昨日离线的数据进行比较。
1.2 及时性规则-线上监控梳理
2、线上监控规则的实现
@Override
@Scheduled(cron="0 0/20 * * * ?")
public void teamOrderCheck() {
tidbCheck();
druidCheck();
}
public void druidCheck() {
boolean druidAlert = true;
try {
//druid
for (int i = 0; i < 500; i++){
boolean res = checkOnceTeamOrder();
if (res){
druidAlert = false;
break;
}
Thread.sleep(2000 );
}
String druidPayCnt = getDruidPayCnt();
String detailPayCnt = getDetailPayCnt();
if (druidAlert && !druidPayCnt.equals(detailPayCnt)){
log.warn("500次检测均不通过.");
String content = "实时交易数据异常预警:druid 统计支付订单数:%s, 交易明细支付订单数:%s";
alertBiz.commonAlert(String.format(content,druidPayCnt, detailPayCnt));
}
}catch(Exception e){
log.warn("team order check error.");
}
}
四、线上监控效果
五、后续规划
推荐文章:
当我们聊数据质量的时候,我们在聊些什么?
数据质量:数据治理的核心