八、数据仓库详细介绍(监控告警)

news2024/12/27 13:01:41

1. 前言

在前边的章节,我们设计完存储模型,开发了 ETL 任务,并且配置好流程依赖,然后上调度系统,至此我们的数据仓库基本搭建完成,而且所有流程任务都可以自动化运转了。

随着公司上线的数据处理任务越来越多,我们可以安排专门的运维人员定时监控任务执行情况,定时去检查终端应用,尽最大可能的发现问题(比如源数据迟到、数据量突增、异常数据或者开发考虑不周、有人修改代码且测试不充分、服务器异常、调度宕机等等),并且赶在业务使用前解决掉。

不过技术人嘛,这种全靠人肉去监控的方法总感觉太低端,而且心里很不踏实。所以,就需要上一套工具,来监控 ETL 运行情况、稽核数据质量,并根据监控稽核结果及时的发出告警或者通知。

涉及到技术层面,我们必须做一下几点工作:

  1. ETL 计算逻辑、流程控制准确合理。(这个有 ETL 开发人员保证,测试人员把关。当然了很多时候开发测试都是同一个人,责任重大但谁让你是高级开发呢?)。

  2. ETL 任务流程在规定的时间点能够被调起来。(这个有调度系统保证,另外再配上监控告警系统,超时未启动触发告警)。

  1. 对于时效性 SLA 有要求的任务,需要添加超时告警。(这个调度系统可能会有,没有的话监控告警系统有也行,超时未完成触发告警)。

  2. 稽核校验系统,根据检查点规则配置的校验时间启动校验,发现问题触发报警。(当然,有时候会在任务执行完成后,直接启动关联的数据质量稽核校验)。

综上所属,除了正常的 ETL 任务流程和调度系统外,我还需要再有三大模块:ETL运行情况监控、数据质量稽核、告警通知系统。

另外,我最近在规划一套数据质量监控+告警通知系统,现在只是设计了表结构,其它的代码+页面都还没有,有兴趣的可以一起参与进来。

https://code.aliyun.com/lipengbo123/dqc

2. ETL 运行情况监控

首先,整个 ETL 流程任务是经过充分测试后才会上线的,所以理论上讲,只要整体流程能在规定的时间内跑完且不报错,一切就 OK。

因此我们首先要做的就是 ETL 运行情况的监控。每一步关键节点都记录日志并且标明所属层级。

2.1 大致流程介绍

大致分为三部分:

  1. ETL 任务执行过程中,记录详细的 ETL 运行日志

  2. 分析  ETL 运行日志,汇总关键信息到监控结果日志表。

  1. 发现异常直接调用告警通知模块触达告警,或者将告警通知信息写入告警记录表。

下图中的流程源自于多年前的项目交付文档,我们除了监控 ETL 执行情况外,还做了 ODS 层数据抽取完整性校验和数据库存储空间使用情况检查。

2.2 记录运行日志的方法介绍

我们当时使用 Kettle 做为 ETL 工具,但使用其它工具、 Shell 脚本又或者调度工具其方法都是类似的。

第一层 ETL,每一步节点都会判断成功还是失败,失败则直接记录失败日志然后结束任务。

第二层 ETL。第一层里的 JOB_DW 任务节点下钻后的第二层任务。当第二层里的任意一个节点失败都会记录失败日志同时终止任务,同时该错误会向上层传递直至最外层任务。

再往下层,方法类似,我们就不做多余介绍了。

2.3 表结构设计

2.3.1 流水线运行日志 T_BAS_ETL_LOG

2.3.2 ETL监控结果汇总信息T_ETL_RST_COLLECTINFO

2.3.2 通知告警记录表

这个参考第四部分:告警通知系统设计

2.4 报表展示设计

除了告警通知,我们还需要有系统页面,方便运维做事后的分析和查看。

2.4.1 ETL运行情况日志

报表01:最外层 ETL 任务

如果有错误,需要标成红色,并且显示错误信息,报表 02 同理

报表02:报表下钻后的明细 ETL 任务。

2.4.2 数据抽取完整性日志

这个其实也可以通过数据质量稽核,配置检查点实现

2.4.3 数据库空间存储日志

