Bahubali Shetti

在 Elastic 中使用 GenAI 分析 AWS VPC 流日志

Elastic 拥有一系列嵌入式功能,例如基于 GenAI RAG 的 AI 助手和机器学习平台,这些都是产品基线的一部分。这些功能使得分析从 AWS VPC 流中获取的大量日志变得更加容易。

AWS VPC Flow log analysis with GenAI in Elastic

Elastic Observability 通过支持应用程序和基础设施的指标、追踪和日志,提供全面的可观测性解决方案。在管理 AWS 部署时,VPC 流日志对于管理性能、网络可见性、安全性、合规性以及 AWS 环境的整体管理至关重要。以下是一些示例:

  1. 流量从部署的何处进入和从何处发出,以及在部署内部的流量。这有助于识别异常或未经授权的通信

  2. 流量量检测峰值或下降,这可能表明生产中存在服务问题或客户流量增加

  3. 延迟和性能瓶颈 - 使用 VPC 流日志,您可以查看流的延迟(流入和流出),并了解模式

  4. 接受和拒绝的流量有助于确定潜在的安全威胁和错误配置的位置。

AWS VPC 日志是日志如何出色的一个很好的例子。日志记录是可观测性的重要组成部分,我们通常认为指标和追踪是可观测性的重要组成部分。然而,应用程序和底层基础设施输出的日志量可能非常庞大,例如 VPC 日志。但是,它也提供了大量有价值的见解。

在继续之前,了解 Elastic 在管理 AWS 和 VPC 流日志方面提供的功能非常重要

  1. 一套完整的集成来管理 VPC 流和 AWS 上的整个端到端部署

  2. Elastic 具有易于使用的 AWS Firehose 集成

  3. Elastic 的工具,如 Discover、峰值分析和异常检测,可帮助您获得更好的见解和分析

  4. 以及一套简单的 开箱即用的仪表板

在今天的博客中,我们将介绍 Elastic 的其他功能如何更轻松地支持分析和 RCA 潜在的 VPC 流日志。具体来说,我们将重点关注管理拒绝的数量,因为这有助于确保没有未经授权或异常的活动

  1. 设置一个易于使用的 SLO(新发布),以检测何时可能出现降级

  2. 创建一个 ML 作业来分析 VPC 流日志的不同字段

  3. 使用我们新发布的基于 RAG 的 AI 助手来帮助分析日志,而无需了解 Elastic 的查询语言,甚至无需了解如何在 Elastic 上绘图

  4. ES|QL 将有助于理解和分析模式的添加延迟。

在后续的博客中,我们将使用 AI 助手和 ESQL 来展示如何从 VPC 流日志中获取超出 REJECT/ACCEPT 的其他见解。

先决条件和配置

如果您计划遵循本博客,以下是我们用于设置此演示的一些组件和详细信息

VPC 流日志的 SLO

Elastic 的 SLO 功能直接基于 Google SRE 手册。所有定义和语义均按照 Google SRE 手册中的描述使用。因此,用户可以在 Elastic 中对 SLO 执行以下操作

  • 定义基于日志(而不仅仅是指标)的 SLO - 用户可以使用 KQL(基于日志的查询)、服务可用性、服务延迟、自定义指标、直方图指标或时间片指标。
  • 定义 SLO、SLI、错误预算和消耗率。用户还可以使用发生次数与基于时间片的预算。
  • 使用仪表板,在单个位置管理所有 SLO。
  • 从定义的 SLO 触发警报,无论是 SLI 关闭、消耗率已用完还是错误率是 X。

为 VPC 设置 SLO 非常简单。您只需创建一个要触发的查询。在我们的例子中,我们查找所有 aws.vpcflow.action=ACCEPT 的良好事件,并将目标定义为 85%。

如下例所示,在过去的 7 天里,我们超出了预算 43%。此外,我们在过去 7 天里一直没有合规。

使用 AI 助手分析 SLO

现在我们看到 VPC 流存在问题,我们立即与 AI 助手合作开始分析 SLO。因为它是一个聊天界面,我们只需打开 AI 助手,并通过一些简单的分析进行操作:(请参阅下面的动画 GIF 以获取演示)

