openauss数据库源码解析系列文章——技术之“指标采集预测与异常检测”博客

上一篇介绍了“​​8.4 智能索引推荐​​”的相关内容,本篇我们介绍“8.5 指标采集、预测与异常检测”的相关精彩内容介绍。

数据库指标监控与异常检测技术,通过监控数据库指标,并基于时序预测和异常检测等算法,发现异常信息,进而提醒用户采取措施避免异常情况造成严重后果。

用户操作数据库的某些行为或某些正在运行的业务发生了变化,都可能会导致数据库产生异常,如果不及时发现并处理这些异常,可能会导致严重的后果。通常,数据库监控指标(metric,如CPU使用率、QPS等)能够反映出数据库系统的健康状况。通过对数据库指标进行监控,分析指标数据特征或变化趋势等信息,可及时发现数据库异常状况,并及时将告警信息推送给运维管理人员,从而避免造成损失。

图8-14 Anomaly-Detection框架

指标采集、预测与异常检测是通过同一套系统实现的,在openGauss项目中名为Anomaly-Detection,它的结构如图8-14所示。该工具主要可以分为Agent和Detector两部分,其中Agent是数据库代理模块,负责收集数据库指标数据并将数据推送到Detector;Detector是数据库异常检测与分析模块,该模块主要有三个作用。

(1) 收集Agent端采集的数据并进行转储。

(2) 对收集到的数据进行特征分析与异常检测。

(3) 将检测出来的异常信息推送给运维管理人员。

Agent模块负责采集并发送指标数据,该模块由DBSource、MemoryChannel、HttpSink三个子模块组成。

(1) DBSource作为数据源,负责定期去收集数据库指标数据并将数据发送到数据通道MemoryChannel中。

(2) MemoryChannel是内存数据通道,本质是一个FIFO队列,用于数据缓存。HttpSink组件消费MemoryChannel中的数据,为了防止MemoryChannel中的数据过多导致OOM(out of Memory,内存溢出),设置了容量上限,当超过容量上限时,过多的元素会被禁止放入队列中。

(3) HttpSink是数据汇聚点,该模块定期从MemoryChannel中获取数据,并以Http(s)的方式将数据进行转发,数据读取之后从MemoryChannel中清除。

Detector模块负责数据检测,该模块由Server、Monitor两个子模块组成。

(1) Server是一个Web服务,为Agent采集到的数据提供接收接口,并将数据存储到本地数据库内部,为了避免数据增多导致数据库占用太多的资源,我们将数据库中的每个表都设置了行数上限。

(2) Monitor模块包含时序预测和异常检测等算法,该模块定期从本地数据库中获取数据库指标数据,并基于现有算法对数据进行预测与分析,如果算法检测出数据库指标在历史或未来某时间段或时刻出现异常,则会及时的将信息推送给用户。

智能索引推荐工具的路径是openGauss-server/src/gausskernel/dbmind/tools/anomaly_detection,下面的代码详细展示了程序的入口。

(1) 后台线程的实现。

前面已经介绍过了,本功能可以分为三个角色:Agent、Monitor以及Detector,这三个不同的角色都是常驻后台的进程,各自执行着不同的任务。Daemon类就是负责运行不同业务流程的容器类,下面介绍该类的实现。

(2) 数据库相关指标采集过程。

数据库的指标采集架构,参考了Apache Flume的设计。将一个完整的信息采集流程拆分为三个部分,分别是Source、Channel以及Sink。上述三个部分被抽象为三个不同的基类,由此可以派生出不同的采集数据源、缓存管道以及数据的接收端。

(3) 数据存储与监控部分的实现。

Agent将采集到的指标数据发送到Detector服务器上,并由Detector服务器负责存储。Monitor不断对存储的数据进行检查,以便提前发现异常。

其中,由于不同指标数据是分表存储的,因此上述参数table也代表了不同指标的名称。

异常检测当前主要支持基于时序预测的方法,包括Prophet算法(由Facebook开源的工业级时序预测算法工具)和ARIMA算法,他们分别被封装成类,供Forecaster调用。

上述时序检测的算法类都继承了AlgModel类,该类的结构如下:

