grafana-mcp-analyzer:基于 MCP 的轻量 AI 分析监控图表的运维神器!
还在深夜盯着 Grafana 图表手动排查问题?今天推荐一个让 AI 能“读图说话”的开源神器 —— grafana-mcp-analyzer
。
想象一下这样的场景:
- 凌晨3点,服务器告警响起。。。
- 你睁着惺忪的眼睛盯着复杂的监控图表 😵💫
- 花了30分钟才找到问题根源…
现在,仅需一句话就能搞定:
👤 “AI,帮我看看服务器出什么问题了?”
🤖 AI立即回复:“CPU突增85%,主要是订单处理服务的内存泄漏导致,建议…”
项目简介:什么是 grafana-mcp-analyzer
?
grafana-mcp-analyzer
是一个开源项目,基于 Model Context Protocol (MCP) 协议,提供了一套桥接 AI 助手(如 ChatGPT、Claude)与 Grafana 监控平台 的中间层服务。它能让 AI 助手实时读取你的 Grafana 仪表盘数据,并用自然语言做出判断、分析以及建议。
一句话总结:让 AI 自动分析 Grafana 指标,做你身边的智能运维专家。
🚀 快速配置:从配置到使用全程不到3分钟
第一步:极速安装(30秒)
npm install -g grafana-mcp-analyzer
MCP 依赖
Node.js 18+
环境,推荐安装方式详见:Node.js 快速安装最全指南
第二步:AI 助手集成(30秒)
Cursor设置 → “MCP” → 服务配置(以Cursor为例)
{ \"mcpServers\": { \"grafana\": { \"command\": \"grafana-mcp-analyzer\", \"env\": { \"CONFIG_PATH\": \"https://raw.githubusercontent.com/SailingCoder/grafana-mcp-analyzer/main/config/grafana-config-play.js\" } } }}
注:CONFIG_PATH支持绝对路径、远程路径,推荐使用远程路径快速体验。
第二步:智能配置(1分钟)
如果你需要连接自己的数据,请在 CONFIG_PATH
路径下创建一个名为 grafana-config-play.js
的配置文件。
如果你只想快速体验示例,可跳过此步骤,直接执行第四步。
/** * 基于Grafana Play演示实例的配置文件 * 数据源(狗狗币OHLC数据):https://play.grafana.org/d/candlesticksss/candlestick2?orgId=1&from=2021-07-13T22:13:30.740Z&to=2021-07-13T22:46:18.921Z&timezone=utc * 以下配置文件内容来源:https://raw.githubusercontent.com/SailingCoder/grafana-mcp-analyzer/main/config/grafana-config-play.js * Request 配置方式:支持 http api 和 curl */const config = { // Grafana服务器地址 baseUrl: \'https://play.grafana.org\', // 默认请求头 defaultHeaders: { \'Content-Type\': \'application/json\', \'Accept\': \'application/json, text/plain, */*\' }, // 健康检查配置 healthCheck: { url: \'api/health\' }, // 查询定义 queries: { // 第一个查询 - 使用curl格式(面板2的狗狗币数据) // dogecoin_panel_2 .... // 第二个查询 - 使用HTTP API格式(面板7的狗狗币数据) \'dogecoin_panel_7\': { url: \'api/ds/query\', method: \'POST\', params: { ds_type: \'grafana-testdata-datasource\', requestId: \'SQR109\' }, headers: { \'accept\': \'application/json, text/plain, */*\', \'content-type\': \'application/json\', \'x-datasource-uid\': \'9cY0WtPMz\', \'x-grafana-org-id\': \'1\', \'x-panel-id\': \'7\', \'x-panel-plugin-id\': \'candlestick\', \'x-plugin-id\': \'grafana-testdata-datasource\' }, data: { queries: [{ csvFileName: \"ohlc_dogecoin.csv\", datasource: { type: \"grafana-testdata-datasource\", uid: \"9cY0WtPMz\" }, refId: \"A\", scenarioId: \"csv_file\", datasourceId: 153, intervalMs: 2000, maxDataPoints: 1150 }], from: \"1626214410740\", to: \"1626216378921\" }, systemPrompt: `您是金融市场技术分析专家,专注于加密货币市场分析。**分析重点**:1. 市场趋势和动量分析 - 识别主要趋势方向和动量变化2. 价格模式识别 - 识别头肩顶、双底、三角形等经典形态3. 成交量与价格关系 - 分析成交量对价格走势的支撑4. 市场情绪评估 - 基于技术指标评估市场情绪状态5. 短期和长期投资策略建议 - 提供不同时间周期的投资建议**输出要求**:- 基于实际数据进行分析,提供具体数值解读- 识别关键的价格模式和趋势变化- 给出明确的交易建议和风险提示- 提供可操作的投资策略请提供详细的技术分析报告。` }, overall_cpu_utilization100: { curl: `curl \'https://play.grafana.org/api/ds/query?ds_type=prometheus&requestId=SQR371\' \\ -H \'accept: application/json, text/plain, */*\' \\ -H \'accept-language: zh-CN,zh;q=0.9\' \\ -H \'cache-control: no-cache\' \\ -H \'content-type: application/json\' \\ -b \'_ga=GA1.2.387525048.1751712678; rl_page_init_referrer=RudderEncrypt%3AU2FsdGVkX191kw8iAnoyFkv6jbIl3EOkbSdK21uFLwGid2zCBcXWXVl4rK8kP9uB; rl_page_init_referring_domain=RudderEncrypt%3AU2FsdGVkX1%2FQpNd4Fbr7FgBG8YeyeoTAiBUO993bC9E%3D; _gid=GA1.2.354949503.1752935466; rl_group_id=RudderEncrypt%3AU2FsdGVkX1%2Fyd5jy%2Bq5XZfeqcDGhXMhz56ANft0NLCo%3D; rl_group_trait=RudderEncrypt%3AU2FsdGVkX1%2F9hmHjbWlb%2F%2B2RP0JlMRymkg9QBgUw3oE%3D; rl_anonymous_id=RudderEncrypt%3AU2FsdGVkX19JQD0l8hbD8ApQMSbVisxyXCEuam7wcYtcnfywOO67gQc7EjkFm0bW%2BNZjB%2BsmRZnHy5ccbyeoHQ%3D%3D; rl_user_id=RudderEncrypt%3AU2FsdGVkX18s9kRPf%2BwQSRIaYGd9O5kGPmZh%2FQhoq4LyI63CRJNoBrh7Cc06OuAO; rl_trait=RudderEncrypt%3AU2FsdGVkX1%2B%2FhZugE4qfWyjSTEFKcsYs0DwcOyfdazoJfVtGv4x0q%2BOFxbqHDD0r%2BLWcg%2F6CceMFQH3dJIa3C0WyF0hWoBLLwV%2BiQB4077KEHTtX%2BkJxjJ4X6czXwpsh%2FsV9e8l4ptVfz%2FgyJLh1qw%3D%3D; _gat=1; _ga_Y0HRZEVBCW=GS2.2.s1752935474$o2$g1$t1752935591$j38$l0$h0; rl_session=RudderEncrypt%3AU2FsdGVkX1%2BUhBGRm24hqUS5TRKZrN31aK8t518MW16GZKplO6iFClFnqmpYiglWbXqKgnDZz8o%2FaGxuQouIM%2BN0BBr8Nh3HY6chGRtVUEeRSRXAAQiiH30%2Bp6%2F57AoqhwV3k0jqvIikr69S9sDpCg%3D%3D\' \\ -H \'origin: https://play.grafana.org\' \\ -H \'pragma: no-cache\' \\ -H \'priority: u=1, i\' \\ -H \'referer: https://play.grafana.org/d/cNMLIAFK/cpu-utilization-details-cores?var-interval=$__auto&orgId=1&from=now-3h&to=now&timezone=browser&var-host=faro-shop-control-plane&var-cpu=$__all&refresh=5s&editPanel=22&inspect=22&inspectTab=query\' \\ -H \'sec-ch-ua: \"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Google Chrome\";v=\"138\"\' \\ -H \'sec-ch-ua-mobile: ?0\' \\ -H \'sec-ch-ua-platform: \"macOS\"\' \\ -H \'sec-fetch-dest: empty\' \\ -H \'sec-fetch-mode: cors\' \\ -H \'sec-fetch-site: same-origin\' \\ -H \'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36\' \\ -H \'x-dashboard-title: CPU Utilization Details (Cores)\' \\ -H \'x-dashboard-uid: cNMLIAFK\' \\ -H \'x-datasource-uid: grafanacloud-prom\' \\ -H \'x-grafana-device-id: 2b0db28108a0a56f4a0dcf3d59537fe7\' \\ -H \'x-grafana-org-id: 1\' \\ -H \'x-panel-id: 22\' \\ -H \'x-panel-plugin-id: timeseries\' \\ -H \'x-panel-title: $host - Overall CPU Utilization\' \\ -H \'x-plugin-id: prometheus\' \\ --data-raw $\'{\"queries\":[{\"calculatedInterval\":\"2s\",\"datasource\":{\"type\":\"prometheus\",\"uid\":\"grafanacloud-prom\"},\"datasourceErrors\":{},\"errors\":{},\"expr\":\"clamp_max((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{instance=\\\\\"faro-shop-control-plane\\\\\",mode\\u0021=\\\\\"idle\\\\\"}[1m]),1)) or (clamp_max(irate(node_cpu_seconds_total{instance=\\\\\"faro-shop-control-plane\\\\\",mode\\u0021=\\\\\"idle\\\\\"}[5m]),1)) )),1)\",\"format\":\"time_series\",\"hide\":false,\"interval\":\"1m\",\"intervalFactor\":1,\"legendFormat\":\"{{mode}}\",\"metric\":\"\",\"refId\":\"A\",\"step\":300,\"exemplar\":false,\"requestId\":\"22A\",\"utcOffsetSec\":28800,\"scopes\":[],\"adhocFilters\":[],\"datasourceId\":171,\"intervalMs\":60000,\"maxDataPoints\":778},{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"grafanacloud-prom\"},\"expr\":\"clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{instance=\\\\\"faro-shop-control-plane\\\\\",mode\\u0021=\\\\\"idle\\\\\",mode\\u0021=\\\\\"iowait\\\\\"}[5m]),1)) or (clamp_max(irate(node_cpu_seconds_total{instance=\\\\\"faro-shop-control-plane\\\\\",mode\\u0021=\\\\\"idle\\\\\",mode\\u0021=\\\\\"iowait\\\\\"}[5m]),1)) )),1)\",\"format\":\"time_series\",\"hide\":false,\"interval\":\"1m\",\"intervalFactor\":1,\"legendFormat\":\"Max Core Utilization\",\"refId\":\"B\",\"exemplar\":false,\"requestId\":\"22B\",\"utcOffsetSec\":28800,\"scopes\":[],\"adhocFilters\":[],\"datasourceId\":171,\"intervalMs\":60000,\"maxDataPoints\":778}],\"from\":\"1752924823337\",\"to\":\"1752935623337\"}\'`, systemPrompt: `您是系统性能分析专家,专注于CPU使用率数据分析。**核心任务**:直接回答用户的问题:\"我的服务器现在怎么样?\"**必须回答的问题**:当前CPU使用率是多少?(具体数值)**输出格式**:## 服务器状态概览**直接结论**:服务器CPU使用率 [具体数值]%,状态 [正常/偏高/异常]## 详细数据- **当前使用率**:[数值]%- **平均使用率**:[数值]%- **峰值使用率**:[数值]%- **主要使用模式**:[user/system/iowait等]## 风险评估[基于数据的具体风险分析]## 行动建议[具体的可执行建议]**重要**:如果无法获取到实际数据,请明确说明\"无法获取实际数据\",并解释可能的原因。不要基于假设进行分析!` }, }};module.exports = config;
配置获取技巧:(推荐 curl)
1、curl命令配置
在Grafana中执行查询 → 按F12打开开发者工具 → Network标签页 -> 找到查询请求 → 右键 → Copy as cURL → 粘贴到配置文件的curl字段
2、HTTP API配置
- 获取 Data 传参:进入图表 → “Query Inspector” → \"JSON\"解析 → 拷贝请求体(request)
- 获取 Url 和 Headers Token:通过 Network 面板查看请求参数,手动构造 HTTP 配置。
在线转 JSON 地址:https://www.json.cn/jsononline/
第四步:开始对话
完全重启Cursor。
然后体验智能分析:
👤 您:分析overall_cpu_utilization100数据
🤖 AI:正在连接Grafana并分析…
👤 您:聚合分析dogecoin_panel_2、dogecoin_panel_7的数据
🤖 AI:同时查询多个指标并进行综合关联分析…
一句话总结:AI 不再只是“聊天”,现在它也能读懂你的监控图表了。
技术实现原理
项目基于 MCP 协议(Model Context Protocol)进行任务拆解,将 Grafana 图表查询(无论是 PromQL、ES、SQL)统一抽象为结构化数据,提供给 AI 模型进行分析。(简单来说就是 MCP 协议 + Grafana HTTP API)
+------------------+ ask(\"CPU 怎么样?\") +---------------------+| ChatGPT 等 AI | | MCP Analyzer 中间服务 |+------------------+ +---------------------+ | | 查询转发 v +------------------------+ | Grafana HTTP API | +------------------------+
核心优势在于:
- 与数据源(数据查询语句)解耦,支持多种格式统一接入;
- Prompt 可定制,适配不同分析场景;
- 部署简单,生产可落地;
- 适配各种支持 MCP 协议的 AI 工具/平台;
- 核心Resources,支持大数据量分析,高效智能全量数据分析;
当前局限:
- 更适用于中小规模数据分析:当前分析能力主要聚焦在中小体量的监控数据,适合日常巡检、局部异常定位等场景,基本可覆盖常规运维需求;
- 大数据量场景仍存挑战:在处理大规模监控数据时,受限于现阶段 AI 模型的上下文处理能力。但随着后续新/老模型能力的加强,这种模型上下文的误差也会消失。
结语:让监控系统听得懂人话
随着 AI 的能力越来越强,传统运维的工具链也在悄然升级。如果说过去我们是 「人看图 → 手动分析 → 手动决策」,那么今天,我们已经可以迈入 「说句话 → AI 理解 → 给出建议」 的智能时代。
grafana-mcp-analyzer
只是个开始。它展示了 AI 与传统监控(Grafana)融合的潜力。如果你正在用 Grafana,又对 AI 感兴趣,这个值得一试。
📎 项目地址:https://github.com/SailingCoder/grafana-mcp-analyzer
📫 欢迎留言、点赞、分享,让更多人知道这个项目!