Files
aiops-docs/AIOps_Architecture_Diagram_Explanation.md

282 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AIOps 架构图详解(实践落地路线)
本文是 `AIOps_Practical_Route_Architecture.png` 的配套说明,目标不是再讲一遍产品愿景,而是回答 3 个更实际的问题:
- 这张图是怎么推导出来的
- 图里的每一层到底在做什么
- 图中每个框和未来实现模块如何一一对应
![AIOps Practical Route Architecture](AIOps_Practical_Route_Architecture.png)
## 1. 这张图是怎么来的
这张图不是从技术栈出发画出来的,而是从 AIOps 要解决的实际链路倒推出来的。
### 1.1 从业务问题倒推
一个典型故障场景里,平台至少要回答下面几个问题:
1. 告警和事件从哪里进来,格式怎么统一。
2. 除了告警本身,还需要哪些上下文才能判断问题。
3. 多条重复或相关告警,怎么合并成一个可处理的 Incident。
4. 谁来做诊断、给出 RCA 和动作建议。
5. 建议出来以后,怎样保证执行是安全、可控、可审计的。
6. 处理完以后,经验如何沉淀,而不是下次还从头来一遍。
把这 6 个问题按顺序展开,就自然会得到 6 层:
- `Layer A`:先接数据
- `Layer B`:再补上下文
- `Layer C`:把事件变成 Incident 并推动流转
- `Layer D`:让 Agent 做诊断和建议
- `Layer E`:把动作放到可控执行框架里
- `Layer F`:做复盘、评估和知识更新
所以,这张图本质上是一个“从故障进入平台到经验回流平台”的闭环图,而不是单纯的服务清单图。
## 2. 读这张图的正确方式
### 2.1 先看主链路
最推荐的阅读顺序是自下而上:
`Observability Data` -> `NormalizedEvent` -> `IncidentContext` -> `Incident` -> `RCA Result` -> `Execution Results` -> `Knowledge Update`
这条链路对应的是“问题进入平台并被处理掉”的全过程。
### 2.2 再看两种流
- 蓝色实线:主控制流 / API 调用 / 执行 / 审计
- 红色虚线反馈流表示复盘之后对知识库、Prompt、工作流和指标的持续优化
### 2.3 最后看左右分工
- 左侧和中间:偏主处理链路,解决“当前这个故障怎么处理”
- 右侧:偏复盘和优化,解决“以后类似问题怎么更快处理”
- 顶部:偏执行治理,解决“能不能安全执行”
## 3. 一一对应说明
### 3.1 外部输入
### Prometheus / Loki-ELK / CMDB / Changes
- 这些不是平台内部模块,而是平台要接入的数据源。
- 它们共同回答一个问题:平台拿什么来感知故障。
- 在 MVP 阶段,不必一次性接全,优先级通常是 `Prometheus -> Logs -> CMDB -> Changes`
### 3.2 Layer A: Perception
### 这一层解决什么问题
- 把不同来源的告警、事件、变更信号接进来。
- 把不同格式的数据统一成平台内部可消费的标准事件。
### 图中模块
- `collector-adapter`
- `alert-webhook`
- `event-normalizer`
### 输入 / 输出
- 输入监控告警、日志事件、CMDB 信息、变更记录
- 输出:`NormalizedEvent`
### 为什么必须有这一层
- 如果没有统一事件格式后面的去重、关联、AI 诊断都会高度依赖每个数据源自己的字段,系统很难扩展。
### 3.3 Layer B: Data Governance
### 这一层解决什么问题
- 只看告警标题通常不够,需要补齐服务归属、依赖关系、变更记录和历史相似事件。
- 这层的目标是把“告警”变成“带上下文的事件”。
### 图中模块
- `context-enricher`
- `topology-resolver`
- `change-correlator`
### 输入 / 输出
- 输入:`NormalizedEvent`
- 输出:`IncidentContext`
### 为什么必须有这一层
- AI 诊断不是只靠一句告警文案,而是要看时间窗口、依赖拓扑、近期变更和历史案例。
- 这一层是后面 RCA 质量的基础。
### 3.4 Layer C: Event Orchestration
### 这一层解决什么问题
- 多条重复告警不能让人逐条处理,需要合并成一个 Incident。
- Incident 形成后,还要有状态流转、升级通知和时间线记录。
### 图中模块
- `Incident Service`
- `Deduplication & Correlation Engine`
- `Escalation Engine`
- `Timeline Service`
### 实现映射
- `Incident Service` 对应 `incident-service`
- `Deduplication & Correlation Engine` 可以落成 `dedupe-group-engine` + 关联规则
- `Escalation Engine` 对应 `escalation-engine`
- `Timeline Service` 对应 `timeline-service`
### 输入 / 输出
- 输入:`IncidentContext`
- 输出:处于不同状态的 `Incident`
### 状态机为什么重要
- 图里的 `new -> triaged -> diagnosing -> remediating -> resolved/closed` 不是装饰,而是平台主流程。
- 没有状态机,就很难做 SLA、升级、审批和复盘闭环。
### 3.5 Layer D: Intelligent Decision
### 这一层解决什么问题
- 当 Incident 进入 `diagnosing` 状态后,需要 Agent 去做证据收集、RAG 检索、诊断判断和动作建议。
### 图中模块
- `Custom Gateway`
- `Dify Platform`
- `Agent Brain (Dify)`
### 为什么同时有 Custom Gateway 和 Dify
- `Dify Platform` 负责工作流编排、模型调用、RAG 检索和多轮对话。
- `Custom Gateway` 负责把平台和 Dify 解耦,承担结果标准化、策略封装、审计打点和兜底逻辑。
- 换句话说Dify 负责“智能”Custom Gateway 负责“平台接入与控制”。
### 输入 / 输出
- 输入:`Incident` + `IncidentContext`
- 输出:`RCA Result`
### RCA Result 至少要包含什么
- 结论
- 置信度
- 证据链
- 影响范围
- 建议动作
### 3.6 Layer E: Action Execution with Guardrails
### 这一层解决什么问题
- AI 给出建议不等于可以直接执行。
- 执行必须经过审批、策略校验、风险控制和审计留痕。
### 图中模块
- `action-registry`
- `approval-service`
- `Policy Engine`
- `audit-service`
- `Approval Gateway`
- `Execution Control with Policy Gateway`
- `Executors`
### 实现映射
- `Approval Gateway` 可以落成 `approval-service`
- `Execution Control with Policy Gateway` 可以落成 `execution-gateway` + `policy-engine`
- `Executors` 对接 Ansible、K8s API、脚本引擎等真实执行器
### 为什么必须单独画一层
- 因为“诊断正确”和“可以安全执行”是两个问题。
- 这一层存在的意义,就是避免 Agent 直接碰生产资源。
### 3.7 Layer F: Learning Loop
### 这一层解决什么问题
- 事件处理结束后,要把经验沉淀下来,变成下次更快的处理能力。
### 图中模块
- `postmortem-service`
- `Knowledge Feedback`
- `kpi-dashboard`
- `Assessment Metrics`
- `Optimization Outputs`
### 实现映射
- `Knowledge Feedback` 可以落成 `knowledge-feedback-worker`
- `Assessment Metrics``kpi-dashboard` 统计输出
- `Optimization Outputs` 体现为 Runbook 更新、Prompt/Workflow 优化、知识库整理
### 为什么不把它并到前面
- 前面几层解决的是“这次故障怎么处理”。
- 这一层解决的是“以后类似故障怎么处理得更快、更准、更稳”。
- 所以它是学习闭环,不是主处理链路的一部分。
## 4. 图中几个最容易困惑的点
### 4.1 为什么 Layer B 和 Layer C 都有“关联”含义
- `Layer B` 的关联更偏上下文补齐,比如拓扑、变更、历史事件。
- `Layer C` 的关联更偏事件处理比如去重、分组、归并、Incident 归属。
- 一个是“看懂事件背景”,一个是“把事件组织成可处理对象”。
### 4.2 为什么 Dify 不直接调用执行器
- 因为这样会让 AI 和生产执行强耦合,风险很高。
- 正确做法是Dify 只输出建议,平台统一做审批、策略和执行控制。
### 4.3 为什么学习闭环在最右侧
- 因为它不是每一步主链路都必经的同步流程,而是事件关闭后的回流与优化过程。
- 右侧单独成区,视觉上更容易看出“处理”和“学习”是两个阶段。
## 5. 用一个例子把图串起来
假设 `order-service` 延迟突然升高,这张图里的处理过程可以理解成:
1. Prometheus 触发高延迟告警,进入 `Layer A`
2. `event-normalizer` 把告警转成统一 `NormalizedEvent`
3. `Layer B` 补齐服务归属、依赖拓扑、最近变更和历史相似事件,形成 `IncidentContext`
4. `Layer C` 发现同类告警很多,先去重归并,再生成一个 Incident并把状态推进到 `diagnosing`
5. `Layer D` 通过 `Custom Gateway` 调用 `Agent Brain (Dify)`,综合 metrics、logs、changes 和 SOP 输出 `RCA Result`
6. 如果建议动作是低风险扩容,就进入 `Layer E` 的策略和执行控制;高风险动作则进入审批流。
7. 执行结果和关键操作写入时间线与审计。
8. Incident 关闭后,`Layer F` 做 postmortem更新知识库统计是否真的缩短了 MTTR、RCA 是否准确。
如果你按这个例子回头看图,基本就能理解每条箭头为什么存在。
## 6. 这张图不是部署图,而是逻辑图
这个点很重要。
- 图里的一个框,不一定等于一个独立服务。
- MVP 阶段,多个模块可以合并在一个后端服务里实现。
- 例如 `Incident Service``Timeline Service``Escalation Engine` 可以先合并。
- `Custom Gateway`、工具代理和执行网关,也可以先做成一个平台后端中的独立模块。
所以,读这张图时要把它理解成“职责分层图 + 关键能力图”,而不是“最终微服务拆分图”。
## 7. 你可以怎么对别人解释这张图
如果只用 1 分钟介绍,可以直接这么说:
> 这是一张 AIOps 实践路线的闭环架构图。底层先把 Prometheus、日志、CMDB 和变更系统的信号统一成标准事件;中间层补齐上下文并把多条告警收敛成 Incident然后通过 Dify 做诊断、RAG 检索和 RCA 输出再通过审批、策略和执行网关把建议动作变成受控执行最后把复盘结果沉淀为知识库、Runbook 和优化指标,形成持续学习闭环。
如果要更简短,可以记一句话:
> 这张图讲的是“怎么把告警变成可控处置,再把处置经验变成下一次更快的处置能力”。