基于电信行业的AIOps应用与实践

2023-05-16

欢迎关注“程序杂货铺”公众号,里面有精彩内容,欢迎大家收看^_^

1.摘要:

    在大型互联网架构中,为提升平台的计算能力及资源利用率,普遍采用分布式技术。然而使用分布式技术也会带来一些潜在问题,若主机的资源需求与资源分配不匹配、部分主机长时间负载过重,容易导致服务失效,造成服务中断或数据丢失;同时当系统发生故障时由于服务分散在不同主机上导致问题难以定位,故障排查耗时等问题。因此,有必要将AIOps技术应用于分布式系统运维中。针对电信行业某一运营服务,通过对该服务下全部机器的监控数据及该服务的调用耗时数据进行预处理生成机器可计算的数据,使用KNN、逻辑回归等模型进行分类计算,从而预测出30分钟后该服务调用是否超时。因此,我们可以提前对此类告警加以防范或采取措施,从而提前预测故障机器,不必等服务真正出现故障后进行修复操作。

2.功能介绍:

    为提升运维人员的工作效率并减轻运维人员工作负担,本系统将充分利用大数据及人工智能技术,通过构建监控数据用户画像提取出丰富的特征矩阵并与时序数据进行整合,利用机器学习分类算法对特征信息进行分类计算构建分类模型,通过已训练生成的分类模型对当前数据进行计算,以实现对分布式服务调用超时的预测功能。

3.系统架构:

                                              

                                                                                                  图1系统架构图

4.实现原理:

4.1数据采集

    开发人员通过自建监控平台对该服务进行监控,将监控到的主机时序数据及服务调用耗时数据存放至Hadoop以构建全量数据。

4.2构建用户画像

    对采集到的数据构建用户画像,提取特征矩阵。在构建用户画像阶段又包括3个步骤:数据预处理、特征抽取、生成标签。其架构图如下图2所示:

                                                                    

                                                                                           图2构建用户画像架构图

  1. 数据预处理:数据预处理类似于ETL工作,主要完成数据清洗,以及对噪声数据进行过滤,例如黑名单中的数据等,如果涉及到文本信息处理还需先对文本进行分词、去停用词等操作。
  2. 特征抽取:针对字符数据,例如CPU使用率、内存使用率进行特定抽取并使用归一化方法将数据处理为[0,1];针对文本数据主要采用TF*IDF、卡方检验、信息增益相混合的特征抽取方法,首先针对长文本,系统采用TF*IDF方法进行特征抽取,针对短文本,系统采用卡方检验方法进行特征抽取,然后系统使用信息增益对特征进行打分,根据评分设置权重。
  3. 构建标签体系:对监控数据进行标签处理,构建标签体系。通常构建三层标签体系,前两层标签为细粒度标签,往往从数据采集层获取,针对不同服务选用不同服务超时阈值进行切分,例如针对权限服务我们选择当调用耗时超过100毫秒设为异常数据否则为正常数据;而第三层为粗粒度标签,系统使用K-means算法对已抽取的特征信息进行聚类计算,生成相应的K个聚簇,令这K个聚簇的质心为粗粒度标签信息。

4.3数据存储

    将提取出的特征信息、标签数据存储至Hive中,以构建数据仓库,方便后续进行统计分析及模型训练;

4.4数据建模

    此模块为本系统重点模块,本系统主要选用机器学习的分类算法,其中分类算法种类繁多,针对众多算法我们通过对已处理后的监控数据进行模型实验以验证哪种模型更适合我们的场景,其验证结果如下表1所示:

                                                                                           表1模型验证结果表

 

accurate

precision

(正常)

recall

(正常)

F1

(正常)

precision

(异常)

recall

(异常)

F1

(异常)

KNN(uniform)

0.88095

0.88

1

0.94

0.5

0.5

0.5

KNN(distance)

0.87797

0.88

1

0.94

0.25

0.33

0.28

Logistic Regression

0.88095

0.88

1

0.94

0

0

0

Naïve Bayes

0.12797

0.8

0.01

0.03

0.12

0.97

0.21

SVM

0.88095

0.88

1

0.94

0

0

0

Decision Tree

0.78273

0.88

1

0.94

0.18

0.16

0.17

Random Foreast

0.88095

0.88

1

0.94

0

0

0

AdaBoost

0.88095

0.88

