27 - 有效的使用 Observability 的资料 (1/4) - 透过 Machine Learning 发现异常的问题

有效的使用 Observability 的资料 系列文章


本篇学习重点

  • 了解 Elastic Observability 中,透过 Machine Learning 可以得到什麽样的协助

Elastic Stack 中的 Machine Learning

AIOps 这个议题在近几年愈来愈火红,以往我们总是只能透过进行监视、建立好规则触发警报,来了解系统是否发生异常,但若是我们没有自己观察到的部份,或是规则没有定义清楚的地方,往往很难有效且即时的发现问题,一般都是等到造成更严重的影响,严重到我们被通知道,我们知道有发生问题,而透过 Machine Learning 的能力,就是希望能在更严重的灾情发生之前,我们就能主动被提醒是否有异常,进而防止灾情的发生。

要说到 Elastic Stack 中所使用到 Machine Learning 的能力,主要有个两部份:

  • Anomaly Detection (异常侦测):主要是针对随时间增长的数据,透过不断收集新的资料来进行非监督学习 (unsupervised learning) 并创建正常行为的模式,使用这个模式比对新进来的资料,判断是不是有异常的状况发生。
  • Data Frame Analytics (资料框分析):使用 data frame 的方式进行资料分析,并且提供 outlier detection (异常值分析)、regression (回归) 演算法、classification (分类) 的三种方式。

由於我自己本身对 Machine Learning 这部份并不熟悉,因此也不便多做说明,有兴趣的可以查看 官方文件 - Machine Learning

在 Elastic Observability 中使用 Machine Learning

虽然我对於 Machine Learning 不熟悉,同时也听过不同的评论表示 Elastic Stack 里使用到的 Machine Learning 只是基本的能力,并没有太过华丽,不过或许是这样反而更容易让非 Machine Learning 专业的人上手,同时所关注的点会是在如何能确实的协助我们在 Observability 这件事情上。

接下来我就从 Elastic Observability 当中的四大功能 Logs、Metrics、Uptime、APM ,里面所使用到 Machine Learning 的部份来进行说明。

Logs

首先在 Logs 的画面中,功能表中就有 Anomalies 与 Categories 的选项,这两个功能都是透过 Machine Learning 的能力所执行的功能,主要能协助我们做到:

  • 某种类型的 Logs 数量发生异常 (变多、变少、突然出现)。
  • 特定行为的 Logs 数变多,例如某个 IP 突然有大量的存取,并且告诉我们异常的时间区段在哪边。
  • 除了 Machine Learning 本身的机制能通知我们之外,因为有 Categories 将 Logs 进行相似的分类并使用视觉呈现,我们也可以更容易的透过肉眼来检视是否有异常状况发生。

Anomalies

Logs 的 Anomaly 主要是针对 log entry rates (输入率) 来进行异常的判断。

第一次进入时,会需要建立 Machine Learninng 的 job (工作),只需要选择起始的时间,以及针对哪个 indes 进行处理即可。

13-Kibana-Create-ML-Job

当 ML job 开始执行後,同时也收集一段时间的资料之後 (一般来说有二周以上的资料会较准确),我们在 Anomalies 可以看到,针对不同的 dataset (这个栏位是 Elastic Common Schema 所定义的,同时也就是 ECS 正规化的好处),在不同的时间点,有哪些可能是异常的状态。

并且会用简单的分数来协助我们判断,并且在 Anomaly 可以直接看到异常的描述。

27-logs-anomalies

针对底下的项目展开,可以看到最近几则判定为异常的 events 的原始 logs 长什麽样子,从上图的时间轴,也能快速的针对这段有异常的时间区段来设置时间的筛选,也能进一步跳转到 Elastic Machine Learning 功能的 Anomaly Explorer 画面进行深入的分析。

27-logs-anomalies-detail

Categories

进入到 Categories (分类) 的功能画面时,很单纯的依照收集到的 Logs 进行分类,前且显示总数量、Datasets 的来源、并且借由 Trend (趋势) 的变化及数量来快速判断异常的状况。

27-logs-categories

Metrics