在Forecast类中,通过调用fit()方法,即可根据历史时序数据进行训练,通过forecast()方法预测未来走势。

获取到未来走势后如何判断是否是异常呢?方法比较多,最简单也是最基础的方法是通过阈值来进行判断,在我们的程序中,默认也是采用该方法进行判断的。

Anomaly-Detection工具有start、stop、forecast、show_metrics、deploy五种运行模式,各模式说明如表8-12所示。

表8-12 Anomaly-Detection使用模式及说明

模式名称

说明

start

启动本地或者远程服务

stop

停止本地或远程服务

forecast

预测指标未来变化

show_metrics

输出当前监控的参数

deploy

远程部署代码

Anomaly-Detection工具运行模式使用示例如下所示。

① 使用start模式启动本地collector服务,代码如下:

② 使用stop模式停止本地collector服务,代码如下:

③ 使用start模式启动远程collector服务,代码如下:

④ 使用stop模式停止远程collector服务,代码如下:

⑤ 显示当前所有的监控参数,代码如下:

⑥ 预测io_read未来60秒的最大值、最小值和平均值,代码如下:

⑦ 将代码部署到远程服务器,代码如下:

Anomaly-Detection作为一款数据库指标监控和异常检测工具,目前已经具备了基本的数据收集、数据存储、异常检测、消息推送等基本功能,但是目前存在以下几个问题。

(1) Agent模块收集数据太单一。目前Agent只能收集数据库的资源指标数据,包IO、磁盘、内存、CPU等,后续还需要在采集指标丰富度上作增强。

(2) Monitor内置算法覆盖面不够。Monitor目前只支持两种时序预测算法,同时针对异常检测额,也仅支持基于阈值的简单情况,使用的场景有限。

(3) Server仅支持单个Agent传输数据。Server目前采用的方案仅支持接收一个Agent传过来的数据,不支持多Agent同时传输,这对于只有一个主节点的openGauss数据库暂时是够用的,但是对分布式部署显然是不友好的。

因此,针对以上三个问题,未来首先会丰富Agent以便于收集数据,主要包括安全指标、数据库日志等信息。其次在算法层面上,编写鲁棒性(即算法的健壮性与稳定性)更强的异常检测算法,增加异常监控场景。同时,需要对Server进行改进,使其支持多Agent模式。最后,需要实现故障自动修复功能,并与本功能相结合。

感谢大家学习第8章 AI技术中“8.5 指标采集、预测与异常检测”的精彩内容,下一篇我们开启“8.6 AI查询时间预测”的相关内容的介绍。

敬请期待。

OpenGauss的SMP并行技术是一种利用计算机多核CPU架构来实现多线程并行计算,以充分利用CPU资源来提高查询性能的技术。SMP并行技术充分利用了系统多核的能力,来提高重查询的性能。

DB4AI-Snapshots是DB4AI模块用于管理数据集版本的功能。通过DB4ai-Snapshots组件,开发者可以简单、快速地进行特征筛选、类型转换等数据预处理操作,同时还可以像git一样对训练数据集进行版本控制。数据表快照创建成功后可以像视图一样进行使用,但是一经发布后,数据表快照便固化为不可变的静态数据,如需修改该数据表快照的内容,需要创建一个版本号不同的新数据表快照。

openGauss学习笔记-316 openGauss 数据迁移-MySQL迁移-迁移MySQL数据库至openGauss-反向迁移316.1 功能介绍316.2 原理简介316.3 特性优势316.

openGauss数据库源码解析系列文章——AI技术(2.2)四、智能索引推荐数据库的索引管理是一项非常普遍且重要的事情,任何数据库的性能优化都需要考虑索引的选择。为此,openGauss支持原生的索引推荐功能,可以通过系统函数等形式进行使用。4.1 使用场景在大型关系型数据库中,索引的设计和优化对SQL语句的执行效率至关重要。一直以来,数据库管理人员往往基于相关理论知识和经验,进行人工设计和调

