引言
作为一名运维开发者,我每天都需要频繁查看Grafana监控面板,排查告警、分析日志、追踪性能指标。当集群规模扩大后,这种“人肉巡检”方式变得愈发低效——我需要一个能听懂人话的AI助手,帮我查仪表盘、分析PromQL、定位异常。
经过一番调研与实践,我利用MCP(模型上下文协议)打通了Grafana与AI大模型,成功搭建了一套私有的AI监控对话系统。本文将完整记录从0到1的部署过程,希望能帮你避开我踩过的坑。
资源链接:
一、核心概念:MCP是什么?
MCP(Model Context Protocol)是由Anthropic提出的开放标准协议,可以理解为AI世界的“USB-C接口”。它让AI模型能够通过统一的方式调用外部工具和数据源。
在我们这套架构中:
- MCP服务(grafana/mcp-grafana)扮演“桥梁”角色,将Grafana的API封装成标准化的工具
- AI模型(通义千问)作为“大脑”,理解用户意图并决定调用哪些工具
- 客户端(Cherry Studio)提供对话界面,连接AI模型和MCP服务
简单来说:用户提问 → AI理解并决策 → 通过MCP调用Grafana → 返回数据 → AI整理回复。
二、架构总览
┌─────────────────────────────────────────────────────────────────┐
│ 用户 (对话界面) │
│ └── Cherry Studio / Open WebUI │
│ │ │
│ ▼ │
│ AI模型 (阿里云百炼 Qwen) │
│ └── 理解意图,决策调用哪些工具 │
│ │ │
│ ▼ │
│ MCP协议 (HTTP/HTTPS) │
│ └── 标准化的工具调用请求 │
│ │ │
│ ▼ │
│ Grafana MCP 服务 (grafana/mcp-grafana) │
│ └── 封装Grafana API为65+工具 (查询仪表盘/PromQL/告警等) │
│ │ │
│ ▼ │
│ Grafana 实例 (数据源) │
│ └── 返回监控数据 │
└─────────────────────────────────────────────────────────────────┘
三、前期准备
3.1 环境信息
- 操作系统:RHEL 9 / CentOS 9 (内核 5.14)
- Grafana:服务器上已提前运行grafana 10.2.6 开源版,运行在
http://localhost:38002 - AI模型:阿里云百炼 Qwen3.6 (通过API调用)
- MCP服务:grafana/mcp-grafana (Docker部署)
- 客户端:Cherry Studio (桌面客户端)
3.2 需要的凭证
- Grafana 服务账户令牌:用于MCP服务访问Grafana
- 阿里云百炼 API Key:用于调用Qwen模型
四、第一步:创建Grafana服务账户令牌
- 登录Grafana → 管理 → 服务账户
- 点击 新建服务账户:
- 名称:
mcp-server - 角色:
Viewer(只读)或Editor(可读写)
- 名称:
- 点击 生成令牌,立即复制保存(关闭后不可见)
- 令牌格式示例:
glsa_xxxxxx

