首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何设计 AI 驱动的 OPS Agent:技术架构探索

如何设计 AI 驱动的 OPS Agent:技术架构探索

原创
作者头像
行者深蓝
修改2025-08-27 17:11:05
修改2025-08-27 17:11:05
1560
举报

概述

目标读者:技术负责人 / 平台架构师 / SRE / 数据工程负责人undefined设计取向:平台无关(K8s/VM/Serverless/DB/网关皆可接入),以 MAPE‑K 闭环为核心,强调安全、可审计、可回滚低摩擦落地


0. 执行摘要(Executive Summary)

  • 愿景:将传统“脚本驱动运维”升级为“数据 + 知识 + 策略 驱动的 自适应 OPS Agent”,以最小化人工干预最大化可审计与可回滚为原则,实现从观测→分析→计划→执行→验证→学习的闭环。
  • 关键技术基座:PostgreSQL(+ TimescaleDB + AGE + pgvector)、OpenTelemetry → OpenObserve/Prom/Loki、GitOps(Argo CD / Flux)、策略引擎(OPA/Cedar)、事件总线(Redpanda/NATS)。
  • 落地策略:以 Case 状态机Plan DSL 统一各类运维动作;以 KPI Gate 严控风险;以 知识向量库沉淀复用经验;以 GitOps 做唯一事实源与回滚通道。

1. 设计原则(Design Tenets)

  1. 平台无关:统一抽象(Asset/App/BusinessService/Environment/Case/Plan/Observation…)。
  2. 安全优先:最小权限、门控审批、全链路审计、默认可回滚。
  3. 数据驱动:连续聚合/图谱/向量检索/LLM RAG 多模态协同决策。
  4. 渐进自治:Autonomy L0→L3(只建议→需要审批→条件自动→全自动)。
  5. 可组合:Sensor/Analyst/Planner/Executor/Librarian/Orchestrator 分角色可独立伸缩。
  6. 幂等与可恢复:事件溯源、步骤级断点续跑、冪等执行器、可观测化自身。

2. 参考架构(MAPE‑K → 角色映射)

2.1 角色分解

  • Sensor(Monitor):订阅/收集观测信号(OTel → OpenObserve/Prom/Loki/Timescale)。
  • Analyst(Analyze):分钟级聚合、Top‑K、图谱 k‑hop、相似案例召回(Timescale + AGE + pgvector)。
  • Planner(Plan):Runbook/变更计划 DSL,风险评估、回滚与门控生成。
  • Executor(Execute):适配器调用 GitOps/CI/CD/云/网关/DB 迁移器等;步骤级幂等。
  • Librarian(Knowledge):知识沉淀与向量化(文档/复盘/PR Diff/日志片段)。
  • Orchestrator:驱动 Case 状态机、事件总线协调、审计与合规。
  • Gatekeeper(Policy/GRC):策略评估(OPA/Cedar),审批编排,合规窗口(变更禁区/时间窗)。

2.2 事件总线与分工

  • obs.events:高吞吐观测事件(建议 Redpanda/Kafka)。
  • ops.*(cases/plans/exec/verifications/knowledge):低延迟命令/状态(建议 NATS JetStream)。推荐架构:“Redpanda 承载观测流量 + NATS 承载控制面事件”,兼顾吞吐与时延,简化隔离域与配额治理。

上传失败:Cannot read properties of undefined (reading 'url')


3. 核心领域模型(Resource‑Service‑Event)

3.1 关键实体(简化)

  • Asset:主机/容器/函数/数据库/队列/LB/证书/云资源/网段…
  • App:应用组件(版本/构建产物/依赖清单)。
  • BusinessService:业务域/能力(绑定 SLO/SLA)。
  • Environment:dev/test/stage/prod/region/zone/tenant。
  • Case:工作事项(上线/变更/维护/故障/实验)。
  • Plan/Runbook:计划/步骤/回滚/门控。
  • Observation:指标/日志/追踪/审计事件的统一抽象。
  • Incident:异常/告警归并体。
  • Experiment:金丝雀/渐进流量/A/B/容量试验。
  • Verification:门控/KPI 验证结果。
  • KnowledgeItem:知识条目(文本 + 向量 + 评分/标签)。

3.2 典型关系(AGE 图)

代码语言:bash
复制
App -depends_on-> Asset
BusinessService -served_by-> App
App -runs_in-> Environment
Case -targets-> {App|Asset|BusinessService}
Plan -implements-> Case
Observation -belongs_to-> {App|Asset|BusinessService}
Incident -correlates-> Observation
Experiment -scopes-> Environment
Verification -verifies-> {Plan|Experiment}