这个是当时 Oracle 数据库的统计,当空间占用达到 80% 时候需要告警

3. 数据质量稽核

在某些情况下,就算 ETL 运行正常也不能保证整体数据就正常,比如源端数据迟到或缺失、ETL 代码被人错误的修改、调度未执行等等。

所以,我们需要对重要或者关键节点上的数据,做好稽核校验。

之前项目上通过 Oracle 存储过程 + Oracle job 实现过一版,大致思路就是通过比对两条 SQL 的查询结果来校验,但缺陷是只能检验数据库里的数据。

我刚毕业时候公司有一个网页版的工具(CData),现在想想拿来做数据质量稽核会更合适一些。

3.1 大致流程如下

  1. 配置数据源,可以是各种数据库。

  2. 配置比对规则。

    1. 指定数据源。

    2. 指定表,或者自己写查询 SQL。

    3. 字段映射,映射的时候可以配置简单的转换,需要区分维度和指标。

    4. 设定阈值,比如指标差异多少算作异常。

  1. 根据配置的调度时机执行校验。

  2. 执行日志实时展示,事实上是一张报表,可以下钻,报错的会重点标红,正常的标绿。

3.2 表结构设计

3.2.1 检查点配置表 dqc_check_config

3.2.2 数据源配置表 dqc_check_config_datasource

3.2.3 校验结果数据 dqc_check_result

3.2.4 规则执行日志 dqc_check_log

4. 告警通知系统

ETL 运行情况监控或者数据质量稽核发现问题后,需要触发告警通知。

4.1 实现方法

  1. 封装成一个服务对外开放 API 接口,ETL 运行情况监控或者数据质量稽核发现问题后实时调用该 API 触发告警/通知。传入参数如下:触达方式(邮件/短信/电话/微信/钉钉)、通知组、消息内容。

  2. 写入告警信息表,告警通知系统另起一个调度任务对该表定时轮询。

4.2 三种用途

  1. 确保监控和稽核任务发现问题后能够自动触发告警,以便运维人员能够及时处理。

  2. 没有收到告警并不能代表无错误,可能是监控或者稽核任务没有执行,最稳妥的办法就是一切 OK 的时候也发一条完成通知消息。

  1. 每日的分析简报也可以通过该系统推送消息。比如运营日报、监控日报。

4.3 表结构设计

4.3.1 数据质量-告警通知组 dqc_notify_group

4.3.2 数据质量-告警通知触达对象 dqc_notify_object

4.3.3 数据质量-告警通知日志 dqc_notify_log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/562290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux - 第17节 - 网络基础(应用层三)

1.HTTPS协议 1.1.HTTPS简介 HTTPS也是⼀个应⽤层协议,是在HTTP协议的基础上引⼊了⼀个加密层。 HTTP协议内容都是按照文本的方式明文传输的,明文传输是不安全的,所以现在主流的解决 方式是在http所在的应用层和tcp所在的传输层之间加一层SSL…

Windows操作系统的文件组织结构和计算方法

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows操作系统的文件组织结构和计算方法。 这是一块非常实用的知识,感谢大家来看这个帖子。 Windows组织结构就是文件的组织形式,其中: 1.Windows逻辑结构…

HTTPS的加密流程

HTTPS的加密流程 🔎加密🔎HTTPS的基本工作过程使用对称加密引入非对称加密黑客的反制(中间人攻击)一山更比一山高(引入证书) 🔎结尾 🔎加密 加密 对称加密非对称加密 对称加密🍭 只需要一个密钥(Key) 明文 Key 密…

【Java系列】深入解析枚举类型

序言 即便平凡的日子仿佛毫无波澜,但在某个特定的时刻,执着的努力便会显现出它的价值和意义。 希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流 问题 思考一下这寄个问题&a…

行为型设计模式01-策略模式

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 策略模式 问题引入:实现一个商场收银软件,简单的实现就是单价和数量的乘积。 1、商场收银软件 下面就来看…

掌握RDD分区

