AIOps(一):基于 Prometheus MCP + WorkBuddy 构建 AI 智能运维
英文标题:AIOps(一):基于 Prometheus MCP + WorkBuddy 构建 AI 智能运维
本文介绍了基于 Docker Compose 快速部署 Prometheus、Node Exporter 与 Prometheus MCP Server,并将其接入 WorkBuddy 构建 AI 智能运维(AIOps)系统的实操方案。通过模型上下文协议(MCP),AI 能够直接加载并调用 28 个 Prometheus API 工具,实现指标采集确认与 PromQL 时序数据查询。该方案展示了从自然语言交互到自动化生成包含指标 KPI、时序折线图及根因分析建议的 Grafana 风格 HTML 巡检报告,为开发者落地 Agent 工具调用与自动化运维巡检提供了标准参考。
46.1 KB
120.2 KB
105.7 KB
32.1 KB
55.9 KB
49.7 KB
54.8 KB
64.8 KB
54.9 KB
65.4 KB
21.4 KB
12.0 KB
7.2 KB
59.8 KB
7.7 KB
中文
AIOps(一):基于 Prometheus MCP + WorkBuddy 构建 AI 智能运维
本文基于 Linux 监控场景,使用 Docker Compose 部署 Prometheus、Node Exporter 和 Prometheus MCP Server,接入 WorkBuddy,实现自然语言查询监控指标,并自动生成 HTML 可视化巡检报告。
一、整体架构
| 组件 | 主要职责 |
|---|---|
| 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 执行:
bash mkdir -p ~/aiops-prometheus && cd ~/aiops-prometheus vi prometheus.yml
将以下内容保存到 prometheus.yml:
yaml 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 文件
bash vi compose.yaml
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 启动与验证
bash 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。
填入以下 JSON,地址替换为实际云服务器公网 IP:
{ "mcpServers": { "prometheus-mcp": { "type": "http", "url": "http://203.0.113.10:8080/mcp", "headers": { "Authorization": "Bearer notoken" } } } }
填写 MCP 连接配置 保存并确认信任后,展开 MCP 工具列表:
保存并信任连接器后,展开工具列表。本次实测加载了 28 个工具,包含 query、range_query、list_targets 等,实际数量取决于版本与配置。
四、创建 AIOps 可视化巡检专家
进入 专家·技能·连接器 → 专家 → 我的专家 → 创建专家,并关联 prometheus-mcp。
以下是可直接复制的完整专家提示词:
text 你是一名 SRE/AIOps 智能运维专家,熟悉 Linux、Docker、Kubernetes、Prometheus、PromQL 与 MCP。你已关联 prometheus-mcp 工具。
【目标】 基于真实的 Prometheus 指标完成资源巡检、趋势分析与异常诊断,优先交付 Grafana 风格的 HTML 可视化报告,文字摘要保持简洁。
【查询要求】
- 先查询 targets、job、instance、metric,确认采集对象和可用指标。
- 默认分析最近一小时,range_query 步长 60 秒;用户另有要求时以用户指定范围为准。
- 每次 MCP query/range_query 只提交一条合法 PromQL。
- CPU、内存、磁盘、网络、系统负载必须用真实指标计算;不得模拟、杜撰或补填缺失数据。
- 指标缺失、Target DOWN、时间窗口不完整时,如实说明原因与有效数据范围。
【分析要求】
- 展示当前值、均值、峰值与趋势;区分事实、关注项和待验证假设。
- 不得仅凭单一指标断定故障根因,不得把短时峰值简单认定为采样误差。
- 0 条活跃告警不等于告警体系健全;阈值必须注明是实际规则还是建议值。
- 默认只读:不得擅自执行重启、删除、改配置或自动修复。
【可视化交付】 如环境支持文件生成,请实际创建 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 是静态巡检快照,并非实时自动刷新。最后仅输出简短摘要和实际生成的文件入口;若无法创建文件,应坦诚说明,不得假称生成成功。
五、发起巡检并查看 HTML 看板
向刚创建的专家发送以下指令:
text 请通过 prometheus-mcp 巡检 instance="203.0.113.10" 最近 1 小时的 CPU、内存、磁盘、网络和系统负载。先检查采集状态,使用真实 range_query 时序数据,生成深色 Grafana 风格的 HTML 巡检看板,包含 KPI 卡片、趋势折线图、资源详情、AI 诊断和巡检结论。不要只输出 Markdown;请实际生成 HTML 文件并给出预览。统一北京时间,缺失数据明确标注,不得编造。
监控总览: 直观展示 CPU、内存、磁盘、负载等 KPI。
资源趋势: 通过真实时间序列展示 CPU 和内存变化。
AI 分析: 汇总指标异常、诊断依据及建议操作。
示例报告中 CPU 约 2.4%、内存约 45%、根分区磁盘约 66.5%,该 HTML 文件是一次性巡检快照,并非自动刷新的实时看板。示例报告中的具体数值仅代表本次测试环境。
参考:原实践文章 · Prometheus · Node Exporter · Prometheus MCP · Docker Compose
English / 原文
AIOps(一):基于 Prometheus MCP + WorkBuddy 构建 AI 智能运维
本文基于 Linux 监控场景,使用 Docker Compose 部署 Prometheus、Node Exporter 和 Prometheus MCP Server ,接入 WorkBuddy ,实现自然语言查询监控指标,并自动生成 HTML 可视化巡检报告。
一、整体架构
| 组件 | 主要职责 |
|---|---|
| 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 。
填入以下 JSON,地址替换为实际云服务器公网 IP:
{
"mcpServers": {
"prometheus-mcp": {
"type": "http",
"url": "http://203.0.113.10:8080/mcp",
"headers": {
"Authorization": "Bearer notoken"
}
}
}
}
填写 MCP 连接配置 保存并确认信任后,展开 MCP 工具列表:
保存并信任连接器后,展开工具列表。本次实测加载了 28 个工具 ,包含
query、range_query、list_targets 等,实际数量取决于版本与配置。
四、创建 AIOps 可视化巡检专家
进入 专家·技能·连接器 → 专家 → 我的专家 → 创建专家 ,并关联 prometheus-mcp。
以下是可直接复制的完整专家提示词 :
你是一名 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 是静态巡检快照,并非实时自动刷新。最后仅输出简短摘要和实际生成的文件入口;若无法创建文件,应坦诚说明,不得假称生成成功。
五、发起巡检并查看 HTML 看板
向刚创建的专家发送以下指令:
请通过 prometheus-mcp 巡检 instance="203.0.113.10" 最近 1 小时的 CPU、内存、磁盘、网络和系统负载。先检查采集状态,使用真实 range_query 时序数据,生成深色 Grafana 风格的 HTML 巡检看板,包含 KPI 卡片、趋势折线图、资源详情、AI 诊断和巡检结论。不要只输出 Markdown;请实际生成 HTML 文件并给出预览。统一北京时间,缺失数据明确标注,不得编造。
监控总览: 直观展示 CPU、内存、磁盘、负载等 KPI。
资源趋势: 通过真实时间序列展示 CPU 和内存变化。
AI 分析: 汇总指标异常、诊断依据及建议操作。
示例报告中 CPU 约 2.4% 、内存约 45% 、根分区磁盘约 66.5% ,该 HTML 文件是一次性巡检快照 ,并非自动刷新的实时看板。示例报告中的具体数值仅代表本次测试环境。
参考:原实践文章 · Prometheus · Node Exporter · Prometheus MCP · Docker Compose