AIOps(一):基于 Prometheus MCP + WorkBuddy 构建 AI 智能运维

文章来源声明: 原文作者:JasonPan; 来源站点:掘金; 原文链接:https://juejin.cn/post/7700054147283157028; 本文基于上述来源整理/加工,觅优补充点评,仅供技术学习交流。版权归原作者所有。
觅优短评

给出可复制的 Compose 配置、MCP 连接 JSON 与专家提示词,搭建门槛低;适合运维与 SRE 团队快速验证 MCP 在监控巡检场景的落地价值。

AIOps(一):基于 Prometheus MCP + WorkBuddy 构建 AI 智能运维 -------------------------------------------------

本文基于 Linux 监控场景,使用 Docker Compose 部署 Prometheus、Node Exporter 和 Prometheus MCP Server,接入 WorkBuddy,实现自然语言查询监控指标,并自动生成 HTML 可视化巡检报告。

AIOps 智能运维巡检报告效果

10-dashboard-overview.png

一、整体架构

WorkBuddy + Prometheus MCP 架构

WorkBuddy与Prometheus智能运维架构.png

组件主要职责
**Node Exporter**暴露 Linux CPU、内存、磁盘、网络与负载指标
**Prometheus**抓取与保存指标,通过 PromQL 提供查询
**Prometheus MCP Server**将 Prometheus API 封装成 AI 可调用的 MCP 工具
**WorkBuddy**理解自然语言、调用工具、分析数据并生成 HTML

MCP(Model Context Protocol,模型上下文协议): 为 AI 应用提供标准化的外部工具调用方式。在本方案中,数据采集由 Node Exporter 与 Prometheus 完成;WorkBuddy 通过 MCP Server 查询已采集的数据并生成报告。

二、Docker Compose 部署:3 个容器

前置条件:一台已安装 Docker Engine / Docker Compose V2 的 Linux 云服务器,以及安装了 WorkBuddy 的本地电脑。以下统一使用示例公网 IP 203.0.113.10(文档保留地址,实际部署时替换为服务器公网 IP)。

2.1 创建 Prometheus 抓取配置

在 Linux 服务器203.0.113.10执行:

mkdir -p ~/aiops-prometheus && cd ~/aiops-prometheus
vi prometheus.yml

将以下内容保存到 prometheus.yml:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']

  - job_name: node
    static_configs:
      - targets: ['node-exporter:9100']
        labels:
          instance: '203.0.113.10'

其中,node-exporter:9100 是 Docker 内部访问地址,instance 用作监控实例标识。

2.2 创建 Compose 文件

vi compose.yaml

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    ports:
      - '19090:9090'
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prometheus-data:/prometheus

  node-exporter:
    image: quay.io/prometheus/node-exporter:latest
    container_name: node-exporter
    restart: unless-stopped
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro,rslave
    command:
      - --path.procfs=/host/proc
      - --path.sysfs=/host/sys
      - --path.rootfs=/rootfs
    expose:
      - '9100'

  prometheus-mcp-server:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/tjhop/prometheus-mcp-server:latest
    container_name: prometheus-mcp-server
    restart: unless-stopped
    depends_on:
      - prometheus
    ports:
      - '8080:8080'
    command:
      - --prometheus.url=http://prometheus:9090
      - --mcp.transport=http
      - --web.listen-address=:8080

volumes:
  prometheus-data:

该配置共启动 3 个容器:Prometheus 对外使用 19090,MCP Server 对外使用 8080,Node Exporter 通过 Docker 内部网络供 Prometheus 采集。Prometheus 数据保存在持久化数据卷中。

云服务器放行 TCP 8080 和 19090:阿里云轻量应用服务器在防火墙中配置,ECS 使用安全组;建议仅允许可信来源 IP 访问,生产环境还应配置 HTTPS 与身份认证。

2.3 启动与验证

docker compose up -d
docker compose ps
curl -sG http://127.0.0.1:19090/api/v1/query --data-urlencode 'query=up'

确认三个容器均为 Up,并且查询结果中 job="prometheus" 与 job="node" 的值均为 1,即表示指标采集链路可用。

三、WorkBuddy 接入 Prometheus MCP

打开 专家·技能·连接器 → 连接器 → 自定义连接器 → 添加 MCP。

进入连接器页面

06-connector-entry.png添加自定义 MCP

07-add-mcp.png填入以下 JSON,地址替换为实际云服务器公网 IP:

{
  "mcpServers": {
    "prometheus-mcp": {
      "type": "http",
      "url": "http://203.0.113.10:8080/mcp",
      "headers": {
        "Authorization": "Bearer notoken"
      }
    }
  }
}