AI 助手分析

  • 在过去 7 天内,导致此 SLO 问题的 aws.vpcflow.action=REJECT 的前 3 个 source.address 是什么? - 我们只是想看看是什么原因导致了错误预算的损失。是否有任何特定的 source.address 导致了高拒绝率。

    • 答案:计数最高 = 42670 且 source.address = 79.110.62.185 的表格

    • 有一个单一的 source.address 导致了 SLO 的损失。

  • 在过去 3 天内,source.address=79.110.62.185 的情况下,30 分钟时间窗口内 aws.vpcflow.action=REJECT 的最大数量是多少? - 在了解到特定的 source.address 导致了 SLO 的损失后,我们希望了解平均值。

    • 答案: "在过去 3 天内,source.address 为 79.110.62.185 的情况下,30 分钟时间窗口内 aws.vpcflow.action=REJECT 的最大数量是 229。这发生在 2024-06-01T04:00:00.000Z。”

    • 这意味着在过去 7 天内,REJECT 率一定较低,但相当稳定,而不是出现峰值。

  • 对于 source.address="79.110.62.185" 的日志,是否存在 source.geo.country_iso_code 字段的国家/地区代码? 如果有,值是多少 - 鉴于上一个问题显示 REJECT 率较低,这只意味着在过去 7 天内,这是相当稳定的,而不是出现峰值。

    • 答案: 是的,对于 source.address="79.110.62.185" 的日志,source.geo.country_iso_code 字段中存在国家/地区代码。该值为 BG (保加利亚)。
  • 是否存在特定的 destination.address,其中 source.address=79.110.62.185 收到 aws.vpcflow.action=REJECT。请同时提供 destination.address 和该 destination.address 的 REJECT 数量?

    • 答案: destination.address 为 10.0.0.27 在此时间范围内给出的拒绝数量为 53433。
  • 绘制过去 7 天内 source.address="79.110.62.185" 的 REJECT 与 ACCEPT 数量的图表。图表以每日为基础,绘制在单个图表中 - 我们提出这个问题是为了查看 ACCEPT 和 REJECT 之间的比较。

    • 答案: 请查看动态 GIF,可以看到生成的图表相当稳定
  • 在过去 30 天内,是否有任何 source.address 在 30 分钟内出现尖峰,高拒绝率? - 我们想看看是否还有其他峰值

    • 答案 - 是的,在过去 30 天内,有一个 source.address 在 30 分钟内出现高拒绝率峰值。source.address: 185.244.212.67,拒绝计数: 8975,时间段: 2024-05-22T03:00:00.000Z

查看流程

Video Thumbnail

潜在问题

处理来自源 79.110.62.185 的请求的服务器可能存在问题。

再次使用日志,我们本质上是要求 AI 助手提供内部 IP 地址为 10.0.0.27 的 eni ID。

从我们的 AWS 控制台,我们知道这是 Web 服务器。在 Elastic 中进一步分析,并与开发人员一起,我们意识到最近安装的新版本导致了连接问题。

使用 ML 定位异常

虽然使用 AI 助手分析信息非常棒,但 VPC 流管理的另一个重要方面是确保您可以管理日志峰值和异常。Elastic 拥有一个机器学习平台,可让您开发作业以分析特定指标或多个指标来查找异常。

VPC 流日志包含大量信息。完整的字段集在 AWS 文档中列出。我们将使用特定的子集来帮助检测异常。

我们正在为 aws.vpcflow.action=REJECT 设置异常,这需要我们在 Elastic 中使用多指标异常检测。

我们使用的配置利用了

检测器

  • destination.address

  • destination.port

影响因素

  • source.address

  • aws.vpcflow.action

  • destination.geo.region_iso_code

我们设置此方式将帮助我们了解针对特定 source.address 和/或 destination.geo.region_iso_code 位置的 destination.address 值是否存在 REJECT/ACCEPT 的大幅峰值。

运行后,该作业揭示了一些有趣的事情

请注意,source.address 185.244.212.67 在过去 30 天内的 REJECT 率很高。

注意我们之前在哪里找到的?在 AI 助手里!

虽然我们可以运行 AI 助手并找到这种异常,但 ML 作业可以设置为持续运行并就此类峰值发出警报。这将帮助我们了解 Web 服务器是否存在问题(如我们上面发现的),甚至可能存在安全攻击。

结论

您现在已经了解了 Elastic 基于 RAG 的 AI 助手如何轻松地帮助分析 VPC 流,甚至无需知道查询语法,了解数据所在位置,甚至了解字段。此外,您还了解了当服务中出现潜在问题或降级 (SLO) 时,我们如何提醒您。请查看我们其他关于 Elastic 中 AWS VPC 流分析的博客

  1. 一套完整的集成来管理 VPC 流和 AWS 上的整个端到端部署

  2. Elastic 具有易于使用的 AWS Firehose 集成

  3. Elastic 的工具,如 Discover、峰值分析和异常检测,可帮助您获得更好的见解和分析

  4. 以及一套简单的 开箱即用的仪表板

试用一下

现有的 Elastic Cloud 客户可以直接从 Elastic Cloud 控制台访问许多这些功能。 没有利用云上的 Elastic?开始免费试用

所有这些在您的环境中也是可能的。了解如何立即开始

本文中描述的任何特性或功能版本的发布和时间安排均由 Elastic 自行决定。任何目前不可用的特性或功能可能不会按时交付或根本不会交付。

在此博客文章中,我们可能使用或提及了第三方生成式 AI 工具,这些工具由其各自的所有者拥有和运营。Elastic 不对第三方工具进行任何控制,我们对它们的内容、操作或使用,以及因您使用此类工具而可能造成的任何损失或损害不承担任何责任。使用包含个人、敏感或机密信息的 AI 工具时,请谨慎行事。您提交的任何数据都可能用于 AI 训练或其他目的。我们不保证您提供的信息将被安全或保密地保存。您应在使用任何生成式 AI 工具之前熟悉其隐私惯例和使用条款。

Elastic、Elasticsearch、ESRE、Elasticsearch Relevance Engine 和相关标志是 Elasticsearch N.V. 在美国和其他国家/地区的商标、徽标或注册商标。所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。

分享这篇文章