openGauss数据库源码解析系列文章——AI技术(2.1)三、慢SQL发现基于历史SQL语句信息进行模型训练,并用训练好的模型进行SQL语句的预测,利用预测结果判断该SQL语句是否是潜在的慢SQL。当发现潜在的慢SQL后,开发者便可以进行针对性优化或者风险评估,以防业务上线后发生问题。3.1 慢SQL发现的功能上线业务预检测:上线一批新业务前,使用SQL诊断功能评估此次上线业务的预估执行时长

openGauss数据库源码解析系列文章——SQL引擎源码解析(1.2)二、SQL解析1970年,埃德加·科德(Edgar Frank Codd)发表了关系模型的论文,奠定了关系数据库的理论基础,随后在1974年,Boyce和Chamber在关系模型的基础上推出了Sequel语言,后来演进成了SQL(structured auery language,结构化查询语言)语言。SQL语言是一种基于关系

openGauss数据库源码解析系列文章——SQL引擎源码解析(二)三、查询优化openGauss数据库的查询优化过程功能比较明晰,从源代码组织的角度来看,相关代码分布在不同的目录下,如表1所示。表1 查询优化模块说明模块目录说明查询重写src/gausskernel/optimizer/prep主要包括子查询优化、谓词化简及正则化、谓词传递闭包等查询重写优化技术统计信息src/gausskern

四、对象权限管理权限管理是安全管理重要的一环,openGauss权限管理基于访问控制列表(access control list,ACL)实现。4.1 权限管理1. 访问控制列表访问控制列表是实现数据库对象权限管理的基础,每个对象都具有ACL,存储该对象的所有授权信息。当用户访问对象时,只有用户在对象的ACL中并且具有所需的权限才能够访问该对象。每个ACL是由1个或多个AclItem构成的链表,

上篇图文openGauss数据库源码解析系列文章——存储引擎源码解析(二)中,从astore和行存储索引机制两点对磁盘引擎进行了分享,本篇接着从磁盘引擎的行存储缓存机制、cstore、日志系统三方面...

上一篇介绍了“8.5 指标采集、预测与异常检测”的相关内容,本篇我们介绍“8.6 AI查询时间预测”的相关精彩内容介绍。 8.6 AI查询时间预测 在前面介绍过“慢SQL发现”特性,该特性的典型场景...

上一篇介绍了第八章AI技术中“8.3 慢SQL发现”的相关内容,本篇我们开启第八章 AI技术中“8.4 智能索引推荐”的相关精彩内容介绍。 8.4 智能索引推荐 数据库的索引管理是一项非常普遍且重要的...

上一篇介绍了第八章AI技术中“8.1 概述”及“8.2 自调优”的相关内容,本篇我们开启第八章 AI技术中“8.3 慢SQL发现”的相关精彩内容介绍。 8.3 慢SQL发现 基于历史SQL语句信息进行模型训练,...

❤️大家好,我是Gauss松鼠会,欢迎进来学习啦~❤️ 上一篇介绍了 8.6 AI查询时间预测的相关内容,本篇我们介绍“8.7 DeepSQL、8.8 小结”的相关精彩内容介绍。 8.7 DeepSQL 前面提到的功能均...

上一篇openGauss数据库源码解析系列文章--openGauss简介(上)中,从openGauss概述、应用场景、系统结构、代码结构四个方面对openGauss进行了初步介绍。其中,openGauss的代码结构介绍了数据...

❤️大家好,我是Gauss松鼠会,欢迎进来学习啦~❤️ 在前面介绍过“8.7 DeepSQL、8.8 小结”,本篇我们介绍第9章 安全管理源码解析中“9.1 安全管理整体架构和代码概览、9.2 安全认证”的相关...

上一篇openGauss数据库源码解析系列文章——公共组件源码解析(上)中,从系统表、数据库初始化、多线程架构及线程池技术四个方面对公共组件的源代码实现进行介绍。本篇接着从内存管理、多维监控、模拟信号机制展开介绍。 五、内存管理 数据库在运行过程中涉及许多对象,这些对象具有不同的生命周期,有些处理需 ...

上一篇为介绍完"5.1 事务整体架构和代码概览"及“5.2 事务并发控制”,本篇将继续介绍“5.3 锁机制”的精彩内容。 5.3 锁机制 数据库对公共资源的并发控制是通过锁来实现的,根据锁的用途不同...

