在我们的使用日志进行根本原因分析系列的上一篇博客中,我们探讨了如何使用 Elastic 的异常检测和日志分类功能在 Elastic Observability 中分析日志。Elastic 平台使您能够快速入门机器学习 (ML)。您无需拥有数据科学团队或设计系统架构。此外,无需将数据移动到第三方框架进行模型训练。
可提供预配置的用于可观察性和安全性的机器学习模型。如果这些模型在您的数据上效果不佳,工具中的向导会指导您完成配置自定义异常检测和使用监督学习训练模型的几个步骤。为了帮助您入门,Elastic Observability 中内置了几个关键功能,以帮助进行分析,从而无需运行特定的 ML 模型。这些功能有助于最大限度地减少日志分析的时间和工作量。
让我们回顾一下 Elastic 中基于机器学习的可观察性功能集
异常检测: Elastic Observability 在启用时(请参阅文档),通过持续建模时间序列数据的正常行为(学习趋势、周期性等)来实时自动检测异常,从而识别异常、简化根本原因分析并减少误报。异常检测在 Elasticsearch 中运行并可随之扩展,并包含直观的 UI。
日志分类: 使用异常检测,Elastic 还可以快速识别日志事件中的模式。日志分类视图列出了根据其消息和格式分组的日志事件,而不是手动识别相似的日志,以便您可以更快地采取行动。
高延迟或错误事务: Elastic Observability 的 APM 功能可帮助您发现哪些属性导致事务延迟增加,并识别哪些属性在区分事务失败和成功方面最具影响力。请阅读Elastic Observability 中的 APM 关联:自动识别缓慢或失败事务的可能原因,了解此功能的概述。
AIOps 实验室: AIOps 实验室使用高级统计方法提供两个主要功能
- 日志峰值检测器有助于识别日志速率增加的原因。通过使用分析工作流程视图,可以轻松查找和调查异常峰值的原因。检查给定数据视图的日志速率的直方图图表,并找到特定更改背后的原因,这可能是在多个字段和值中数百万个日志事件中产生的。
- 日志模式分析可帮助您查找非结构化日志消息中的模式,并使您更轻松地检查数据。它对数据视图的选定字段执行分类分析,根据数据创建类别,并将它们与显示每个类别分布的图表以及与该类别匹配的示例文档一起显示。
正如我们在上一篇博客中所示,使用基于机器学习的功能有助于最大限度地减少使用传统方法(例如警报和简单模式匹配(可视化或简单搜索等))分析数据的极其繁琐和耗时的过程。由于跨不断增长的应用程序收集的遥测数据(日志、指标和跟踪)越来越多,因此需要在一定程度上使用人工智能来查找大海捞针。
在这篇博文中,我们将介绍 Elastic 的 AIOps 实验室中的两种功能:日志峰值检测器和日志模式分析。我们将使用上一篇博客中的相同数据,并使用这两种功能对其进行分析。
_ 我们将针对由 Google 开发并最近由 OpenTelemetry 修改的流行的 Hipster Shop 应用程序来介绍日志峰值检测器和日志模式分析。 _
可以在此处找到高延迟功能的概述,可以在此处找到 AIOps 实验室的概述。
下面,我们将检查一个场景,其中我们使用异常检测和日志分类来帮助识别 Hipster Shop 中问题的根本原因。
先决条件和配置
如果您计划按照本博客进行操作,以下是我们用于设置此演示的一些组件和详细信息
- 确保您在 Elastic Cloud 上拥有一个帐户,并且在 AWS 上部署了一个堆栈(请参阅此处的说明)。在 AWS 上部署此堆栈是 Elastic Serverless Forwarder 所必需的。
- 使用流行Hipster Shop演示应用程序的版本。它最初由 Google 编写,用于展示 Kubernetes 的多种可用变体,例如OpenTelemetry Demo App。此处提供了 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 Observability 提供的工具,可帮助您进行故障排除并识别根本原因。
从服务地图开始,您可以看到以红色圆圈标识的异常,当我们选择它们时,Elastic 将提供异常的分数。
在此示例中,我们可以看到 Hipster Shop 应用程序中的 productCatalogService 的特定异常分数为 96。异常分数表示异常与之前看到的异常相比的重要性。与其直接进入异常检测(请参阅之前的博客),不如通过查看 APM 中的服务详细信息来查看一些潜在问题。
我们看到 productCatalogService 存在延迟问题、事务失败、大量问题以及对 PostgreSQL 的依赖关系。当我们更详细地查看错误并向下钻取时,我们看到它们都来自 PQ - 它是 Go 中的 PostgreSQL 驱动程序。
当我们进一步向下钻取时,我们仍然无法知道为什么 productCatalogService 无法从 PostgreSQL 数据库中提取信息。
我们看到错误出现峰值,因此让我们看看是否可以使用我们的两个选项之一来获得进一步的见解
- 日志速率峰值
- 日志模式分析
日志速率峰值
让我们从 Elastic 的 AIOps 实验室部分(Elastic 的机器学习功能)中的日志速率峰值检测器功能开始。我们还预先选择了针对基线历史记录分析峰值。
日志速率峰值检测器已查看峰值中的所有日志,并将它们与基线进行了比较,并且看到特定日志消息中的计数高于正常值。从直观检查来看,我们看到 PostgreSQL 日志消息很高。我们使用 postgres 进一步过滤它。
我们立即注意到,这个问题可能是由 pgbench 引起的,pgbench 是一个流行的 PostgreSQL 工具,用于帮助数据库进行基准测试。pgbench 会一遍又一遍地运行相同的 SQL 命令序列,可能会在多个并发数据库会话中运行。虽然 pgbench 绝对是一个有用的工具,但它不应该在生产环境中使用,因为它会对数据库主机造成很大的负载,可能会导致站点出现更高的延迟问题。
虽然这可能不是最终的根本原因,但我们已经相当迅速地识别出一个很有可能成为根本原因的潜在问题。工程师可能打算针对暂存数据库运行 pgbench 来评估其性能,而不是生产环境。
日志模式分析
与其关注日志速率的峰值,不如使用日志模式分析来调查我们在 productCatalogService 中看到的错误峰值。在 AIOps Labs 中,我们只需选择“日志模式分析”,使用“日志”数据,用 postgres 过滤结果(因为我们知道它与 PostgreSQL 相关),并查看我们正在处理的日志的 message 字段中的信息。我们看到以下内容:
几乎立刻,我们看到它找到的最大模式是 pgbench 正在更新数据库的日志消息。我们可以从日志模式分析中直接深入到 Discover 中,查看详细信息并进一步分析消息。
正如我们在上一节中提到的,虽然这可能不是根本原因,但它很快为我们提供了一个起点和一个潜在的根本原因。开发人员可能打算针对暂存数据库运行 pgbench 来评估其性能,而不是生产环境。
结论
在第一篇博客和这篇博客之间,我们已经展示了 Elastic Observability 如何帮助您进一步识别并更接近于查明问题的根本原因,而无需在“大海捞针”。以下是您在本博客中学到的内容快速回顾。
-
Elastic Observability 具有许多功能,可以帮助您缩短查找根本原因的时间并提高 MTTR(甚至 MTTD)。特别是,我们在本博客中回顾了以下两个主要功能(在 Elastic 中的 AIOps Labs 中找到):
- 日志速率峰值检测器有助于识别日志速率增加的原因。它通过使用分析工作流视图,可以轻松查找和调查异常峰值的原因。检查给定数据视图的日志速率的直方图图表,并找到可能在多个字段和值中数百万个日志事件的特定更改背后的原因。
- 日志模式分析可帮助您查找非结构化日志消息中的模式,并使您更轻松地检查数据。它对数据视图的选定字段执行分类分析,根据数据创建类别,并将它们与显示每个类别分布的图表以及与该类别匹配的示例文档一起显示。
-
您了解了使用 Elastic Observability 的日志分类和异常检测功能是多么简单,无需了解机器学习(这有助于驱动这些功能)或进行任何耗时的设置。
准备好开始了吗?注册 Elastic Cloud 并试用上述功能。
其他日志记录资源
- 在 Elastic 上开始使用日志记录(快速入门)
- 通过集成摄取常见的已知日志(计算节点示例)
- 集成列表
- 将自定义应用程序日志摄取到 Elastic 中
- 在 Elastic 中丰富日志
- 使用异常检测 (ML)和AIOps分析日志
日志的常见用例示例
Elastic 和 Elasticsearch 是 Elasticsearch B.V. 在美国和其他国家/地区的商标、徽标或注册商标。