Bahubali Shetti

在 Elastic 中使用 GenAI 进行 NGNIX 日志分析

Elastic 拥有一组嵌入式功能,例如基于 GenAI RAG 的 AI 助手和作为产品基线的机器学习平台。这些功能使分析从 NGINX 获取的大量日志变得更加容易。

阅读时长 9 分钟
NGNIX log analytics with GenAI in Elastic

Elastic 可观测性提供完整的可观测性解决方案,支持应用程序和基础设施的指标、跟踪和日志。NGINX 被广泛用于 Web 服务、负载平衡、HTTP 缓存和反向代理,是许多应用程序的关键,并输出大量日志。NGINX 的访问日志(详细说明向 NGINX 服务器发出的所有请求)和错误日志(记录服务器相关的问题)是管理和分析 NGINX 问题以及了解应用程序发生情况的关键。

在管理 NGINX 时,Elastic 提供了以下几种功能

  1. 轻松摄取、解析和开箱即用的仪表板。请查看我们文档中的简单操作方法。这些仪表板基于日志,显示一段时间内的多项内容,如响应代码、错误、热门页面、数据量、使用的浏览器、活动连接、丢包率等等。

  2. 针对您的 NGINX 日志的开箱即用、基于 ML 的异常检测作业。这些作业有助于精确定位请求速率、IP 地址请求速率、URL 访问、状态代码和访问者速率异常。

  3. ES|QL,可在分析期间帮助处理日志并构建图表。

  4. Elastic 的 GenAI 助手提供了一个简单的自然语言界面,可帮助分析所有日志,并从 ML 作业中提取问题,甚至创建仪表板。Elastic AI 助手还会自动使用 ES|QL。

  5. NGINX SLO - 最后,Elastic 提供了为您的 NGINX 日志定义和监视 SLO 的能力。虽然大多数 SLO 都是基于指标的,但 Elastic 允许您创建基于日志的 SLO。我们在之前的博客中详细介绍了这一点。

NGINX 日志是日志很棒的另一个例子。日志记录是可观测性的重要组成部分,我们通常认为可观测性包括指标和跟踪。但是,应用程序和底层基础设施输出的日志量可能非常庞大,NGINX 通常是大多数分析的起点。

在今天的博客中,我们将介绍开箱即用的基于 ML 的异常检测作业如何帮助进行 RCA,以及 Elastic 的 GenAI 助手如何帮助轻松处理日志,在几分钟内找出问题。

先决条件和配置

如果您计划按照本博客操作,这里是我们用于设置此演示的一些组件和详细信息

  • 确保您在 Elastic Cloud 上拥有一个帐户和一个已部署的堆栈(请参阅此处的说明)。

  • 在主机上启动 NGINX 服务器。或者,运行以 NGINX 作为前端的应用程序并驱动流量。

  • 安装 NGINX 集成和资产,并查看文档中提到的仪表板。

  • 确保您的 Elastic 堆栈中配置了一个 ML 节点

  • 要使用 AI 助手,您需要试用版或升级到白金版。

在我们的场景中,我们使用 Elastic 环境中 3 个月的数据来帮助突出显示这些功能。因此,您可能需要运行应用程序并产生特定时间范围内的流量才能跟上。

使用 AI 助手分析问题

如之前的博客中所述,您可以通过针对 NGINX 日志的 SLO 监控收到问题警报。假设您有一个基于状态代码的 SLO,如之前的博客中所述。您可以立即通过 AI 助手分析问题。因为它是一个聊天界面,我们只需打开 AI 助手并进行一些简单的分析:(有关演示,请参阅动画 GIF)