4. AI Agent Workflow

  1. 阈值机制

θ(分析置信度阈值):

结合统计显著性、图谱证据、向量相似度、LLM 自信度。

低于 θ → Case Parked(挂起,等待更多信号或时间窗)

高于 θ → 进入 Planner → Gatekeeper 流程

τ(风险阈值):

公式:τ = f(影响面 × 可回退性 × 复杂度 × 时间窗 × 合规)

高风险(≥ τ) → 强制 Gatekeeper 审批

低风险(< τ) → Planner 可直达 Executor(渐进自治 L2/L3)

  1. Parked Case 状态

状态机新增 Parked 阶段:

Case 挂起,等待:

新的观测事件触发

时间窗口开放(变更禁区解除)

一旦条件满足 → 重新入队 Orchestrator

  1. 故障安全分支

Executor 执行步骤失败时:

步骤超时 → 自动进入 Rollback 分支

门控不达标 → 自动回滚 + 降级预案

(FeatureFlag、熔断、旁路)

多次回滚失败 → 进入 Mitigate 模式

(旁路、限流、只读切换)

Mitigate 失败 → 强制人工接管通知


5. 数据与存储设计(PG/Timescale/AGE/pgvector)

5.1 关系表(节选 DDL)

代码语言:sql
复制
-- 资产与应用
CREATE TABLE assets (
  id BIGSERIAL PRIMARY KEY,
  kind TEXT NOT NULL,
  name TEXT NOT NULL,
  env TEXT NOT NULL,
  owner TEXT,
  labels JSONB DEFAULT '{}',
  spec JSONB,
  created_at TIMESTAMPTZ DEFAULT now(),
  UNIQUE(kind, name, env)
);

CREATE TABLE apps (
  id BIGSERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  version TEXT,
  build_id TEXT,
  deps JSONB,
  created_at TIMESTAMPTZ DEFAULT now(),
  UNIQUE(name, version)
);

CREATE TABLE business_services (
  id BIGSERIAL PRIMARY KEY,
  domain TEXT,
  name TEXT NOT NULL,
  slo JSONB,
  owner TEXT,
  labels JSONB DEFAULT '{}'
);

-- Case / Plan / Execution / Verification
CREATE TABLE cases (
  id BIGSERIAL PRIMARY KEY,
  type TEXT NOT NULL,           -- deploy/change/incident/experiment
  subject_type TEXT NOT NULL,   -- App/Asset/BusinessService
  subject_id BIGINT NOT NULL,
  severity INT,                 -- 0..5
  priority INT,                 -- 0..5
  status TEXT NOT NULL,         -- state machine state
  confidence NUMERIC,           -- 0..1
  risk_score NUMERIC,           -- 0..1
  dedupe_key TEXT,
  created_by TEXT,
  created_at TIMESTAMPTZ DEFAULT now(),
  updated_at TIMESTAMPTZ DEFAULT now(),
  tags TEXT[]
);

CREATE TABLE plans (
  id BIGSERIAL PRIMARY KEY,
  case_id BIGINT REFERENCES cases(id) ON DELETE CASCADE,
  dsl JSONB NOT NULL,           -- Runbook/Plan DSL 编译后 AST
  status TEXT NOT NULL,
  risk JSONB,                   -- 计算明细
  approvals JSONB,
  created_by TEXT,
  created_at TIMESTAMPTZ DEFAULT now()
);

CREATE TABLE executions (
  id BIGSERIAL PRIMARY KEY,
  plan_id BIGINT REFERENCES plans(id) ON DELETE CASCADE,
  step INT NOT NULL,
  adapter TEXT NOT NULL,        -- gitops/k8s/ff/gateway/dbmigrator
  command JSONB NOT NULL,       -- 具体操作参数
  status TEXT NOT NULL,         -- pending/running/success/fail
  retries INT DEFAULT 0,
  started_at TIMESTAMPTZ,
  finished_at TIMESTAMPTZ,
  audit JSONB                   -- 请求/响应摘要、指纹、签名
);

CREATE TABLE verifications (
  id BIGSERIAL PRIMARY KEY,
  case_id BIGINT REFERENCES cases(id) ON DELETE CASCADE,
  gate JSONB NOT NULL,          -- KPI Gate 定义
  window INTERVAL NOT NULL,
  result TEXT,                  -- pass/fail/timeout
  details JSONB,
  created_at TIMESTAMPTZ DEFAULT now()
);

5.2 观测数据(Timescale)

