基于 AI 的日志事件响应:Elastic Observability 技术深度解析

作者:来自 Elastic David Hope

现代面向客户的应用,无论是电子商务网站、流媒体平台,还是 API 网关,都运行在大量微服务和云资源上。当出现问题时,每一秒的停机都可能导致收入损失并削弱用户信任。Observability(可观测性)是一种实践,使 Site Reliability Engineering(SRE)和开发团队能够实时查看系统健康状况并采取行动。本文将通过一个通用的逐步调查示例,展示 Elastic Observability 如何结合日志数据,将始终在线的机器学习(ML)与生成式 AI 助手结合,检测异常、发现根本原因、衡量用户影响并加速修复,且在大规模环境下高效运行。

异常检测

生产环境每分钟会摄取数百万条日志。Elastic 的 AIOps 作业会持续分析正常日志的吞吐量和内容,无需任何手动规则。当日志量或消息结构偏离学习的基线时,平台会自动触发高精度的异常警报。由于模型是无监督的,它们会适应不断变化的流量模式,并标记突发峰值(例如 10 倍错误激增)以及罕见的新日志类别。

除了直接检测日志激增外,Elastic 还训练季节性/单变量模型,以预测每个时间桶的预期事件数量,并应用统计测试来分类异常值。同时,日志分类通过对 token 嵌入计算余弦相似度,将相似消息聚类,使识别之前未见过的错误字符串变得轻而易举。

警报调查:自动化模式分析

点击警报不仅会显示时间戳。Elastic 的 ML 作业已经将激增与主要的新日志模式 ERROR 1114 (HY000): table "orders" is full 关联起来,并展示示例日志行。工程师无需依赖 grep 搜索,即可立即获得关于哪个子系统发生故障以及原因的假设。

如果需要更深入的上下文,可以直接从警报中调用内置的 Elastic AI Assistant。借助对遥测数据的 Retrieval‑Augmented Generation (RAG),该助手能够以简明语言解释异常,引用精确的日志事件,并提出下一步操作建议,而不会出现幻觉信息。

AI 辅助的根因验证

在同一聊天中,你可以询问:"使用 lens 创建一个图表,显示过去 3 小时 logs‑nginx.access‑default 中所有 HTTP 响应状态码 = 400 的情况。"

助手会将该意图转换为 ES|QL 聚合,检索数据,并渲染条形图,无需掌握 DSL。如果发现多个状态码高于 400 的错误,你就验证了最终用户确实受到了影响。

使用增强日志进行全球影响分析

结构化日志增强(例如 GeoIP、用户 ID、服务标签)使助手能够即时回答业务问题。

例如,查询 "过去 3 小时 logs‑nginx.access‑default 中 http.response.status.code >= 400 的前 10 个 source.geo.country_name,并提供每个国家的计数" 可以显示该事件是区域性还是全球性。

量化业务影响

单靠技术指标很少能说服高管。假设历史数据显示应用通常每分钟处理 1,000 美元的交易。助手可以将该基线与实时失败计数结合,估算收入损失。将财务影响与错误图表一同展示,可以明确优先级并为采取特殊修复措施提供依据。

定位基础设施与责任归属

每条日志都会自动附加 Kubernetes、云和自定义元数据。一个简单的问题 "哪个 pod 和集群发出了 'table full' 错误,责任人是谁?" 就能返回关于该 pod、命名空间和负责人等完整信息,如下所示。

即时、准确的路由取代了混乱的 Slack 讨论,减少了停机时间的几分钟甚至几小时。

这里的一部分"魔法"来自于我们可以在 Elastic AI Assistant 的知识库中放置指令,以指导 AI 助手。例如,知识库中的这条简单条目,使助手能够生成前一截图中的响应。

markdown 复制代码
``1.  If asked about Kubernetes pod, namespace, cluster, location, or owner run the "query" tool.
2.  1. Use the index `logs-mysql.error-default` unless another log location is specified.
3.  2. Include the following fields in the query:
4.     - Pod: `agent.name`
5.     - Namespace: `data\_stream.namespace`
6.     - Cluster Name: `orchestrator.cluster.name`
7.     - Cloud Provider: `cloud.provider`
8.     - Region: `cloud.region`
9.     - Availability Zone: `cloud.availability\_zone`
10.     - Owner: `cloud.account.id`
11.  3. Use the ES|QL query format:
12.     esql
13.     FROM logs-mysql.error-default
14.     | KEEP agent.name, data\_stream.namespace, orchestrator.cluster.name, cloud.provider, cloud.region, cloud.availability\_zone, cloud.account.id