零、本讲学习目标 学会如何指定分区数量会定义与使用自定义分区器 一、RRD分区 (一)RDD分区概念 RDD是一个大的数据集合,该集合被划分成多个子集合分布到了不同的节点上,而每一个子集合就称为分区(Partition&#…

3.5 RDD持久化机制

一、RDD持久化 1、不采用持久化操作 查看要操作的HDFS文件 以集群模式启动Spark Shell 按照图示进行操作,得RDD4和RDD5 查看RDD4内容,会从RDD1到RDD2到RDD3到RDD4跑一趟 显示RDD5内容,也会从RDD1到RDD2到RDD3到RDD5跑一趟 2、采用持久化…

python解析html数据,获取到的链接是以/或 ./ 或 ../ 开头的相对链接,不是以http开头的,需要补全

一、实现的目标 在使用爬虫获取网页html数据时,解析到的链接是/或./ 开头的相对链接,不是以http开头的链接,如:/picture/0/cca65350643c441e80d390ded3975db0.png 。此时需要完成对该链接的补全,以得到正确的链接。此外,我们需要将解析到的html数据保存到起来,将来需要展…

3.8 Spark RDD典型案例

一、利用RDD计算总分与平均分 (一)准备工作 1、启动HDFS服务 2、启动Spark服务 3、在本地创建成绩文件 4、将成绩文件上传到HDFS (二)完成任务 1、在Spark Shell里完成任务 (1)读取成绩文件&#xff…

【搭建轻量级图床】本地搭建LightPicture开源图床管理系统,并公网远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…

二十三种设计模式第九篇--代理模式

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 意图:为其他对象提供一种代理以控制对这…

示范性微电子院校“抢人”,芯片赛道黄不了!

经常看到有同学问,“国内高校微电子专业最好的是哪所高校?”“想搞数字ic设计去哪所大学好呢?” 其实国内28所示范性微电子学院都是非常不错的选择。 2015年,九所示范性微电子院校名单公布,包括了清华大学、北京大学、复旦大学…

8、Linux C/C++ 实现MySQL的图片插入以及图片的读取

本文结合了Linux C/C 实现MySQL的图片插入以及图片的读取,特别是数据库读写的具体流程 一、文件读取相关函数 fseek() 可以将文件指针移动到文件中的任意位置。其基本形式如下: int fseek(FILE *stream, long offset, int whence);其中,str…

kafka 设置用户密码和通过SpringBoot测试

叙述 当前Kafka认证方式采用动态增加用户协议。 自0.9.0.0版本开始Kafka社区添加了许多功能用于提高Kafka群集的安全性,Kafka提供SSL或者SASL两种安全策略。SSL方式主要是通过CA令牌实现,此文主要介绍SASL方式。 1)SASL验证: 验证方式Kaf…

【JavaSE】Java基础语法(六):方法详解

文章目录 1. 方法概述1.1 方法的概念 2. 方法的定义和调用2.1 方法的定义2.2 方法的调用过程 3. 带参数方法的定义和调用3.1 带参数方法定义和调用3.2 形参和实参 4. 带返回值方法的定义和调用4.1 带返回值方法定义和调用4.2 带返回值方法的练习-求两个数的最大值(应用) 5. 方法…

【链接】深入理解PLT表和GOT表

系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于多处理器编程的艺术进行的,每个知识点的修正和深入主要…

nest日志包pino、winston配置-懒人的折腾

nest日志 三种node服务端日志选型 winstonpinolog4js 2023年5月23日 看star数:winston > pino > log4js 使用体验: pino 格式简洁,速度快,支持输入日志到任意数据库,日志暂无自动清理(可能是我…

AI是怎么帮我写代码,写SQL的?(本文不卖课)

近期,ChatGPT风起云涌,“再不入局,就要被时代淘汰”的言论甚嚣尘上,借着这一波创业的朋友都不止3-4个,如果没记错,前几次抛出该言论的风口似乎是区块链,元宇宙,WEB3.0。 画外音&…

动态规划问题实验:数塔问题

目录 前言实验内容实验流程实验过程实验分析伪代码代码实现分析算法复杂度用例测试 总结 前言 动态规划是一种解决复杂问题的方法,它将一个问题分解为若干个子问题,然后从最简单的子问题开始求解,逐步推导出更复杂的子问题的解,最…

绝世内功秘籍《调试技巧》

本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,希望可以帮到读者们哦。 内…