代码语言:sql
复制
-- 原始指标表作为 hypertable
CREATE TABLE http_metrics (
  ts TIMESTAMPTZ NOT NULL,
  app_id BIGINT NOT NULL,
  route TEXT,
  status_code INT,
  latency_ms DOUBLE PRECISION
);
SELECT create_hypertable('http_metrics', 'ts', if_not_exists => TRUE);

-- 1 分钟 P95 连续聚合
CREATE MATERIALIZED VIEW http_p95_1m
WITH (timescaledb.continuous) AS
SELECT time_bucket('1 minute', ts) AS bucket,
       app_id,
       percentile_cont(0.95) WITHIN GROUP (ORDER BY latency_ms) AS p95
FROM http_metrics
GROUP BY bucket, app_id;

-- Top‑K(最近 5 分钟)
CREATE MATERIALIZED VIEW app_p95_topk_5m
WITH (timescaledb.continuous) AS
SELECT bucket, app_id, p95,
       ROW_NUMBER() OVER (PARTITION BY bucket ORDER BY p95 DESC) AS rk
FROM http_p95_1m
WHERE bucket >= now() - INTERVAL '5 minutes';

5.3 图谱(AGE)与示例查询

代码语言:sql
复制
-- 创建图
SELECT create_graph('ops');

-- 载入节点/边(示例)
SELECT * FROM cypher('ops', $$
  CREATE (a:App {id:1, name:'payments'})-[:DEPENDS_ON]->(b:Asset {id:42, kind:'postgres'})
$$) as (v agtype);

-- k‑hop 依赖展开
SELECT * FROM cypher('ops', $$
 MATCH (a:App {name:'payments'})-[:DEPENDS_ON*1..3]->(n)
 RETURN n
$$) AS (n agtype);

5.4 向量检索(pgvector)

代码语言:sql
复制
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE kb_chunks (
  id BIGSERIAL PRIMARY KEY,
  title TEXT,
  doc_url TEXT,
  text TEXT,
  embedding vector(1536),
  tags TEXT[],
  rating INT DEFAULT 0
);
CREATE INDEX ON kb_chunks USING hnsw (embedding vector_cosine_ops);

-- 语义相似检索
SELECT id, title, doc_url
FROM kb_chunks
ORDER BY embedding <#> $1
LIMIT 10;

6. 事件总线:主题与消息模式

6.1 主题建议

  • obs.events(观测数据/派生事件,高吞吐,Redpanda):obs.events.{kind}.{subject}
  • ops.alerts(告警/异常,Redpanda→NATS 桥接):ops.alerts.{service}.{env}
  • ops.cases(Case 生命周期,NATS):ops.cases.{id}.{state}
  • ops.plans(计划创建/更新,NATS):ops.plans.{case_id}
  • ops.exec(步骤下发/回执,NATS):ops.exec.{plan_id}.{step}
  • ops.verifications(门控结果,NATS):ops.verifications.{case_id}
  • ops.knowledge(索引/召回/评分,NATS):ops.knowledge.events

6.2 事件示例(JSON Schema 摘要)

代码语言:json
复制
{
  "case_id": "C-202508-00123",
  "type": "incident",
  "subject": {"type": "App", "id": 1, "name": "payments"},
  "severity": 3,
  "priority": 2,
  "dedupe_key": "payments-5xx-spike",
  "status": "Analyze",
  "evidence": {
    "topk": [{"app_id":1, "p95": 1260}],
    "graph": {"k_hop": [42]},
    "similar": [{"kb_id": 991, "score": 0.83}]
  },
  "ts": "2025-08-27T07:00:00Z"
}

7. Plan DSL(变更/操作描述)

目标:统一执行模型(可审计/可回滚/可门控/可模拟),既能 GitOps,也能直连执行(应急,受控)。

代码语言:yaml
复制
apiVersion: ops/v1
kind: Runbook
metadata:
  name: rollback-payments-to-1.2.3
  labels:
    case: C-202508-00123
spec:
  strategy:
    mode: gitops          # gitops | direct
    autonomy: L2          # L0 提示, L1 需审批, L2 条件自动, L3 全自动
  risk:
    impact: medium
    recoverability: high
    complexity: low
    timeWindow: "22:00-06:00 Asia/Tokyo"
  steps:
    - name: bump-helm-values
      adapter: gitops
      with:
        repo: https://git/repo/payments-infra
        path: charts/payments/values.yaml
        changes:
          image.tag: 1.2.3
      rollback:
        changes:
          image.tag: 1.2.2
    - name: argo-sync-wait
      adapter: argocd
      with:
        app: payments
        timeout: 600s
  gates:
    - name: http-latency-p95
      type: timescale.query
      with:
        sql: |
          SELECT avg(p95) AS p95
          FROM http_p95_1m
          WHERE app_id = ${app_id}
            AND bucket >= now() - INTERVAL '5 minutes';
      assert: "p95 < 900"    # ms
  approvals:
    required: [team-payments-oncall]

