Prometheus 监控指标体系设计

基于 OpenClaw + Claude Code 的端到端研发自动化系统 - 全链路监控埋点方案

覆盖需求分析 → PRD 设计 → 技术方案 → API 设计 → AI Coding → 单元测试 → 集成测试 → CI/CD → K8s 部署 → UI 自动化验收全流程

📑 目录导航

1. 监控体系概述

🎯 设计目标

  • 全链路可观测性: 覆盖从需求到部署的完整研发流程,实现端到端追踪
  • 多维度指标采集: 包含业务指标、性能指标、资源指标、质量指标
  • 实时告警能力: 基于 PromQL 的灵活告警规则,支持分级告警策略
  • 人机协同监控: 支持人工干预节点的监控与审计追踪
  • AI Agent 专项监控: 针对 LLM 调用、Token 消耗、推理延迟的专项指标

核心监控维度

业务维度
研发流程效率指标
各阶段耗时、转化率、阻塞率、人机协同介入频率、自动化成功率
性能维度
AI 推理性能指标
LLM API 延迟、Token 生成速率、并发请求数、缓存命中率
质量维度
代码质量指标
单元测试覆盖率、代码审查通过率、缺陷密度、技术债务指数
资源维度
基础设施指标
CPU/内存使用率、容器健康状态、K8s Pod 状态、网络 IO

2. 整体架构设计

监控数据流架构

Agents 层 需求/PRD/技术/API/
Coding/Test/Deploy
Prometheus Client 指标采集 SDK
(Python/NodeJS/Go)
/metrics 端点 HTTP Exposition
Prometheus Format
Prometheus Server 时序数据存储
PromQL 查询
Grafana 可视化仪表盘
实时监控
Alertmanager 告警路由
通知分发

监控层级划分

层级 监控对象 关键指标类型 采集频率
L1 - Agent 应用层 各研发角色 Agents 任务执行指标、LLM 调用指标、业务转化指标 实时 (15s)
L2 - 服务层 Jenkins/Docker/K8s CI/CD 流水线指标、容器指标、集群指标 实时 (15s)
L3 - 基础设施层 Node/Pod/Network CPU/内存/磁盘/网络 IO 高频 (5s)
L4 - 业务层 研发流程效率 阶段耗时、成功率、质量评分 中频 (1min)

3. Agent 角色监控指标

3.1 需求分析 Agent (RequirementAgent)

Counter
req_agent_tasks_total
需求分析任务总数(按状态分类:received/analyzing/completed/failed)
Labels: status project_id priority
Histogram
req_agent_task_duration_seconds
单个需求分析任务耗时分布(从接收到输出 PRD 初稿)
Labels: complexity_level outcome
Gauge
req_agent_llm_tokens_total
需求分析过程消耗的 Token 总数(input + output)
Labels: token_type model_name
Gauge
req_agent_stakeholder_interventions
需要人工介入澄清的需求数量(人机协同指标)
Labels: intervention_type resolution_status

3.2 PRD 设计 Agent (PRDAgent)

Counter
prd_agent_documents_generated_total
生成的 PRD 文档总数(按版本迭代计数)
Labels: version approval_status project_id
Histogram
prd_agent_review_cycle_duration_seconds
PRD 评审周期耗时(从初稿到最终批准)
Labels: review_rounds change_count
Gauge
prd_agent_requirement_coverage
PRD 对原始需求的覆盖率百分比(通过语义相似度计算)
Labels: requirement_category
Counter
prd_agent_revision_requests_total
PRD 修订请求次数(反映文档质量)
Labels: revision_reason requester_role

3.3 技术方案设计 Agent (ArchitectureAgent)

Counter
arch_agent_designs_created_total
创建的技术方案总数(后端 + 前端)
Labels: design_type complexity_score
Gauge
arch_agent_component_count
设计方案中的组件/模块数量
Labels: component_type layer
Histogram
arch_agent_api_definition_latency_seconds
API 接口定义生成的延迟分布
Labels: api_count specification_format
Gauge
arch_agent_technical_debt_score
技术方案的技术债务评分(0-100,越低越好)
Labels: debt_category

3.4 AI Coding Agent (CodingAgent)

