引言
在当今数字化时代,数据已成为企业竞争力的重要组成部分。作为一种有价值的资源,它可以帮助企业了解市场趋势、客户需求和产品表现等关键信息。通过对数据进行分析和利用,企业可以更好地制定商业战略、优化产品和服务、提高效率和减少成本。
除了数据收集和分析外,企业还需要进行数据质量监控,确保数据的准确性和及时性。数据质量监控帮助企业及时发现数据异常和问题,从而及时采取措施,避免损失和业务中断。
-
通过实时监测和分析数据来获取有关业务信息,帮助企业及时发现问题并有效地解决,从而提高生产力和效率。
-
通过收集大量数据来识别趋势和模式,并生成警报和数据报告,帮助企业了解其业务的健康状况。
公司研发了数据质量监控平台-有度(UDO),初衷是由于项目反馈的问题很多都和数据有关,项目提出能否提供一个简单的工具,让他们能够通过一些规则来监控这些数据,早点发现早点解决。
下面我们一起看看有度(UDO) 研发的过程:
陷入困境
项目业务上线后,线上问题频繁,业务运维和技术各种焦头烂额:
- 月初的奖励/积分没有计算。
- 仓库操作商品出入库,总是提示商品不存在,明明就已经到货了。
- 手动导入了促销券,用户使用券提示该券不符合使用规则。
- 分销商的货已经确认收货了,为什么经销商的钱没有到账,是不是系统问题?"
财务表示也很糟心:系统计算出来的金额和财务手动计算的金额不一致,还需要财务重新手动计算?
有些归类为数据问题:
- 业务数据是迁移过来的,有些数据本来就带着历史的政策或者bug,导致部分数据在新系统水土不服。财务用老数据用新逻辑计算,就会有差异。
- 工厂ERP系统推送商品消息滞后,货已经收到,但是仓库并没有同步商品信息,需要通知到技术手动处理。
- 手工导入的数据,有些字段数据格式不正确。
有些归类为功能问题:
- 定时任务未成功执行,导致数据没有成功计算,报表没有成功生成。
- 订单发货后,推送发货消息给OMS系统失败,导致业务订单和OMS系统的订状态不一致。
有且归类为第三方问题:
- 银行确权周期导致钱没有到账
破局之法
有没有什么办法能够提前感知到这些问题,提前处理呢?
有没有什么办法能够提前预防这些问题呢?
经过调研发现反馈的问题都是数据问题,就从数据入手,对线上数据进行监控。这个时候就需要有个工具或者监控平台,能够满足我们对生产,对待生产问题能够"重预防","早发现","快解决"。
由于目标明确且需求急迫,刚好大数据组也有类似数据比对需求,于是合二为一,由CodeX(大数据组)团队开发数据质量平台。
应对之道
有度( UDO) 平台功能简单易操作,主要分为6个模块:数据库资源,项目管理,任务模板,调度任务,执行日志和用户管理,已提前内置多个不同的监控任务模板,通过这些模板可以解决不同的数据质量监控需求,调度任务执行后,自动触发企业微信机器人或者邮件来预警。
下面我们通过几个实际的监控案例,试玩这个监控平台吧:
第一步:先维护基础数据
- 创建项目
其中企微机器维护在项目里,配置后,预警会通过企微机器人通知到企业微信群中。
WebHook地址中的key值填入企微机器人输入框中。
企微机器人设置教程: open.work.weixin.qq.com/help2/pc/14…
当然我们也可以不用企业微信机器人
- 创建用户 , 并关联到项目
- 用户可以维护该项目的所有监控任务,查看日志并创建新用户。
- 监控任务的告警会邮件发送给该项目的所有人员。
- 支持域帐号/非域帐号登录。
- 数据源新增
支持mysql, es, hive, clickhouse数据源
如果数据库的表有更新,可以刷新重新拉取数据库数据
第二步:创建监控任务
有度( UDO )提供多个监控类型,我们可以按照不同的业务需求来选择合适的监控类型
监控需求: 由于经销商每个月月初会根据之前6个月的销售记录重新计算星级,星级会影响经销商的采购轮胎金额和奖励上限。如果星级没有计算,会导致集团和经销行造成金额的损失。
监控预期:如果星级变动没有计算,需要及时告警。
分析:星级计算是通过定时任务执行,所以该监控需求其实就是对定时任务的监控
实现: 一般定时任务成功执行后,按照实际情况,数据库内的数据要么有新增,要么有更新。只要在这个定时任务规则下,有变动数据产生,就说明定时任务成功执行。监控类型可以使用数据及时性。
- 进入新增数据监控, 监控类型选择:数据及时性
选择数据库和对应的表后,设置过滤条件:按照时间判断,当前月的第一天开始,统计的数结果至少为1,否则定时任务执行失败。
注意:
- 输入框类型要选择sql表达式,内容可以填入:date_add(curdate(),interval -day(curdate())+1 day)。
- 告警接收人:选中项目中的人员,当触发告警时,企业微信机器人会@执行人员,可以多选。
- 保存成功后,运行一下,看看结果。
监控任务结果失败,应该触发预警机制 @指定人员
下图为企业微信预警
下图为邮件预警(邮件模板可以自己定制)
第三步:新增调度任务
- 新增调度任务,执行时间设置为定时任务完成之后
- 设置cron调度
- 设置完成后查看下次监控开始的时间
第四步:查看日志
- 到点定时执行,进入日志管理页面,查看日志结果
- 查看调度任务,下次执行自动为下个月
以上是一个简单的监控场景示例。
复杂一点的如何做呢?
来看下面一个监控需求
监控需求 2 : 订单收货后,系统调用银行确权接口超时,导致订单确权在状态还在确权中,实际已经确权完成,导致的结果是钱已经到了商家账上,但是状态显示待入帐。
监控预期: 由于银行接口超时不可控,如果订单确权失败,发出告警。
分析: 订单状态完成后,会通知订单确权。所以如果订单状态完成,但是订单未确权完成,就说明有问题。
实现: 项目底层服务是SAAS服务,订单信息在OMS库的Order表中,确权状态在业务库的order表中,可以将2 个表数据进行对比。可以用监控类型:数据同步
- 创建监控任务(如果需要新的数据源或者新的项目,请参考上一个示例操作):
- 选择校验数据源
· 选择对比数据源
保存后执行看看结果(实际结果)
分库分表可以监控么?
当然也可以!
如图是为了监控每小时ERP是否同步了轮胎数据给到系统,可以切换成sql语句来写。
灵活运用
验证数据规则,在一定的时间范围内,不符合规范的数据最多为0,如果有,就告警。
升级比对
数据一致性和数据同步,都只是在数据量上进行了监控。在实际工作中,往往有更为复杂的数据明细对比。数据一致性就是为了解决这方面的问题的。
监控需求 3 :为方便统计每月的订单量与订单金额,项目专门做了一张每月订单统计表,想确保这张表的统计是正确的。
分析: 每月订单统计表(dc_tenant_month),其中主要字段(order_month,order_month_count,order_month_amount),需要这张表的数据与订单表的数据明细一致。
实现:使用数据一致性的规则,在处理的时候,会把相同维度字段的数据,来校验对比字段的值是否一致,从而实现数据明细对比。从原始订单表进行按月统计的数据,与每月订单统计表的数据进行了对比,我们就可以实现两张表数据一致性检验。
- 选择监控类型-数据一致性
-
选择校验数据源,填写SQL,并增加维度字段和对比字段
-
选择对比数据源:,并增加维度字段和对比字段
还有很多小技巧,大家熟练了之后可以自行探索!
渐入佳境
经过一段时间的使用,我们又迎来了新的挑战。有度( UDO)平台的初衷是希望能够通过监控生产环境的数据控制质量,提前感知和解决问题,所以一开始设计监控的结果只有2种:成功和失败。有的项目希望能够通过除了监控结果,还希望有对应的明细。或者按照一些规则生成报表数据。当这个需求交付到我们时,发现平台的功能基本满足需求。我们按照这个诉求,增加了一个类型-业务监控。
监控示例:监控非正常业务挂起的发货单,超过1小时未成功推送下游系统的数据给到业务处理。
执行结果:
企微监控结果
邮件结果
通过下载链接可以获取所有数据.
总结
有度( UDO)平台已经在公司运行一年多了,有度,越来越多的项目主动要求使用数据监控平台对业务进行监控,在项目的整个生命周期,平台也作为一个质量控制的工具,起到重要的作用。由于平台操作简单,可以满足技术,测试,项目,产品等不同角色的使用需求,满足测试环境,生产环境的不同需求。至今,有的项目最多的业务监控数量达到50+,包含国内和国外的业务,当然在日常工作种
售后团队评价:一键预警,多种预警规则,设置不同的比对数据规则,通知方式多样性等,极大方便通知运维及时的感知处理异常数据。
产品团队评价:UDO平台极大缩短了以往监控需求的开发周期,并且支持根据业务场景和需求进行灵活配置,充分为系统和业务保驾护航。
技术文档
UDO后端 github :github.com/GTechdigi/u…
UDO前端 github: github.com/GTechdigi/u…
技术文档地址1: gtechdigi.github.io/2023/01/09/…
技术文档地址2: juejin.cn/post/718656…
公司简介
上海佳应科技有限公司 (Gtech Digital Co., Ltd.) ,是一家全球数字化技术服务商,主要面向零售、汽车、生产制造的品牌客户,提供“PaaS+SaaS”形式的产品与解决方案。
自成立,Gtech佳应科技一直负责新加坡佳通集团零售电商、轮胎生产制造、汽车后市场等重要业务板块的数字化咨询、管理和转型工作,通过持续的技术研发与产品创新,推动集团内部组织管理、商业模式、运营模式和生产方式变革。
目前,Gtech佳应科技已成功服务东南亚TOP零售集团、一站式汽车养护平台Speedwork和知名轮胎生产制造商,拥有丰富的行业理解与产品实践经验,以及国际化、标准化的项目交付和系统运维经验。现已成功孵化 “全渠道零售数字化”、“F2B2b分销渠道数字化平台”、“B2b汽服供应链+智慧门店SaaS”等解决方案类产品。
我们也已经将产品应用领域进一步拓展到了,鞋服、家居、3C电子等细分行业,服务50+品牌、 200+家经销商、50000+门店数字化转型及运营管理升级,服务生态范围辐射印度尼西亚、马来西亚、泰国、越南等多个国家。