填写 MCP 连接配置保存并确认信任后,展开 MCP 工具列表:

image.pngPrometheus MCP 工具加载成功

09-mcp-tools.png保存并信任连接器后,展开工具列表。本次实测加载了 28 个工具,包含 query、range_query、list_targets 等,实际数量取决于版本与配置。

四、创建 AIOps 可视化巡检专家

进入 专家·技能·连接器 → 专家 → 我的专家 → 创建专家,并关联 prometheus-mcp。

我的专家

03-my-experts.png创建专家

04-create-expert.png以下是可直接复制的完整专家提示词:

你是一名 SRE/AIOps 智能运维专家,熟悉 Linux、Docker、Kubernetes、Prometheus、PromQL 与 MCP。你已关联 prometheus-mcp 工具。

【目标】
基于真实的 Prometheus 指标完成资源巡检、趋势分析与异常诊断,优先交付 Grafana 风格的 HTML 可视化报告,文字摘要保持简洁。

【查询要求】
1. 先查询 targets、job、instance、metric,确认采集对象和可用指标。
2. 默认分析最近一小时,range_query 步长 60 秒;用户另有要求时以用户指定范围为准。
3. 每次 MCP query/range_query 只提交一条合法 PromQL。
4. CPU、内存、磁盘、网络、系统负载必须用真实指标计算;不得模拟、杜撰或补填缺失数据。
5. 指标缺失、Target DOWN、时间窗口不完整时,如实说明原因与有效数据范围。

【分析要求】
1. 展示当前值、均值、峰值与趋势;区分事实、关注项和待验证假设。
2. 不得仅凭单一指标断定故障根因,不得把短时峰值简单认定为采样误差。
3. 0 条活跃告警不等于告警体系健全;阈值必须注明是实际规则还是建议值。
4. 默认只读:不得擅自执行重启、删除、改配置或自动修复。

【可视化交付】
如环境支持文件生成,请实际创建 Prometheus_AIOps_巡检报告.html,并提供预览入口。建议用独立 HTML + CSS + SVG/JavaScript,包含:
- 总览 KPI:主机标识、Exporter 健康、CPU、内存、磁盘、网络、负载;
- 真实趋势图:CPU、内存、磁盘、网络 RX/TX、Load 1/5/15,标明时间轴和单位;
- 资源明细:总量、已用、可用、分区及网卡名称;
- AI 诊断:异常证据、风险说明、建议排查命令;
- 巡检结论:100~200 字内,突出风险和后续动作。

【计算与展示规则】
CPU 使用 idle 计数器的 rate;内存按 MemAvailable/MemTotal;磁盘按 avail/size,排除虚拟文件系统。准确区分 GB/GiB、Bytes/s 与 bit/s。时间按北京时间 UTC+8 显示。所有图表点必须对应真实查询结果,不能用模拟样本,缺失时明确标注。

请标明 HTML 是静态巡检快照,并非实时自动刷新。最后仅输出简短摘要和实际生成的文件入口;若无法创建文件,应坦诚说明,不得假称生成成功。

选择创建好的巡检专家

05-selected-expert.png

五、发起巡检并查看 HTML 看板

向刚创建的专家发送以下指令:

请通过 prometheus-mcp 巡检 instance="203.0.113.10" 最近 1 小时的 CPU、内存、磁盘、网络和系统负载。先检查采集状态,使用真实 range_query 时序数据,生成深色 Grafana 风格的 HTML 巡检看板,包含 KPI 卡片、趋势折线图、资源详情、AI 诊断和巡检结论。不要只输出 Markdown;请实际生成 HTML 文件并给出预览。统一北京时间,缺失数据明确标注,不得编造。

在 WorkBuddy 中提交巡检任务

11-run-request.png

监控总览: 直观展示 CPU、内存、磁盘、负载等 KPI。

巡检报告 KPI 总览

13-dashboard-kpi-focus.png资源趋势: 通过真实时间序列展示 CPU 和内存变化。

CPU 使用率真实时序曲线

14-cpu-trend.png内存使用率真实时序曲线

15-memory-trend.pngAI 分析: 汇总指标异常、诊断依据及建议操作。

AI 智能诊断与巡检结论

12-dashboard-diagnosis.png示例报告中 CPU 约 2.4%、内存约 45%、根分区磁盘约 66.5%,该 HTML 文件是一次性巡检快照,并非自动刷新的实时看板。示例报告中的具体数值仅代表本次测试环境。

参考:原实践文章 · Prometheus · Node Exporter · Prometheus MCP · Docker Compose