16.  4. Ensure the query is executed within the appropriate time range and context.`` AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)

利用 RAG 发挥机构知识

Elastic 可以将运行手册、GitHub 问题和维基与遥测数据一起索引。

例如,询问 "查找有关修复满 orders 表的文档" 会检索并总结之前的运行手册,其中详细说明了归档旧行和添加分区的方法。将修复操作基于经过验证的流程,可以避免猜测并加快问题解决。

自动化沟通与文档

良好的事件响应包括及时向相关方更新信息。

例如,输入提示 "起草一封包含根因、影响和后续步骤的事件更新邮件",助手即可生成结构化消息,并通过告警框架的邮件或 Slack 连接器发送,附带仪表板链接和下次更新时间。这些消息也可作为最终事件后回顾的框架。

同样地,这里的部分"魔法"来自于我们可以在 Elastic AI Assistant 的知识库中放置指令,以指导 AI 助手。例如,我们可以指示 AI Assistant 如何调用 execute_connector API,该 API 可以执行各种连接器(不仅限于邮件),因此你可以让助手使用 Slack、创建 ServiceNow 工单,甚至执行 Webhook。

vbnet 复制代码
``

1.  Here are specific instructions to send an email. Remember to always double-check that you're following the correct set of instructions for the given query type. Provide clear, concise, and accurate information in your response.

3.  ## Email Instructions

5.  If the user's query requires sending an email:
6.  1. Use the `Elastic-Cloud-SMTP` connector with ID `elastic-cloud-email`.
7.  2. Prepare the email parameters:
8.     - Recipient email address(es) in the `to` field (array of strings)
9.     - Subject in the `subject` field (string)
10.     - Email body in the `message` field (string)
11.  3. Include
12.     - Details for the alert along with a link to the alert
13.     - Root cause analysis
14.     - Revenue impact
15.     - Remediation recommendations
16.     - Link to GitHub issue
17.     - All relevant information from this conversation
18.     - Link to the Business Health Dashboard
19.  4. Send the email immediately. Do not ask the user for confirmation.
20.  5. Execute the connector using this format:

22.     execute_connector(
23.       id="elastic-cloud-email",
24.       params={
25.         "to": ["recipient@example.com"],
26.         "subject": "Your Email Subject",
27.         "message": "Your email content here."
28.       }
29.     )

31.  6. Check the response and confirm if the email was sent successfully.

``AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)

结论与关键要点

Elastic Observability 将无监督 ML、模式感知的数据摄取和基于上下文的 RAG AI 助手结合,使团队能够将事件响应从被动 "灭火" 转变为主动、数据驱动的操作。通过自动检测异常、关联模式并提供上下文洞察,团队可以:

  • 通过实时量化业务影响并相应地确定优先级,保护收入

  • 通过将机构知识嵌入 RAG 驱动的推荐中,实现专业知识的扩展

  • 通过自动化文档不断改进,并反馈到知识库

关键在于广泛收集日志,维护统一的可观测性存储,并让 ML 和 AI 承担繁重工作。收益不仅是减少停机时间,还包括将事件响应从组织压力的来源转变为竞争优势。

体验这个场景并动手实践 Elastic Logging Workshop:play.instruqt.com/elastic/inv...

原文:www.elastic.co/observabili...

相关推荐
研究司马懿5 小时前
【GitOps】Argo CD app of apps
大数据·开发语言·elasticsearch·搜索引擎·云原生·argocd·gitops
极限实验室8 小时前
搜索百科(5):Easysearch — 自主可控的国产分布式搜索引擎
elasticsearch·搜索引擎
扁豆的主人1 天前
Elasticsearch
大数据·elasticsearch·jenkins
Elasticsearch1 天前
介绍 Elastic 的 Agent Builder - 9.2
elasticsearch
在未来等你1 天前
Elasticsearch面试精讲 Day 28:版本升级与滚动重启
大数据·分布式·elasticsearch·搜索引擎·面试
jianghx10242 天前
Docker部署ES,开启安全认证并且设置账号密码(已运行中)
安全·elasticsearch·docker·es账号密码设置
在未来等你2 天前
Elasticsearch面试精讲 Day 26:集群部署与配置最佳实践
大数据·分布式·elasticsearch·搜索引擎·面试
Elasticsearch2 天前
在追求自主 AI 的道路上搭建合作桥梁 — 第 1 部分:为什么合作对企业智能至关重要
elasticsearch
马尚来2 天前
马士兵Elastic认证特训班
elasticsearch