8. 风险与策略(Risk & Policy)

8.1 风险评分(示例)

0..1 归一化:

代码语言:bash
复制
risk = w1*impact + w2*(1-recoverability) + w3*complexity + w4*time_window_penalty + w5*compliance_level
建议默认: w1=0.35, w2=0.25, w3=0.15, w4=0.15, w5=0.10
阈值 τ: ≤0.35 自动执行;(0.35,0.6] 需审批;>0.6 严禁自动。

8.2 策略评估(OPA 片段)

代码语言:rego
复制
package ops.autonomy

default allow = false

allow {
  input.plan.strategy.autonomy == "L2"
  input.risk_score <= 0.35
  time.hour(now) >= 22; time.hour(now) < 6
  not forbidden_window
}

forbidden_window {
  input.subject.env == "prod"
  weekday(now) == 5   # Friday
}

9. 决策算法(Analyze 阶段拼装)

  1. 时序:Timescale 连续聚合 + 变化点/异常检测(P95、错误率、队列滞留)。
  2. 图谱:AGE k‑hop 扩散,定位瓶颈团簇/关键路径(betweenness/degree)。
  3. 相似检索:pgvector 召回 Runbook/复盘;LLM 进行 RAG 总结并给出多候选方案。
  4. 方案排序score = α*evidence + β*success_rate + γ*(-risk)(历史成功率来自知识库元数据)。
  5. 自信度 θ:来自统计显著性/图谱证据权重/向量相似度/LLM 置信区间组合。

10. 执行与回滚(Executor)

  • GitOps 首选:PR → Review → Merge → Argo 同步;PR 附带 Plan DSL风险说明
  • 直连执行(应急):kubectl/feature‑flag/gateway/db-migrator;强制审批 + 双人签名 + 录审计;
  • 冪等:步骤指纹(参数哈希)+ 幂等键;失败可重放(退避策略)。
  • 审计:每步记录请求指纹/响应摘要/操作者/签名;
  • 回滚:DSL 声明式回滚;门控失败或超时自动进入回滚链。

11. 验证与闭环(Verify & Learn)

  • KPI Gate:P95、错误率、队列长度、丢包、SLO 预算等;
  • 渐进发布:金丝雀/灰度/AB;
  • 评估偏差:记录“模型建议 → 实际效果”的差异,反馈至知识库为下轮排序提供先验。

12. LLM 使用策略(RAG + 安全护栏)

  • 职责:摘要、方案生成、解释与对话;不直接执行
  • 输入:结构化证据(Top‑K、图谱结果、历史案例 Top‑N)。
  • 输出:Plan 草案(DSL),必须经 Gatekeeper 评估。
  • 护栏
    • 只允许生成白名单动作(Scale/Flag/Traffic/Helm‑value/DB‑migrate…)。
    • 所有变更经 OPA/Cedar审批策略 过滤;
    • 强制 Dry‑Run/Shadow PR 预览;
    • 私密数据脱敏与最小暴露(Prompt Redaction)。

13. 安全 & 合规

  • AuthN/Z:OIDC/MTLS,最小权限到适配器级别;
  • 密钥:KMS/SealedSecret,定期轮换;
  • 审计:事件溯源(NATS/Redpanda 保留)、步骤级审计入库;
  • 合规:变更时间窗、禁区、双人批准、电子签名(Sigstore/Git 签名)。

14. 高可用与弹性

  • PG/Timescale:Patroni/Raft 管理;WAL 归档至对象存储;
  • Redpanda:三副本/机架感知;
  • NATS JetStream:多副本 + Quorum;
  • OpenObserve:无状态 + 对象存储,冷热分层;
  • 水平伸缩:Sensor/Analyst/Planner/Executor/Librarian/Orchestrator 组件独立扩展。

15. 观测与治理(Ops of the Agent)

  • 自监控
    • 队列积压(ops.*、obs.events);
    • 计划成功率/回滚率/平均恢复时间(MTTR);
    • 门控误判率;
    • 知识库命中率与方案成功率相关性;
  • 配置治理:Plan DSL/Policy 版本化;影子评估(Shadow Mode)。

16. 渐进式落地(Phased Adoption)

  • Phase 0(观测基座):OTel Collector → OpenObserve/Timescale;资产/拓扑入库。
  • Phase 1(分析与知识):连续聚合/Top‑K、AGE k‑hop、pgvector 检索;ChatOps 只读建议。
  • Phase 2(计划与门控):Plan DSL + KPI Gate;GitOps 阻断式(必须人工 Merge)。
  • Phase 3(自治与回滚):L2 条件自动(低风险 + 夜间窗口);失败自动回滚;影子评估常态化。