1

0.94

0

0

0

GBDT

0.88095

0.88

1

0.94

0

0

0

LSTM

0.96541

0.88

1

0.94

0

0

0

    实际运维工作中,运维人员更加关注针对故障信息预测得到的结果,因此实验中突出针对预测到故障信息所计算得到的评价指标进行对比,我们对异常数据的预测效果进行加粗,可以发现KNN模型更适合分布式服务调用耗时的预测场景,于是我们选择KNN对数据进行模型计算,通过表1可以得出以下信息:

  1. KNN算法应用于分布式服务故障预测场景中的效果明显优于其它七种分类算法,基于KNN算法所得到的实验结果中,针对故障数据所计算得到的召回率、精确率及F测度值均优于其它七种算法达到的指标效果。
  2. 虽然朴素贝叶斯算法对故障数据的召回率相对较高,但其准确率太低,因此不适用于该应用场景。

    综上所述,KNN算法比较适合应用于分布式服务故障预测,同时借助其优异的数据结构能够有效地进行分布式计算任务。另外由于主机每种性能指标之间存在相互联系,同时各种指标单位不一致,通常传统识别主机性能是否发生故障使用阈值方式对各指标值进行逻辑判断获取。另外,KNN算法简单,易于理解,易于实现,无需估计参数,特别适合对稀有事件进行分类,同时故障数据本身具有稀疏性的特点。因此考虑到数据及应用场景特点并结合算法自身特征,基于KNN算法的分布式服务故障预测模型具有一定的可用性及有效性。

    KNN算法的核心思想是如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。其算法流程如下:

  1. 计算已知类别数据集中的点与当前之间的距离;
  2. 按照距离递增次序排序;
  3. 选取与当前点距离最近的k个点;
  4. 确定前k个点所在的类别的出现频率;
  5. 返回前k个点出现频率最高的类别作为当前点的预测类别;

4.5模型计算

    针对上述建模过程,模型构建完成后将投入系统进行计算,进而完成预测任务。系统首先针对监控数据用户画像生成的特征矩阵进行数据预处理,然后针对生成的特征数据使用KNN算法进行模型计算。模型计算架构图如下图3所示:

                                                               

                                                                                                 图3模型计算架构图

4.6数据展现

    通过模型计算生成预测结果,当系统预测到异常信息后通过微信/短信等方式发送至运维人员的移动端令运维人员能够及时对故障信息进行排查。预测报表结果如下图4所示:

                                                                         

                                                                                                  图4服务预测报表

欢迎关注“程序杂货铺”公众号,里面有精彩内容,欢迎大家收看^_^

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于电信行业的AIOps应用与实践 的相关文章