AI 助手分析:

  • 使用 Lens 图表,从 filebeat-nginx-elasticco-anon-2017 中列出所有 http 响应状态代码 < 400 和 >=400。http.response.status.code 不是整数 - 我们只是想了解导致状态代码 >= 400 的请求量并绘制结果图。我们看到 15% 的请求未成功,因此触发了 SLO 警报。

  • 哪个 IP 地址(字段 source.adress)在 filebeat-nginx-elasticco-anon-2017 中具有最多的 http.response.status.code >= 400。http.response.status.code 不是整数  - 我们很想知道是否存在特定 IP 地址没有成功请求。72.57.0.53,每天出现 25,227 次,这属于每日高值,但不能确保 2 个失败的请求。

  • source.address=72.57.0.53 来自哪个国家/地区 (source.geo.country_iso_code)。使用 filebeat-nginx-elasticco-anon-2017。 - 同样,我们想知道这是否来自特定国家/地区。IP 地址 72.57.0.53 来自 ISO 代码为 IN 的国家/地区,这对应于印度。一切正常。

  • 来自 filebeat-nginx-elasticco-anon-2017 的 source.address=72.57.0.53 是否有任何 (http.response.status.code < 400)。http.response.status.code 不是整数 - 奇怪的是,所讨论的 IP 地址只有 4000 多个成功响应。这意味着它不是恶意的,而是指向其他原因。

  • 来自 source.address=72.57.0.53 的不同状态代码 (http.response.status.code>=400) 是什么。使用 filebeat-nginx-elasticco-anon-2017。http.response.status.code 不是整数。提供每个状态代码的计数 - 我们很想知道是否看到任何 502,结果没有,但大多数失败都是 404。 

  • 不同的状态代码 (http.response.status.code>=400) 是什么。使用 filebeat-nginx-elasticco-anon-2017。http.response.status.code 不是整数。提供每个状态代码的计数 - 无论特定地址如何,状态代码出现次数最多的 > 400 是什么?这也指向 404。 

  • 来自 NGINX 日志的特定 IP 地址的 404 计数较高意味着什么? - 提出这个问题,我们需要了解应用程序中可能出现的原因。从答案中,我们可以排除安全探测和 Web 抓取,因为我们验证了特定地址 72.57.0.53 的非成功请求状态代码较低。它还排除了用户错误。因此,这可能指向断开的链接或缺少资源。

观看流程:

Video Thumbnail

潜在问题

似乎我们在后端为特定答案提供服务或资源(数据库或断开的链接)方面可能存在问题。这导致了高于正常水平的非成功状态代码 >=400。

AI 助手的主要亮点

当您观看此视频时,您会注意到一些事项

  1. 我们使用一组简单的自然语言查询在几分钟内分析了数百万个日志。 

  2. 我们不需要知道任何特殊的查询语言。AI 助手使用了 Elastic 的 ES|QL,但也可以类似地使用 KQL。 

  3. AI 助手可以轻松构建图表

  4. AI 助手正在访问和使用存储在 Elastic 索引中的内部信息,而不是简单的基于 “谷歌搜索” 的 AI 助手。这是通过 RAG 实现的,AI 助手还可以调出 github 中的已知问题、运行手册和其他有用的内部信息。

请查看以下博客,了解 AI 助手如何使用 RAG 来检索内部信息,特别是使用 github 和运行手册。

使用 ML 定位异常

虽然使用 AI 助手非常适合分析信息,但 NGINX 日志管理的另一个重要方面是确保您可以管理日志峰值和异常。Elastic 有一个机器学习平台,允许您开发作业来分析特定指标或多个指标以查找异常。当使用 NGINX 时,有几个开箱即用的异常检测作业。这些专门用于 NGINX 访问日志。

  • Low_request_rate_nginx - 检测低请求率

  • Source_ip_request_rate_nginx - 检测异常的源 IP - 高请求率

  • Source_ip_url_count_nginx - 检测异常的源 IP - 高 URL 唯一计数

  • Status_code_rate_nginx - 检测异常的状态代码率

  • Visitor_rate_nginx - 检测异常的访问者率

开箱即用,让我们看一下与我们之前的分析相关的作业 - Status_code_rate_nginx。

只需点击几下,我们立即得到一个分析,显示一个特定的 IP 地址 - 72.57.0.53,具有高于正常水平的非成功请求。奇怪的是,我们也发现这是在使用 AI 助手。

我们可以通过与 AI 助手的对话,查看日志,甚至查看其他的 ML 异常作业来进一步分析。

结论:

您现在已经了解了 Elastic 基于 RAG 的 AI 助手如何轻松帮助分析 NGINX 日志,甚至不需要了解查询语法、理解数据在哪里,甚至了解字段。此外,您还看到了我们如何在潜在问题或服务降级 (SLO) 时发出警报。

查看有关 NGINX 日志的其他资源

NGINX 的开箱即用异常检测作业

使用 NGINX 集成来摄取和分析 NGINX 日志

Elastic 中基于 NGINX 日志的 SLO

使用 GitHub 问题、运行手册和其他内部信息,通过 Elastic 基于 RAG 的 AI 助手进行 RCA

尝试一下

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

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

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

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

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

分享这篇文章