openGauss DBMind上的多指标关联性分析介绍

news2025/3/1 4:19:44

背景

随着互联网的发展,今天的数据库系统往往非常庞大且复杂,针对数据库系统的运维工作需要监控大量数据指标来了解数据库的运行状况。数据库指标往往以时间序列的方式出现,当业务层面关键指标出现异常时,运维人员需要迅速定位异常情况的原因来相应制定解决方案。但是当指标数量很多的时候,筛选信息的工作量也会很庞大。

我们都知道某些数据库指标之间有关联性,通过有方向性的关联性算法,在异常发生时将同一时间段的指标进行比对,根据相关性的强弱将异常时间段内与关键指标相关的指标筛选出来,有助于帮助运维人员迅速定位问题以及减轻运维人员的工作量,有助于我们锁定问题的根因。


指标的关联性

如前文所述,不同监控指标数据之间是存在关联性的,下图展示两个不同指标之间的相关关系。

9c001439-4cfb-4d3e-a289-146c2699b0bc.png

Pearson相关系数--最简单的相关性度量方法

要理解Pearson相关系数,首先要理解协方差(Covariance),协方差是一个反映两个随机变量相关程度的指标,如果一个变量跟随着另一个变量同时变大或者变小,那么这两个变量的协方差就是正值,反之相反,公式如下:

d651ca7f-8c17-4fb9-b454-45e511c7ce5f.png

Pearson相关系数公式如下:

f0826c18-4720-48fc-830c-46729552fa23.png

由公式可知,Pearson相关系数是用协方差除以两个变量的标准差得到的,虽然协方差能反映两个随机变量的相关程度(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关),但是协方差的值的大小并不能很好地度量两个随机变量的关联程度。这是因为,二维空间中分布着一些数据,我们想知道数据点坐标X轴和Y轴的相关程度,如果X与Y的相关程度较小但是数据分布得比较离散,会导致求出的协方差值较大,用这个值来衡量相关程度是不合理的。

为了更好地度量两个随机变量的相关程度,Pearson相关系数在协方差的基础上除以两个随机变量的标准差,容易得出,Pearson相关系数是一个介于-1到1之间的值,当两个变量的线性关系增强时,相关系数趋于1或-1。它很直观,也很容易理解,

Pearson相关系数有以下特点:

- 使用最广泛,假定数据符合正态分布

- 受异常值的影响比较大

- 适用于线性关系

- 必须是成对数据,每对数据之间相互独立

- 样本>30

Person相关系数是对于绝大多数场景都是胜任的,但是它存在几个明显的约束条件,即受异常值影响很大、符合正态分布即线性相关。因此,openGauss的DBMind在进行分析时,并没有直接使用该方法,而是混合了一系列的算法进行取长补短。但是,其在指标关联性分析的问题解决上,思路是一致的。

指标压缩

很多时间序列之间本质上是等价的或者接近等价,相关性分析的结果中,相关性最高的结果往往是这类等价指标,为了减少运维人员的工作量,应该先通过相关性分析对冗余的指标进行合并,减少指标异常时相关性分析给出的结果数量。

如下图所示,该两个指标之间高度相关,在进行指标关联的时候可以将高度相关的指标进行压缩,对相关性分析的结果进行压缩。

ff9735af-45d6-4b8b-9b7f-9140fe7bf5ef.png

以实际场景为例,我们会发现相关性矩阵对角线上有深色色块,图中将同质化较强的指标聚集在一起,指出了指标中可能存在的指标冗余情况。

16e23cd2-e51f-40a7-90e3-b2ec5daa3791.png

构建指标的因果关系链

在计算指标之间的相关性的同时,通过将时间序列在时间轴上进行平移,找出相关性最强时的时间差,不仅可以得到告警之间是否存在相关性,还可以对先后顺序,波动顺序进行分析。如下图所示,sys_db_size向右平移获得了更大的相关性系数,表示sys_db_size的增长先于dn_memory发生,意味着数据库规模增长可能是内存异常波动的原因而非结果。

50ef3156-aee8-4383-a999-ed4f7c2f783d.png

一般我们认为,更早发生异常的指标是更晚发生的异常的原因,通过时间的先后顺序推导出异常事件的因果关系,这对时间粒度要求比较细。

多指标关联性分析实战

多指标关联性分析应该由异常检测功能来自动触发,检测到dn_memory在15:20~15:40之间出现spike异常,且之后开始持续增长:

33f424a8-cb75-4f95-bd14-9930d7dad71f.png

指标关联分析:基于关联分析工具,将关联性较强的指标进行输出(下面列出部分指标):

c1d8182c-6ca5-440f-8042-e81197064918.png

