作者:来自 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写代码
利用 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写代码
结论与关键要点
Elastic Observability 将无监督 ML、模式感知的数据摄取和基于上下文的 RAG AI 助手结合,使团队能够将事件响应从被动 "灭火" 转变为主动、数据驱动的操作。通过自动检测异常、关联模式并提供上下文洞察,团队可以:
-
通过实时量化业务影响并相应地确定优先级,保护收入
-
通过将机构知识嵌入 RAG 驱动的推荐中,实现专业知识的扩展
-
通过自动化文档不断改进,并反馈到知识库
关键在于广泛收集日志,维护统一的可观测性存储,并让 ML 和 AI 承担繁重工作。收益不仅是减少停机时间,还包括将事件响应从组织压力的来源转变为竞争优势。
体验这个场景并动手实践 Elastic Logging Workshop:play.instruqt.com/elastic/inv...