Counter
coding_agent_code_lines_generated_total
生成的代码总行数(按语言分类)
Labels: language file_type project_id
Histogram
coding_agent_function_generation_duration_seconds
单个函数/方法生成的耗时分布
Labels: complexity lines_of_code
Gauge
coding_agent_llm_inference_latency_seconds
Claude Code API 推理延迟(首次 Token 时间 + 总生成时间)
Labels: model endpoint streaming
Counter
coding_agent_code_review_iterations_total
代码审查迭代次数(反映一次通过率)
Labels: review_outcome issue_severity
Gauge
coding_agent_context_window_utilization
LLM 上下文窗口利用率(已用 tokens / 最大 tokens)
Labels: task_type

3.5 测试 Agent (TestAgent)

Counter
test_agent_test_cases_generated_total
生成的测试用例总数(单元/集成/E2E)
Labels: test_type coverage_area
Gauge
test_agent_code_coverage_percent
代码覆盖率百分比(行覆盖/分支覆盖)
Labels: coverage_type module
Histogram
test_agent_execution_duration_seconds
测试套件执行耗时分布
Labels: test_suite parallel_workers
Counter
test_agent_defects_detected_total
检测到的缺陷总数(按严重程度分类)
Labels: severity detection_stage status
Gauge
test_agent_flaky_test_rate
不稳定测试的比例(偶尔失败/总测试数)
Labels: test_category

3.6 部署 Agent (DeployAgent)

Counter
deploy_agent_deployments_total
部署总次数(按环境分类:dev/staging/prod)
Labels: environment deployment_strategy outcome
Histogram
deploy_agent_pipeline_duration_seconds
CI/CD 流水线总耗时分布(从 commit 到 deploy)
Labels: pipeline_stage artifact_size_mb
Gauge
deploy_agent_k8s_pod_health
Kubernetes Pod 健康状态(1=Ready, 0=Not Ready)
Labels: pod_name namespace deployment
Counter
deploy_agent_rollbacks_total
部署回滚次数(反映部署质量)
Labels: rollback_reason time_to_rollback
Gauge
deploy_agent_container_resource_utilization
容器资源利用率(CPU/内存请求 vs 实际使用)
Labels: resource_type container_name

4. 服务层监控指标

4.1 Jenkins CI/CD 监控指标

Counter
jenkins_builds_total
Jenkins 构建总次数(按结果分类)
Labels: job_name result branch
Gauge
jenkins_build_queue_length
当前构建队列长度(等待执行的构建数)
Labels: node_label
Histogram
jenkins_build_duration_seconds
单次构建耗时分布(按阶段细分)
Labels: job_name stage outcome
Gauge
jenkins_executor_available
可用的 Jenkins Executor 数量
Labels: node_name executor_type

4.2 Docker 容器监控指标

Gauge
container_cpu_usage_percentage
容器 CPU 使用率百分比
Labels: container_name image host
Gauge
container_memory_usage_bytes
容器内存使用量(字节)
Labels: container_name memory_limit
Counter
container_network_receive_bytes_total
容器网络接收字节总数
Labels: container_name interface
Gauge
container_health_check_status
容器健康检查状态(1=healthy, 0=unhealthy)
Labels: container_name check_name

4.3 Kubernetes/KubeSphere 监控指标

Gauge
kube_pod_status_phase
Pod 当前状态阶段(Pending/Running/Succeeded/Failed/Unknown)
Labels: pod namespace phase
Gauge
kube_deployment_status_replicas_available
Deployment 可用的副本数
Labels: deployment namespace
Gauge
kube_node_status_condition
Node 状态条件(Ready/MemoryPressure/DiskPressure 等)
Labels: node condition status
Histogram
kube_pod_container_status_restart_reason
容器重启原因统计
Labels: pod container reason
Gauge
kubesphere_workspace_resource_quota_usage
KubeSphere 工作空间资源配额使用率
Labels: workspace resource_type

4.4 通用服务指标 (RED 方法)

🔴 RED 方法核心指标

  • Rate (请求速率): service_requests_total{service, endpoint, method} - 每秒请求数
  • Errors (错误率): service_errors_total{service, error_type} - 错误请求占比
  • Duration (延迟): service_request_duration_seconds{service, endpoint, quantile} - 请求延迟分布 (P50/P90/P99)