根因分析:insert语句和update语句从0%突增,批量更新和插入操作导致大量的脏页产生,进而导致block大量置换,buffer命中率下降。

DBMind关联性分析使用指导

由于openGauss的DBMind已经在5.0.0版本中上线了多指标关联分析特性,因此,用户可以直接通过DBMind进行多指标关联分析。下面为大家简单介绍如何使用DBMind的多指标关联分析。

1. 安装并部署DBMind, 将DBMind搭建起来后,可以进入到DBMind的后台管理系统;其中,DBMind的安装包可以在openGauss官网下载页面

(https://opengauss.org/zh/download/)或 DBMind的源码仓库(https://gitee.com/opengauss/openGauss-DBMind)中下载。

部署文档可以参考openGauss的官方指导手册或DBMind源码仓库的readme页面。

安装部署好之后,可以打开DBMind的后台管理系统,输入当前数据库的用户名和密码即可登录进去。

0e4023a3-4e69-42aa-a21c-f0ca237e0a54.png

2. 在DBMind的后台管理系统中,我们能看到异常检测任务在后台处于开启状态:

3d2e182a-0b31-451a-bdef-94601731f0bd.png

3. 我们可以切换到Alarm页面,查看DBMind是否发现了数据库指标的异常波动

b192251d-ad76-4b1f-b648-d59b2b4efa35.png

若发现波动,我们可以将 group 复选框去掉,查看具体详情,并点击对应的 analyze 按钮进行“多指标关联分析”;

4. 如下图所示,我们可以看到指标之间的关联波动情况,便于DBA和运维人员进行故障的协同定位:

f9fbed92-0277-4209-83cd-d8651c1d17ba.png

如上图所示,异常检测功能发现到TPS指标发生了突然上升,我们可以同步观察到与其同步发生的CPU和内存波动情况,以及幅度。运维人员可以根据波动幅度、波动同步情况、同步波动的指标进行故障的评估和分析。

功能演进说明

该功能目前只是进行多指标的关联分析和观测,并不具备前面所述的“指标压缩”和直接输出分析结论的功能。后面,我们会根据开源计划,开源根因库和指标关联特征库等相关功能。



欢迎大家关注

https://gitee.com/opengauss/openGauss-DBMind

https://github.com/opengauss-mirror/openGauss-DBMind


相关推荐




openGauss DBMind自治运维系统的安装和部署

本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

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

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

相关文章

对大量日志导致Java后端某些类加载错误问题记录

对大量日志产生导致Java后端某些类加载错误问题记录 报错问题: java.lang.IllegalArgumentException: Name for argument type [java.lang.String] not available, and parameter name information not found in class file either. org.springframework.util.Ass…

C语言关键字sizeof 与strlen

sizeof() sizeof操作数所占空间的字节数大小&#xff0c;是一种c中的基本运算符。 可以以类型、指针、数组和函数等作为参数。 返回值类型为unsigned int 运算值在编译的时候就出结果&#xff0c;所以可以用来定义数组维数。 1. #include<stdio.h> 2. // sizeof 关键字…

数据结构的基本概念

数据结构概念 1.数据&#xff1a;所有能输入计算机且能被计算机处理的符号总称 2.数据元素&#xff1a;是数据的基本单位&#xff0c;表示数据集合中的一个个体。 3 .数据项&#xff1a;数据元素中有独立含义的最小单位。 数据结构&#xff1a;相互之间存在一定关系的数据元素的…

YYDS练手 130道python练习题 完整版PDF

近年来&#xff0c;Python在编程语言界里赚足了风头&#xff0c;无论是受欢迎程度&#xff0c;还是薪资待遇&#xff0c;都非常可观&#xff0c;相应的&#xff0c;Python岗位要求也越来越高&#xff0c;无论你是零基础还是老前辈&#xff0c;在Python面试中都不能轻视。 不打…

MPLS-VPN实验

1、拓扑 2、需求&#xff1a; pc1通过vpn访问pc2 3、配置思路 第一步&#xff1a;配置接口地址 第二步&#xff1a;配置ospf 第三步&#xff1a;配置bgp 第四步&#xff1a;配置mpls 第五步&#xff1a;配置VRF -创建VRF -开启 ipv4-family -接口加入VRF -给接口重新配置…

挂在网盘到本地磁盘(以中移动云盘为例)

发现百度网盘速度越来越慢&#xff0c;因此我想怎么讲百度网盘中300多个G的文件同步到移动云中&#xff0c;因此就有了这一步的探索。 利用Alist将中国移动网盘挂载到本地磁盘 解压Alist工具包&#xff0c;运行里面的alist-xxxx.exe文件&#xff0c;启动过程如下&#xff1a; …

图扑虚拟现实 VR 智慧办公室可视化

前言 “虚拟现实”是来自英文“Virtual Reality”&#xff0c;简称 VR 技术&#xff0c;其是通过利用计算机仿真系统模拟外界环境&#xff0c;主要模拟对象有环境、技能、传感设备和感知等&#xff0c;为用户提供多信息、三维动态、交互式的仿真体验。 效果展示 图扑软件基于…

JS - DangerJs运用

JS - DangerJs运用 前言一. 前期准备1.1 创建私有 Token1.2 Git 设置对应的 Token 以及 Host 环境变量1.3 项目安装 dangerJs 二. 测试 前言 在开源社区中&#xff0c;DangerJs可以拿来自动判断每个人提交的代码合并请求&#xff08;github中叫Pull Request&#xff0c;简称PR…

(学习日记)2023.04.24

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

MKS SERVO4257D 闭环步进电机_系列1 产品简述

第1部分 产品概述 1.1 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口&#xff0c;RS485接口和CAN接口&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&#xff0c…

C语言—文件操作

文件操作 什么是文件文件的打开和关闭文件指针文件的打开和关闭fopenfclose 文件的顺序读写fputcfgetcfputsfgetsfprintffscanffwritefread经典面试题sscanfsprintf 文件的随机读写fseekftellrewind 文本文件和二进制文件文件读取结束的判定文件缓冲区 前言 在写完通讯录的程序…

Android 14新功能全面概述

Android 14有什么新功能&#xff1a;全面概述 Android 14带来了大量的新功能和更新&#xff0c;从前台服务和闹钟的改进到语法屈折和字体缩放&#xff0c;Android 14为每位开发者都提供了一些东西。我在下面列出了一些最重要的更改。让我们深入探讨一下这个最新版本的新功能。 …

Patcher:用于精确医学图像分割的混合专家patch Transformers

文章目录 Patcher: Patch Transformers with Mixture of Experts for Precise Medical Image Segmentation摘要本文方法patcher块Mixture of Experts Decoder 实验结果 Patcher: Patch Transformers with Mixture of Experts for Precise Medical Image Segmentation 摘要 提…

内存泄漏检测工具Valgrind:C++代码问题检测的利器

Valgrind&#xff1a;C代码问题检测的利器 一、引言&#xff08;Introduction&#xff09;1.1 Valgrind的定义与功能&#xff08;What is Valgrind and its functions&#xff09;1.2 Valgrind的重要性&#xff08;The importance of Valgrind&#xff09;1.3 Valgrind的应用场…

分享一个国内免费的ChatGPT网站,手机电脑通用,免费无限制,支持AI绘画

背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具&#xff0c;近期的热度直接沸腾&#x1f30b;。 作为一个AI爱好者&#xff0c;翻遍了各大基于ChatGPT的网站&#xff0c;终于找到一个免费&#xff01;免登陆&#xff01;手机电脑通用&#xff01;国内可直接对话的C…

真实有用的工作英语 高阶版英文邮件写作

PS&#xff1a;美国老师建议在邮件里最好不要用&#xff0c;下划线&#xff0c;斜体&#xff0c;加粗等花里胡哨的东西。 To whom it may concern. 给可能关心这件事的人。To anyone who is interested in this matter. 给对这件事感兴趣的人。To the relevant person(s). 给相…

dom阶段实战内容

window定时器方法 ◼ 目前有两种方式可以实现&#xff1a;  setTimeout 允许我们将函数推迟到一段时间间隔之后再执行。  setInterval 允许我们重复运行一个函数&#xff0c;从一段时间间隔之后开始运行&#xff0c;之后以该时间间隔连续重复运行该函数。 ◼ 并且通常情况…

使用 Kotlin 实现 SOLID 原则编写清晰易维护的代码

使用 Kotlin 实现 SOLID 原则编写清晰易维护的代码 在编写软件时&#xff0c;很容易陷入特定编程语言&#xff0c;库和工具的细节中。然而&#xff0c;良好的软件设计不是与任何特定技术相关联的&#xff1b;相反&#xff0c;它基于一组经过多年和多个项目证明有效的原则。其中…

量子计算:纠错码 量子算法

文章目录 量子纠错码Shor 码CSS 码Steane 码一般性错误容错量子计算 量子算法量子 Fourier 变换Shor 算法求阶问题&#xff08;整数分解&#xff09;求周期问题&#xff08;离散对数&#xff09; Grover 算法 量子纠错码 对于量子态的纠错&#xff0c;与经典信息论中的纠错有着…

ATTCK v13版本战术介绍——防御规避(七)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术&#xff0c;本期我们为大家介绍ATT&CK 14项战术中防御规避战术第37-42种子技术&#xff0c;后续会介绍其他技术&#xff0c;敬请关…