作者:来自 Elastic Bahubali Shetti
Elastic Observability 不仅提供日志聚合、指标分析、APM 和分布式追踪,还具备基于机器学习的 AIOps 功能,帮助你分析问题的根因,让你能够专注于最重要的任务。
在我们 “使用日志进行根本原因分析” 系列的上一篇博文中,我们探讨了如何使用 Elastic 的异常检测和日志分类功能在 Elastic Observability 中分析日志。Elastic 平台让您能够快速上手机器学习 (ML)。你无需组建数据科学团队或设计系统架构。此外,也无需将数据迁移到第三方框架进行模型训练。
我们提供预配置的机器学习模型,用于实现可观测性和安全性。如果这些模型无法很好地处理你的数据,工具内置的向导将引导您完成配置自定义异常检测并使用监督学习训练模型所需的几个步骤。为了帮助你入门,Elastic Observability 内置了多项关键功能来辅助分析,无需运行特定的 ML 模型。这些功能有助于最大限度地减少日志分析的时间。
让我们回顾一下 Elastic 中基于机器学习的可观测性功能:
异常检测:Elastic Observability 开启后(参见文档),会通过持续建模时间序列数据的正常行为(学习趋势、周期性等)来自动检测异常,从而实时识别异常、简化根本原因分析并减少误报。异常检测功能与 Elasticsearch 集成并可进行扩展,并包含一个直观的用户界面。
日志分类:借助异常检测,Elastic 还可以快速识别日志事件中的模式。无需手动识别相似的日志,日志分类视图会根据日志事件的消息和格式列出已分组的日志事件,以便你更快地采取行动。
高延迟或错误事务:Elastic Observability 的 APM 功能可帮助你发现哪些属性导致了事务延迟增加,并确定哪些属性在区分事务失败和成功方面最具影响力。阅读 Elastic Observability 中的 APM 关联:自动识别事务缓慢或失败的可能原因,了解此功能的概述。
AIOps 实验室:AIOps 实验室采用先进的统计方法,提供两项主要功能:
- 日志峰值检测器有助于识别日志速率增加的原因。它可以通过分析工作流视图轻松查找和调查异常峰值的原因。查看给定数据视图的日志速率直方图,并找出数百万个日志事件(涵盖多个字段和值)中特定变化背后的原因。
- 日志模式分析可帮助你在非结构化日志消息中发现模式,并更轻松地检查数据。它对数据视图的选定字段执行分类分析,根据数据创建类别,并将其与显示每个类别分布情况的图表以及与该类别匹配的示例文档一起显示。
正如我们在上一篇博文中所展示的,使用基于机器学习的功能有助于最大限度地减少使用传统方法(例如警报和简单的模式匹配(可视化或简单搜索等))进行数据分析的繁琐且耗时的过程。由于在不断增长的应用程序中收集的遥测数据(日志、指标和跟踪)数量不断增加,想要大海捞针需要使用一定程度的人工智能。
在这篇博文中,我们将介绍 Elastic AIOps 实验室的两项功能:日志尖峰检测器和日志模式分析。我们将使用上一篇博文中的相同数据,并使用这两项功能进行分析。
我们将针对 Google 开发的热门应用 Hipster Shop 介绍日志尖峰检测器和日志模式分析,该应用最近由 OpenTelemetry 进行了修改。
高延迟功能的概述可在此处找到,AIOps 实验室的概述可在此处找到。
下面,我们将研究一个场景,在该场景中,我们使用异常检测和日志分类来帮助识别 Hipster Shop 中问题的根本原因。
先决条件和配置
如果你计划关注本博客,以下是我们用于设置此演示的一些组件和详细信息:
- 确保你拥有 Elastic Cloud 帐户,并在 AWS 上拥有已部署的堆栈(请参阅此处的说明)。Elastic Serverless Forwarder 需要在 AWS 上部署此堆栈。
- 使用热门 Hipster Shop 演示应用程序的某个版本。该应用程序最初由 Google 编写,用于展示 Kubernetes 在众多可用版本中的应用,例如 OpenTelemetry 演示应用程序。Elastic 版本可在此处找到。
- 确保您已为 Elastic APM 代理或 OpenTelemetry 代理配置了该应用程序。有关更多详细信息,请参阅以下两篇博客:在 Elastic 中使用 OTel 实现独立性以及在 Elastic 中使用 OTel 实现可观察性和安全性。此外,请查看 Elastic 中的 OTel 文档。
- 浏览 Elastic Observability APM 功能概述。
- 浏览我们的日志异常检测文档和日志分类文档。
一旦你使用 APM(Elastic 或 OTel)代理对应用程序进行检测,并将指标和日志提取到 Elastic Observability 中,你应该会看到该应用程序的服务地图,如下所示:
在我们的示例中,我们引入了一些问题来帮助你了解根本原因分析功能。根据你加载应用程序的方式和/或引入特定功能标志的方式,你可能会遇到一系列不同的问题。
作为演示的一部分,我们假设我们是 DevOps 或 SRE,负责在生产环境中管理此应用程序。
根本原因分析
虽然应用程序已正常运行一段时间,但你收到通知,提示某些服务运行状况不佳。这可能是由于你在 Elastic 或其他外部通知平台中设置的通知设置(包括与客户相关的问题)导致的。在本例中,我们假设客户支持已接到多起有关该网站的客户投诉。
作为 DevOps 或 SRE,你该如何调查此问题?我们将介绍 Elastic 中的两种调查方法:
- 日志峰值分析
- 日志模式分析
虽然我们分别展示了这两种方法,但它们可以结合使用且互为补充,因为它们都是 Elastic 可观测性提供的工具,可帮助您排查问题并识别根本原因。
从服务地图开始,你可以看到用红色圆圈标识的异常,当我们选择它们时,Elastic 将为异常提供分数。
在此示例中,我们可以看到 Hipster Shop 应用程序中 productCatalogService 的特定异常得分为 96。异常得分表示该异常与之前发现的异常相比的显著性。我们先不深入探讨异常检测(参见上一篇博客),而是通过查看 APM 中的服务详细信息来分析一些潜在问题。
我们发现 productCatalogService 存在延迟问题、事务失败、大量问题以及对 PostgreSQL 的依赖。当我们更详细地查看错误并深入分析时,我们发现它们都来自 PQ —— 一个用 Go 编写的 PostgreSQL 驱动程序。
随着我们进一步深入研究,我们仍然无法确定为什么 productCatalogService 无法从 PostgreSQL 数据库中提取信息。
我们看到错误数量出现了峰值,所以让我们看看能否使用以下两个选项之一来获取更多洞察:
- 日志速率峰值
- 日志模式分析
日志速率峰值
让我们从 Elastic 机器学习功能中 AIOps Labs 部分的日志速率峰值检测器功能开始。我们还预先选择根据基线历史记录分析峰值。
日志速率峰值检测器已查看峰值期间的所有日志,并将其与基线进行了比较,发现特定日志消息的计数高于正常水平。通过目视检查,我们发现 PostgreSQL 日志消息数量较高。我们进一步使用 Postgres 进行过滤。
我们立即注意到,这个问题可能是由 pgbench 引起的。pgbench 是一款流行的 PostgreSQL 工具,用于帮助对数据库进行基准测试。pgbench 会在多个并发数据库会话中反复运行相同的 SQL 命令序列。虽然 pgbench 确实是一款实用工具,但它不应该在生产环境中使用,因为它会给数据库主机带来沉重的负载,从而可能导致网站出现更高的延迟问题。
虽然这可能是也可能不是最终的根本原因,但我们很快就发现了一个很可能是根本原因的潜在问题。一位工程师很可能打算针对临时数据库运行 pgbench 来评估其性能,而不是在生产环境中运行。
日志模式分析
我们不再使用日志速率峰值,而是使用日志模式分析来调查我们在 productCatalogService 中看到的错误峰值。在 AIOps 实验室中,我们只需选择 “Log Pattern Analysis, - 日志模式分析”,使用 Logs 数据,使用 postgres 筛选结果(因为我们知道它与 PostgreSQL 相关),然后查看我们正在处理的日志的消息字段中的信息。我们看到以下内容:
我们几乎立刻就能看到,它找到的最大模式是一条 pgbench 正在更新数据库的日志消息。我们可以进一步深入到 Discover 中的日志模式分析中,查看详细信息并进一步分析这些消息。
正如我们在上一节中提到的,虽然它可能是也可能不是根本原因,但它能快速为我们提供一个切入点和潜在的根本原因。开发人员可能打算针对临时数据库运行 pgbench 来评估其性能,而不是针对生产环境。
结论
在第一篇博文和这篇博文中,我们展示了 Elastic 可观测性如何帮助您进一步识别并更接近于查明问题的根本原因,而无需像 “大海捞针” 一样费力。以下是你在这篇博文中学到的内容的简要回顾。
- Elastic 可观测性拥有众多功能,可帮助你缩短查找根本原因的时间并提高平均修复时间 (MTTR)(甚至平均总故障时间 (MTTD))。特别地,我们在本篇博文中回顾了以下两项主要功能(位于 Elastic 的 AIOps 实验室中):
- 日志速率峰值检测器有助于识别日志速率增加的原因。它可以通过分析工作流视图轻松查找和调查异常峰值的原因。检查给定数据视图的日志率直方图,并找出数百万个日志事件中跨多个字段和值的某个特定变化背后的原因。
- 日志模式分析可帮助您在非结构化日志消息中发现模式,并更轻松地检查数据。它对数据视图的选定字段执行分类分析,根据数据创建类别,并将其与显示每个类别分布情况的图表以及与该类别匹配的示例文档一起显示。
- 你了解了使用 Elastic Observability 的日志分类和异常检测功能是多么简单易用,无需了解机器学习(机器学习有助于驱动这些功能)或进行任何冗长的设置。
准备好开始了吗?注册 Elastic Cloud 并试用上述功能。
原文:Root cause analysis with logs: Elastic Observability's AIOps Labs — Elastic Observability Labs