提醒:每一 Phase 都产出可用价值,不以大改为前提,降低组织阻力。


17. 典型用例

  1. 紧急回滚:异常上升 → Case→ Plan(回滚)→ 审批 → GitOps PR→ Argo 同步 → KPI Gate 通过 → 关闭。
  2. 容量扩容:队列滞留 → Plan(HPA/副本)→ 时间窗策略放行 → 验证 QPS 与 P95 改善 → 知识库记录成功率。
  3. 数据库迁移:Plan(双写/校验/切换)+ 多阶段门控(延迟/一致性)→ 失败即旁路。

18. 与替代方案对比

  • 单纯告警 + Runbook:缺少图谱/向量证据与门控自动化;靠人执行,回滚与审计弱。
  • 纯 GitOps:变更可控,但缺少“何时/为何/如何”的自治决策与 KPI 验证闭环。
  • AIOps 黑盒平台:可视化足够,但难以与企业 Git/SLO/策略深度融合与二次开发。

本方案以 PG 全家桶 为核心数据底座 + 开源可观测 + GitOps,实现 证据 → 策略 → 动作 的透明化可控自治。


19. 附录

19.1 KPI Gate SQL(示例)

代码语言:sql
复制
WITH before AS (
  SELECT avg(p95) AS p95
  FROM http_p95_1m
  WHERE app_id=$1 AND bucket BETWEEN now()-interval '10 min' AND now()-interval '5 min'
), after AS (
  SELECT avg(p95) AS p95
  FROM http_p95_1m
  WHERE app_id=$1 AND bucket >= now()-interval '5 min'
)
SELECT (b.p95 - a.p95)/b.p95 AS improvement
FROM before b, after a;
-- 要求 improvement >= 0.1 即改善≥10%

19.2 ChatOps 提示词(节选)

代码语言:bash
复制
系统:你是 OPS Planner。仅输出 Plan DSL。白名单动作:Scale/Flag/Traffic/Helm/DBMigrate。
输入包含:TopK、Graph、SimilarCases。不得包含任何秘密或凭据。

19.3 直连执行适配器的幂等键

代码语言:bash
复制
idempotency_key = sha256(adapter + serialized_command + target + window)

20. 下一步(Action Items)

  • 决策并落地 消息总线双轨(Redpanda + NATS),完成主题与配额治理;
  • 固化 Plan DSL v0.1 语法与 Gate 模板库;
  • 建立 知识库 ETL(文档分片→嵌入→标签),标准化 Runbook/复盘模板;
  • 实施 Phase 0→1:连续聚合/图谱装填 + ChatOps 只读建议;
  • 选取 2–3 个 低风险用例 做 L2 条件自动试点,验证回滚链路与门控精准度。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
    • 0. 执行摘要(Executive Summary)
    • 1. 设计原则(Design Tenets)
    • 2. 参考架构(MAPE‑K → 角色映射)
      • 2.1 角色分解
      • 2.2 事件总线与分工
    • 3. 核心领域模型(Resource‑Service‑Event)
      • 3.1 关键实体(简化)
      • 3.2 典型关系(AGE 图)
    • 4. AI Agent Workflow
    • 5. 数据与存储设计(PG/Timescale/AGE/pgvector)
      • 5.1 关系表(节选 DDL)
      • 5.2 观测数据(Timescale)
      • 5.3 图谱(AGE)与示例查询
      • 5.4 向量检索(pgvector)
    • 6. 事件总线:主题与消息模式
      • 6.1 主题建议
      • 6.2 事件示例(JSON Schema 摘要)
    • 7. Plan DSL(变更/操作描述)
    • 8. 风险与策略(Risk & Policy)
      • 8.1 风险评分(示例)
      • 8.2 策略评估(OPA 片段)
    • 9. 决策算法(Analyze 阶段拼装)
    • 10. 执行与回滚(Executor)
    • 11. 验证与闭环(Verify & Learn)
    • 12. LLM 使用策略(RAG + 安全护栏)
    • 13. 安全 & 合规
    • 14. 高可用与弹性
    • 15. 观测与治理(Ops of the Agent)
    • 16. 渐进式落地(Phased Adoption)
    • 17. 典型用例
    • 18. 与替代方案对比
    • 19. 附录
      • 19.1 KPI Gate SQL(示例)
      • 19.2 ChatOps 提示词(节选)
      • 19.3 直连执行适配器的幂等键
    • 20. 下一步(Action Items)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档