前言

在数字化转型的浪潮下,系统规模的指数级增长、多层级架构的耦合性以及数据流的动态性,使得故障的快速定位与根因分析成为运维领域的核心挑战。传统的人工排查方法高度依赖专家经验,效率低下且难以应对海量数据与实时性需求。在此背景下,融合机器学习、知识图谱与因果推理的故障根因分析智能体应运而生,为智能化运维提供了解决方案。故障根因分析智能体通过整合多源异构数据(如日志、指标),结合时序分析与动态因果推理技术,构建多维故障关联图谱,实现从“症状感知”到“根因定位”的跨层级推理。

65cc85bb-8ec5-4350-bd89-cff124aa700e

本文基于开源LLMOps平台 Dify通过一个“从应用日志出现报错到实时资源指标分析,再到故障定位输出报告”的简单例子,展示故障根因分析智能体的工作过程。

工作流程:

收到告警信息后用户点击根因分析-->告警事件id发送至 webhook-->webhook将告警内容及其标签发送到 dify-->LLM使用“日志查询工作流”获取日志告警内容-->LLM使用“资源列表查询工作流”获取所在项目的所有资源信息-->LLM使用“实时指标查询工作流”获取实时资源指标-->分析故障原因,整理根因分析报告发送至钉钉机器人

流程图:

根因分析

对于不同资源的关联:

这里是通过标签(label)将日志资源和监控资源关联起来,所以对标签的定义很重要,在建设可观测平台的过程中需要保持标签的一致性,以下是在这次测试中定义的标签。

数据源类型 service_log Node_exporter MySQL_exporter
region 华南区域 华南区域 华南区域
zone 广州数据中心一区 广州数据中心一区 广州数据中心一区
project XX项目 XX项目 XX项目
env 测试环境 测试环境 测试环境
job service_log linux mysql
host_ip IP1 IP1 IP2
log_type 应用日志 × ×
service_name XX后端 × ×
mysql_name × × XX数据库
host_name × XX应用服务器 XX数据库服务器

当故障发生时,可以从日志中获取region、zone、project、env标签,后通过PromQL查询项目的资源列表,反之同样成立。

image-20250403115804896


1. 创建日志查询工作流

image-20250403182727609

  • 通过工作流可以查询告警的实时日志内容

2. 创建资源列表查询工作流

image-20250403182619324

  • 通过工作流可以查询所有资源列表,比如“查询该项目的所有主机信息”

3. 创建实时指标查询工作流

image-20250403183148955

  • 通过工作流查询当前资源信息,比如查询“服务器指标”则输出当前的CPU使用率、内存使用率、磁盘使用率、主机负载、文件句柄数、网卡流量等。

4. 创建钉钉输出工作流

image-20250403183507542

  • 用于发送根因分析报告到钉钉群聊

5. 创建根因分析 Agent

  • 提示词
# 角色
你是一名故障分析专家,将接收到的告警信息通过合理的使用工具分析故障原因,不要捏造数据

# 工作步骤
1. 对接收到的信息进行拆解,记录下标签
2. 使用 log_query 获取实时故障日志内容,values里为日志内容
3. 通过日志分析可能引起故障的原因
4. 使用 resource_list 工具查询这个项目下的相关资源,获取完整标签。
5. 使用 resource_query 获取需要的指标
6. 总结故障的原因
7. 使用 dingding 输出,以Markdown格式输出结果
 
# 排版要求:
1. 标题(h2大小)
分割线
2. 故障现象(h3大小):故障内容、故障分析
分割线
3. 资源检查(h3大小)
分割线
4. 故障原因(h3大小)
分割线
5. 恢复措施(h3大小)
分割线
6. 总结(h3大小)

image-20250403185412738


根因分析工作过程

  1. 故障发生,群聊收到故障告警信息,点击“根因分析”开始进入根因分析工作

    image-20250404143513806

  2. 点击根因分析后,Dify 故障根因分析Agent收到根因分析请求及其告警内容

    image-20250403191834770

  3. 通过 log_query 工作流获取到了告警实时日志内容

    image-20250403191926668

    image-20250403192230840

    LLM 在获取日志内容后进行推理分析,推理可能与MySQL资源有关

  4. 通过 resource_list 工作流获取到该项目所有MySQL资源信息以及完整标签

    image-20250403192019012

  5. 通过 resource_query 工作流获取 MySQL 实时资源指标

  6. 总结分析结果,并通过钉钉发送根因分析报告

    image-20250403192709415

  7. 报告输出

    image-20250404143600768

文章最后,本文案例也只是"先立靶子再打枪",在日常工作中遇到的故障问题千式百样,想让根因分析智能体足够“智能”,还需更加完善的提示词、更加全面的工作流以及更多维度的监控方式,根因分析智能体的建设是个长期且持续的过程。

文章作者: hzbb
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 运维小记
AIOps 自动化 AIOps
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