Metrics 里使用 Machine Learning 主要可以协助我们针对 Metrics 数据判断是否有异常,例如:

  • CPU 或 Memory 用量突然增加
  • 某个服务的网路存取量异常高
  • 某台 host 没有 inbound 的流量

而 Metrics 里要启用 Machine Learning,是在 Inventory 里面来启用,并透过右上角的 Anomaly detection

27-metrics-anomaly

同样的设定上也相当单纯,选择起始的时间,并且指定是否有要使用哪个栏位值来做 partition。

27-metrics-anomaly-setting

至於检视异常状况,也是透过右上角的 Anonmaly detecion 的选项,同时点选 Anomalies 的页签,可以看到 Machine Learning 协助判断出来的异常资讯。

透过 Actions 的选单,可以快速的跳到 Anomaly Explorer 或是在 Metrics 的 Inventory 画面中检视。

27-metrics-anomaly-list

点选 Show in inventory 之後,会直接带入筛选值,以及切到时间到异常发生的时段。

27-metrics-anomaly-inventory

Uptime

在 Uptime 里,Machine Learning 主要协助的是:

  • 某次请求的回应时间,是否与先前相比异常。

设定启用 Anomaly detection 的方式,是要进入某个定义好的 Monitor 项目之中:

27-uptime-overview

点选进入之後,在 Monitor duration 的画面里,可以看到 Enable anomaly detection 的选项。

27-uptime-anomaly

一旦启用对後,若有回应时间特别久的异常发生,在 Monitor duration 里就可以直接看到。

27-uptime-anomaly-error

APM

APM 的部份,与 Machine Learning 有较完整的 APM anomaly detection 的整合,针对

  • Span
  • Transaction Duration
  • Error
  • Throughput
  • User Agent 的特定属性行为

上述的各项都有较完整的整合,这部份的资讯可以参考 官方文件 - Machine Learning - APM anomaly detection integration

而设定的部份,也是在右上角的 Anomaly detection 进行设定。

27-apm-anomaly-setting

而异常发生时,在 APM 的相关画面都能看到标示,Service 页面会出现 Hearth 的栏位:

27-apm-ml-service

Transaction 的画面会将异常 Duration 的区段标示出来:

27-apm-ml-trans

Service Map 当中,有异常的服务也会变成黄色或红色,点选下去也会出现异常的分析资讯:

27-apm-ml-service-map


以上的介绍,是针对 Elastic Observability 中,透过 Machine Learning 在 Logs、Metrics、Uptime、Traces 里整合的相关功能说明,有兴趣的朋友可以进一步的从 官方文件 - Machine Learning 查阅 Machine Learning 的进阶用法,特别是 Anomaly Explorer 里面拥有更多详细的功能,对於异常的深入分析会有所帮助。

参考资料

  1. 官方文件 - Machine Learning
  2. 官方文件 - Machine Learning - APM anomaly detection integration

查看最新 Elasticsearch 或是 Elastic Stack 教育训练资讯: https://training.onedoggo.com
欢迎追踪我的 FB 粉丝页: 乔叔 - Elastic Stack 技术交流
不论是技术分享的文章、公开线上分享、或是实体课程资讯,都会在粉丝页通知大家哦!


<<:  【领域展开 27 式】 Page 与 Menu 名称比对+将 Instagram 汇入 Page 页面

>>:  3.1 Design System - 管理平台

[Tableau Public] day 2:认识 tableau public & 下载安装

日子来到了第二天,我们先去 tableau public 的官网看看吧! 注册帐号跟下载程序这两件事...

Day27 React-实作todoList(二)建立子元件

Header元件 第一个元件先从 Header.js 开始 Header要负责 显示标题 待办事项 ...

D7 - 如何用 Google Apps Script 将 Google 表单的回应即时同步在多个行事历上?

来到了第七天。老样子,先讲推荐的速解,如果你很急着用,这些 Add-On 可以帮上忙,第一是 For...

Day2 Visual Studio Code 功能简易说明

Visual Studio Code(简称VS Code) 由微软开发,并且支援Windows、Li...

[Day 30] 最後的行动装置

那个行动装置 虽然我们都概括说是手机版,但 Media Query 其实支援更多装置的呈现,只是,应...