5. 告警规则设计

5.1 Agent 执行异常告警

🚨 Agent 任务失败率过高

ALERT: AgentHighFailureRate
IF: sum(rate(req_agent_tasks_total{status="failed"}[5m])) / sum(rate(req_agent_tasks_total[5m])) > 0.1
FOR: 5m
LABELS: {severity="warning", team="ai-agents"}
ANNOTATIONS:
summary: "Agent 任务失败率超过 10%"
description: "过去 5 分钟内 {{ $value | humanizePercentage }} 的任务执行失败"

🚨 LLM API 延迟异常

ALERT: HighLLMLatency
IF: histogram_quantile(0.95, rate(coding_agent_llm_inference_latency_seconds_bucket[5m])) > 30
FOR: 10m
LABELS: {severity="critical", team="platform"}
ANNOTATIONS:
summary: "LLM API P95 延迟超过 30 秒"
description: "当前 P95 延迟为 {{ $value }} 秒,严重影响编码效率"

🚨 Token 消耗异常

ALERT: AbnormalTokenConsumption
IF: sum(rate(coding_agent_llm_tokens_total[1h])) > 1000000
FOR: 1h
LABELS: {severity="warning", team="finance"}
ANNOTATIONS:
summary: "小时级 Token 消耗超过 100 万"
description: "过去 1 小时消耗 {{ $value }} tokens,可能产生高额费用"

5.2 CI/CD 流水线告警

🚨 构建失败率过高

ALERT: HighBuildFailureRate
IF: sum(rate(jenkins_builds_total{result="FAILURE"}[30m])) / sum(rate(jenkins_builds_total[30m])) > 0.2
FOR: 30m
LABELS: {severity="critical", team="devops"}
ANNOTATIONS:
summary: "Jenkins 构建失败率超过 20%"
description: "过去 30 分钟失败率为 {{ $value | humanizePercentage }}"

🚨 部署回滚频繁

ALERT: FrequentDeploymentRollbacks
IF: increase(deploy_agent_rollbacks_total[1h]) > 3
FOR: 1h
LABELS: {severity="critical", team="release"}
ANNOTATIONS:
summary: "1 小时内发生多次部署回滚"
description: "过去 1 小时回滚 {{ $value }} 次,部署质量需关注"

5.3 基础设施告警

🚨 Pod 持续崩溃重启

ALERT: PodCrashLooping
IF: increase(kube_pod_container_status_restarts_total[1h]) > 5
FOR: 1h
LABELS: {severity="critical", team="platform"}
ANNOTATIONS:
summary: "Pod 进入崩溃循环"
description: "Pod {{ $labels.pod }} 在 1 小时内重启 {{ $value }} 次"

🚨 节点资源耗尽

ALERT: NodeResourceExhausted
IF: (1 - sum(kube_node_status_condition{condition="Ready", status="true"}) / count(kube_node_status_condition{condition="Ready"})) > 0.2
FOR: 5m
LABELS: {severity="critical", team="infra"}
ANNOTATIONS:
summary: "超过 20% 的节点不可用"
description: "集群健康状况恶化,请立即检查"

5.4 质量门禁告警

🚨 代码覆盖率下降

ALERT: CodeCoverageDrop
IF: test_agent_code_coverage_percent{coverage_type="branch"} < 80
FOR: 1d
LABELS: {severity="warning", team="quality"}
ANNOTATIONS:
summary: "分支覆盖率低于 80%"
description: "当前分支覆盖率为 {{ $value }}%,未达到质量门禁"

6. Grafana 仪表盘设计

6.1 研发流程全景仪表盘

📊 Dashboard: R&D Pipeline Overview

用途: 管理层视角,展示端到端研发流程的整体健康度和效率

  • Panel 1: 各阶段任务漏斗图(需求→PRD→设计→编码→测试→部署)
  • Panel 2: 平均阶段耗时趋势图(按周聚合)
  • Panel 3: 自动化成功率 vs 人工介入率
  • Panel 4: 本周交付特性数量 & 部署频率
  • Panel 5: 缺陷发现/修复率趋势
  • Panel 6: 团队产能热力图(按 Agent 角色)