随机推荐

  • PyQt5 事件处理机制

    PyQt5 事件处理机制 PyQt为事件处理提供了两种机制 xff1a 高级的信号与槽机制 xff0c 以及低级的事件处理机制 信号与槽可以说是对事件处理机制的高级封装 常见事件类型 xff1a 键盘事件 xff1a 按键按下和松开 鼠标事
  • PyQt5 实现串口接数据波形显示工具

    PyQt5 实现串口接数据波形显示工具 工具简述主程序代码Qt Designer设计UI界面程序运行效果 工具简述 基于PyQt5开发UI界面使用QtDesigner设计 xff0c 需要使用到serial模块 xff08 串口库 xff0
  • ROS CMakeLists.txt的编写学习

    调用ROS中的函数 xff0c cmakelists的编写学习过程 如有错误 xff0c 请留言指教 多谢 A 首先要了解的 CMakeLists txt是CMake的构建系统构建软件包的输入文件 任何兼容的CMake都包含了描述如何构建代
  • 【Node】Buffer 与 Stream

    node 为什么会出现 Buffer 这个模块 在最初的时候 xff0c JavaScript 只运行在浏览器端 xff0c 对于处理 Unicode 编码的字符串很容易 xff0c 但是对于处理二进制以及非 Unicode 编码的数据便无
  • ROS的tf包中坐标变换的方法

    1 setRotation函数的参数 在坐标变换的时候常有这样的写法 xff1a tfTutorialsAdding a frame C 43 43 transform setOrigin span class hljs symbol tf
  • 卡尔曼滤波的理解以及参数调整

    一 前言 卡尔曼滤波器是一种最优线性状态估计方法 xff08 等价于 在最小均方误差准则下的最佳线性滤波器 xff09 xff0c 所谓状态估计就是通过数学方法寻求与观测数据最佳拟合的状态向量 在移动机器人导航方面 xff0c 卡尔曼滤波是
  • ROS自定义msg类型及使用

    一 创建msg消息 参考 xff1a CreatingMsgAndSrv 首先创建一个空的package单独存放msg类型 xff08 当然也可以在任意的package中自定义msg类型 xff09 这里为便于说明 xff0c 建立一个名为
  • WebRTC-集成qsv硬解码实现

    1 Window下QSV硬解码配置 在libavcodec codec list c下添加 amp ff h264 qsv decoder 在ffmpeg generate gni下加入 34 libavcodec h264idct c 3
  • [ROS] ROS基础,创建工作空间,创建功能包,ros功能包相关命令,Catkin编译系统,catkin_make的编译方式

    1 工作空间 工作空间 xff08 work space xff09 是ROS系统中存放工程开发相关的文件夹 xff0c 其目录结构如下 xff1a src xff1a 代码空间 xff08 Source Space xff09 xff0c
  • ijkplayer-添加播放截图功能

    应用播放的时候需要截图 xff0c 可以在上层使用TexturView来使用截图 xff0c 不过太具有局限性呢 xff0c 还是在底层处理比较好 那么先分析下可以在哪里加截图呢 xff1f 看到网上很多做的都不能支持硬解截图 xff0c
  • avformat_seek_file及其flag含义

    我们从ijk中seek的处理流程来看ffmpeg的这个问题 int ffp seek to l FFPlayer ffp long msec assert ffp VideoState is 61 ffp gt is int64 t sta
  • 单例模式

    单例模式 xff1a include lt iostream gt using namespace std class Singleton public Singleton cout lt lt 34 Singleton虚构函数 34 lt
  • ffmpeg系列-解决ffmpeg获取aac音频文件duration不准

    这个问题是这样产生的 xff0c 一同事反应会随机出现ijk获取到的aac文件的duration不准 xff0c 发来一看 xff0c 确实不准 xff0c 在AE或者系统mediaplayer中得到的都是8 4秒 xff08 准确时间是M
  • 基于librtmp的推流实现

    1 推流 配置好rtmpdump库后 xff0c 我们可以先用命令行来推流看下效果 2 流程图 使用librtmp发布RTMP流的可以使用两种API xff1a RTMP SendPacket 和RTMP Write 使用RTMP Send
  • ijkplayer-音视频变速播放实现

    本文主要分析变速播放框架实现细节 xff0c 不分析sonic以及soundtouch变速算法 在我的sonic变速变调原理一文中会详细讲解基于基音周期来实现变速变调的原理 1 变速入口分析 从jni层的 setPropertyFloat函
  • Android_WakeLock使用

    1 前言与WakeLock简介 1 1 前言 一些手机app xff08 如微信 QQ等 xff09 有新消息来到达 xff0c 手机屏幕即使在锁屏状态下也会亮起 xff0c 并提示用户有新消息 但是 xff0c 一般情况下手机锁屏后 xf
  • ContentResolver.query详解

    1 查询手机的联系人 public void getContacts ContentResolver contentResolver 61 this getContentResolver Cursor cursor 61 contentRe
  • [ROS] 安装Gazebo 使用Gazebo 实现摄像头仿真 雷达仿真 Kinect仿真

    目录 安装Gazebo 1 添加源 2 安装gazebo 使用Gazepo 实现摄像头仿真 1 工作空间与功能包的创建 2 xff09 Gazebo配置文件 3 车体urdf建模与控制程序 4 launch文件 5 执行launch文件运行
  • jni开发-GetMethodID与CallObjectMethod的坑

    在java层中声明一个方法用于创建一个audiotrack xff0c 在C层中调用这个方法并获取audiotrack对象 先看下面的代码 xff1a SuPlayer java public AudioTrack createAudioT
  • 基于电信行业的AIOps应用与实践

    欢迎关注 程序杂货铺 公众号 xff0c 里面有精彩内容 xff0c 欢迎大家收看 1 摘要 xff1a 在大型互联网架构中 xff0c 为提升平台的计算能力及资源利用率 xff0c 普遍采用分布式技术 然而使用分布式技术也会带来一些潜在问