五、第二步:部署Grafana MCP服务
5.1 使用Docker部署(streamable-http模式)
docker run -d \
--name mcp-grafana \
--restart unless-stopped \
--add-host host.docker.internal:host-gateway \
-p 8000:8000 \
-e GRAFANA_URL="https://你的grafana地址" \
-e GRAFANA_SERVICE_ACCOUNT_TOKEN="glsa_你的令牌" \
grafana/mcp-grafana -t streamable-http
关键参数说明:
-t streamable-http:使用HTTP流式传输模式,支持远程客户端连接--add-host host.docker.internal:host-gateway:让容器能访问宿主机服务-p 8000:8000:暴露服务端口
5.2 验证服务是否正常
# 检查容器状态
docker ps | grep mcp-grafana
# 测试MCP服务(应返回JSON响应)
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"0.1.0","capabilities":{}},"id":1}'
成功会返回包含 "protocolVersion":"2025-11-25" 和工具列表的JSON。
六、第三步:配置Nginx反向代理(解决公网访问问题)
6.1 为什么需要Nginx?
grafana/mcp-grafana 出于安全考虑,默认只允许 localhost 的请求。通过Nginx代理,可以将外部请求的 Host 头重写为 localhost,从而绕过限制。
6.2 Nginx配置文件
# /etc/nginx/conf.d/mcp-proxy.conf
# HTTP 重定向到 HTTPS
server {
listen 80;
server_name gra-mcp.exmaple.com;
return 301 https://$server_name$request_uri;
}
# HTTPS 配置
server {
listen 443 ssl;
http2 on;
server_name gra-mcp.exmaple.com;
ssl_certificate /etc/nginx/ssl/exmaple.com.pem;
ssl_certificate_key /etc/nginx/ssl/exmaple.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location /mcp {
# IP白名单(可选,增强安全)
allow xx.xx.xx.xx/32;
deny all;
# X-API-Key认证(可选)
if ($http_x_api_key != "你的强密码") {
return 403;
}
proxy_pass http://127.0.0.1:8000/mcp;
proxy_set_header Host localhost:8000; # 关键:重写Host头
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
6.3 启动Nginx
nginx -t && systemctl reload nginx
6.4 验证代理是否生效
curl -X POST https://gra-mcp.exmaple.com/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: 你的强密码" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{},"id":1}'
七、第四步:配置Cherry Studio客户端
7.1 安装Cherry Studio
从官网下载对应平台的安装包,安装后打开。
7.2 配置阿里云百炼模型
- 点击左下角 设置 → 模型服务
- 找到 阿里云百炼,填入
DASHSCOPE_API_KEY - 添加模型:
qwen-plus或qwen-max


7.3 配置MCP服务器
- 进入 设置 → MCP服务器
- 点击 添加服务器:
- 名称:
grafana-mcp - 类型:
streamable-http或sse - URL:
https://gra-mcp.exmaple.com/mcp - 请求头:
X-API-Key: 你的强密码
- 名称:
- 保存,等待状态变为 已连接


7.4 开始对话
- 新建对话,选择阿里云百炼模型
- 在输入框下方开启MCP开关,勾选
grafana-mcp - 输入测试指令:
帮我列出所有Grafana仪表盘查询当前有哪些告警规则过去一小时CPU使用率最高的服务是什么


八、安全加固建议
8.1 IP白名单
在Nginx中添加 allow 规则,只允许特定IP访问。
8.2 API Key认证
通过 X-API-Key 请求头验证客户端身份。
8.3 只读模式
启动MCP服务时添加 --disable-write 参数,禁止写操作。
docker run ... grafana/mcp-grafana -t streamable-http --disable-write
8.4 升级MCP版本
确保 grafana/mcp-grafana 版本 ≥ 0.17.1,以修复已知SSRF漏洞。
九、常见问题排查
| 问题 | 原因 | 解决方法 |
|---|---|---|
host not allowed | MCP服务拒绝非localhost请求 | 通过Nginx代理,重写Host头 |
403 Forbidden | 缺少或错误的认证头 | 检查X-API-Key是否正确 |
| MCP连接失败 | 端口未开放或防火墙限制 | 检查8000/443端口,放行安全组 |
| 工具列表为空 | 客户端未正确加载MCP工具 | 确保对话中MCP开关已开启 |
十、总结
至此,你已经拥有了一套完整的AI监控助手:
- 数据层:Grafana存储监控数据
- 桥梁层:MCP服务封装65+工具
- 智能层:通义千问模型理解意图
- 交互层:Cherry Studio提供对话界面
整个方案的亮点:
- 私有化部署:所有组件自托管,数据不出内网
- 标准化协议:MCP让AI与监控系统无缝对接
- 低成本高回报:用对话替代点按,运维效率大幅提升
下一步,你可以探索:
- 将MCP接入Open WebUI,提供团队协作界面
- 部署Qwen3.6-27B本地模型,摆脱API依赖
- 对接Prometheus/Loki等更多数据源

435

被折叠的 条评论
为什么被折叠?



