搞了一个数据质量监控软件

200 阅读3分钟

搞了一个数据质量监控软件

场景:

  • 1、数据从mysql定时同步到es或者其他数据源,但是时不时总是数据不一致,并且问题的发现很滞后
  • 2、业务突然减少或者突然增多,想及时发现
  • 3、数据仓库计算指标是否正确,想做一些验证
  • 4、需要时不时的导出一些数据给开发,给领导,给客户,明明写sql就可以,但是每次都要找对应的开发者,开发很烦恼;或者干脆要各个业务各自开发成功能,还要不停迭代
  • ......

推荐一种解决方案:

开源项目 有度·UDO udo.png

UDO数据监控是一款对数据同步、数据生成、数据预测做出监控的开源软件,是一个前后端分离的web项目。附上链接: UDO后端 + UDO前端

只要写sql即可解决上述的场景问题。

功能支持

  • 域帐号/非域帐号登录
  • 添加数据源
    • 支持mysql, es, hive, clickhouse数据源
  • 对数据源数据做监控
    • 及时性监控: 预测数据记录数
      • 比如: 我们预测每日订单数不少于10000单, 少于10000单就报警
    • 数据同步监控: 监控数据同步任务是否成功执行
      • 比如: mysql同步数据到es, 可以监控每天mysql产生的数据记录数量于es中新增的数据记录数量相同
    • 一致性监控: 监控数据是否一致
      • 比如: mysql订单表同步数据到es后, 可以监控mysql新增的订单总GMV和es中新增的订单总GMV是否相同
    • 业务监控: 根据指定的查询导出业务数据,并发送邮件或企业微信通知
      • 比如: 每小时查询一次创建失败的订单, 导出并发送邮件或企业微信通知
  • 定时执行监控任务
  • 支持监控报警:
    • 支持企业微信群聊机器人报警, 支持邮件报警(邮件要自己实现)
  • 用户管理
  • 项目管理
  • 权限管理

举例:

  • 场景1:数据同步监控,监控内置count,同步完成的数据记录数一致

    # 原数据库
    select id from msyql_table where create_time >= curdate()
    # 目标数据库 es _xpack插件支持 sql, 对sql函数的支持,es7.x及之后的版本更好
    select id from es_index where create_time >= CURRENT_DATE()
    

    如果结果不一样,会触发报警

  • 场景2:数据及时性监控,监控内置count

    # 统计一小时内数据,可以在页面设置sql结果必须大于1000,及时性监控内置count
    select id from msyql_table where create_time >= date_sub(now(), interval 1 hour)
    

    如果结果小于1000,则会触发报警

  • 场景3:数据一致性监控

    # 比对昨天的统计数据结果是否一致
    # 原数据库
    select shop_code, count(1) as coun from mysql_table where create_time <  curdate() and create_time >= date_sub(curdate(), interval 1 day) group by shop_code
    # 目标数据库 比如: HIVE
    select shop_code, table_count from ads_table where and dt = date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1) group by shop_code
    

    如果不一致,会报警,得出结果,类似如下格式:

    原始表shop_code原始表coun目标表shop_code目标表table_count
    0011000001N/A
    00250000025000
    00340000033500
  • 场景4:业务监控

    select id, name, age from mysql_table where xxxxx
    

    会将查询结果上传到阿里云OSS,并提供下载链接,可以在企业微信或邮件中看到链接