在前面介绍过“9.1 安全管理整体架构和代码概览、9.2 安全认证”,本篇我们介绍第9章 安全管理源码解析中“9.3 角色管理”的相关精彩内容介绍。 9.3 角色管理 角色是拥有数据库对象和权限的实...

Python 推导式(Comprehensions)是一种简洁高效的语法糖,用于从一个或多个可迭代对象(如列表、字典、集合)创建新的数据结构。它能将循环和条件判断的逻辑合并为一行代码,显著提升代码可读性和编程效率。以下从多个维度详细解析 Python 推导式的核心用法、进阶技巧及注意事项: 一、列表 ...

摘要:随着高清摄像头、AI算力与算法的持续迭代,计算机视觉技术已成为安防监控从“被动录像”向“主动预警”升级的核心驱动力。本文系统调研计算机视觉在安防领域的核心应用场景,涵盖人脸智能识别、异常行为检测、目标追踪等关键方向,深入解析技术建立路径、产业落地案例及现存挑战,并针对开发者供应工艺选型建议,为 ...

1. 总平方和SST 总平方和(Total Sum of Squares, SST),也称为总离差平方和,是统计学和回归分析中的一个核心概念。 定义和作用 总平方和度量了因变量( yy )所有观测值相对于其平均值的总变异(Total Variation)或总波动性。它反映了数据点整体的离散程度 ...

文章详解了大模型应用的四种核心技术架构:纯Prompt(简单直接)、Agent+Function Calling(结合外部工具)、RAG(检索增强生成)和Fine-tuning(微调)。每种架构都有其适用场景、优缺点和实现方法,从简单的提示词设计到复杂的模型微调,满足不同层次的需求。文章还提供了架构选择建议,帮助开发者根据任务复杂度、数据需求和资源成本做出合理决策。

标签。因为第一章:叩开 Web 世界的大门——深入理解 HTML 的基石作用1.1 引言:我们与网页的日常清晨醒来,你拿起手机,点开新闻应用,浏览今日头条;工作时,你打开浏览器,登录公司系统,处理邮件和文档;闲暇时,你在电商网站购物,在视频平台追剧,在社交网络与朋友互动……这一切体验的核心载体,就是网页。你是否曾对这一切如何运转产生过好奇?那些精美的布局、交互的按钮、丰富的多媒体内容,是如何在浏览器中“无中生有”的?答案就隐藏在你每次右键点击网页时看到的“查看页面源代码”之中。

THE END
0.发现最前沿AI工具,用AI技术提高效率与创造力Jounce 是一种人工智能驱动的文案解决方案,可帮助营销人员、小企业主和内容创作者快速轻松地创建专业、有效的内容。 凭借 70 多个可定制模板和直观的设计,Jounce 能够利用其 AI 技术生成多种选项供用户选择。 网站:https://www.jounce.ai/ 六、Mindwrite-内容生成平台 jvzquC41o0nvzrz0eqs0d{ngh1763A670jznn
1.工具:介绍和讨论现代AI技术在写作领域的应用,例如自动生成文章在使用这些工具时,我们必须审慎对待生成的内容,并进行人工审查和编辑,以确保其质量和准确性。同时,我们也需要思考和解决与AI写作相关的伦理和法律问题,比如版权、原创性和责任分配等方面的挑战。 随着AI技术的不断进步和发展,自动化写作工具将继续在各个领域产生影响,并为写作和内容创作带来更多创新和便利。jvzq<84yyy4{kmtpij{b0lto0et0o8sgyu5qtxltco55;?>20jznn
2.文科生会被AI淘汰?专家建议掌握这4层能力二、如果你写文章像DeepSeek,那就真完蛋了 主持人: 乘数效应本身在于你自身的能力大小,能力越大反而放大效应越强。我们回到一个具体场景来看这个问题,比如说在学习场景,使用AI工具之后,是不是会进一步拉大不同学生之间的成绩差距?另外在教育场景下,AI技术的引入,假如说是老师借助AI备课,学生借助AI完成作业,老师再jvzquC4158qs0lto1r543A6:52<3798;459