6.2 AI Agent 性能仪表盘

🤖 Dashboard: AI Agent Performance

用途: AI 工程师视角,监控各 Agent 的运行状态和 LLM 使用情况

  • Panel 1: 各 Agent 任务执行成功率(实时)
  • Panel 2: LLM Token 消耗 Top10(按 Agent/项目)
  • Panel 3: 推理延迟 P50/P90/P99 对比
  • Panel 4: 上下文窗口利用率分布
  • Panel 5: 代码生成质量指标(一次通过率/审查迭代次数)
  • Panel 6: 人机协同介入事件时间线

6.3 CI/CD 流水线仪表盘

🔄 Dashboard: CI/CD Pipeline Health

用途: DevOps 团队视角,监控构建/测试/部署流水线

  • Panel 1: 构建成功率趋势(按项目/分支)
  • Panel 2: 流水线各阶段耗时分解(瀑布图)
  • Panel 3: 构建队列长度 & Executor 利用率
  • Panel 4: 部署频率 & 前置时间(DORA 指标)
  • Panel 5: K8s Pod 健康状态矩阵
  • Panel 6: 回滚事件时间线 & 原因分析

6.4 资源成本仪表盘

💰 Dashboard: Resource & Cost Optimization

用途: 财务/运营视角,监控资源使用和成本优化

  • Panel 1: LLM API 成本趋势(按模型/Agent)
  • Panel 2: K8s 集群资源利用率(CPU/内存/存储)
  • Panel 3: 容器实例数量 & 自动扩缩容事件
  • Panel 4: 单位特性开发成本(元/特性点)
  • Panel 5: 资源闲置检测(低利用率实例)
  • Panel 6: 成本预测(基于当前消耗速率)

7. 埋点实现方案

7.1 Python Agent 埋点示例

🐍 Prometheus Python Client 集成

依赖安装: pip install prometheus-client

核心代码结构:

  • 使用 Counter 记录任务执行次数
  • 使用 Histogram 记录耗时分布
  • 使用 Gauge 记录实时状态
  • 使用 Summary 记录分位数统计
  • 通过 @monitor_task 装饰器统一埋点
  • 暴露 /metrics HTTP 端点供 Prometheus 抓取

7.2 NodeJS Agent 埋点示例

🟨 Prometheus NodeJS Client 集成

依赖安装: npm install prom-client

核心代码结构:

  • 使用 prom-client 库定义指标
  • 通过 Express middleware 暴露 /metrics 端点
  • 使用 async_hooks 追踪异步任务上下文
  • 集成 opentelemetry 实现分布式追踪

7.3 Jenkins Pipeline 埋点

🏗️ Jenkins Prometheus Plugin

插件安装: Prometheus Metrics Plugin

配置要点:

  • 启用 Default Job Collector 自动采集构建指标
  • 配置 Custom Metrics 采集业务特定指标
  • 在 Pipeline script 中使用 prometheus.gauge() 自定义指标
  • 暴露 /prometheus 端点(默认端口 8080)

7.4 Kubernetes 监控集成

☸️ K8s Native Monitoring

核心组件:

  • kube-state-metrics: 采集 K8s 对象状态指标
  • node-exporter: 采集节点硬件/OS 指标
  • cAdvisor: 采集容器资源使用指标
  • Prometheus Operator: 自动化部署和管理 Prometheus 实例
  • ServiceMonitor CRD: 声明式配置服务发现

7.5 最佳实践建议

✅ 监控埋点最佳实践

  • 指标命名规范: 使用 <service>_<feature>_<metric_type> 格式,单位明确(seconds/bytes)
  • Label 基数控制: 避免高基数 Label(如 user_id),防止内存爆炸
  • 直方图 Bucket: 根据实际延迟分布设置合理的 bucket 边界
  • 指标过期策略: 使用 recording rules 预计算常用查询,降低查询负载
  • 健康检查端点: 同时暴露 /health/ready 端点
  • 日志关联: 在指标中加入 trace_id,便于与日志系统联动排查