☰
grafana-mcp-analyzer 配 TaoToken:MCP 监控图表 AI 分析配置骨架
2026/9/30 20:55:30 网站建设 项目流程

1. 凌晨告警排查的真实痛点与 grafana-mcp-analyzer 的定位

凌晨三点被告警电话叫醒,打开 Grafana 看到一屏花花绿绿的曲线,CPU、内存、QPS、延迟、错误率全都在跳,但到底哪个指标先异常、哪个是根因、哪个只是被带崩的,光靠肉眼盯图往往要花二三十分钟才能定位。grafana-mcp-analyzer 就是冲着这个场景来的:它是一个基于 MCP(Model Context Protocol)协议的开源中间层,把 Grafana 的图表查询能力包装成 AI 助手能直接调用的工具,让 Claude、Cursor 这类支持 MCP 的客户端可以"读懂"你的监控面板,用自然语言问一句"这台机器现在什么情况",AI 就会去拉取对应的 PromQL 或 HTTP API 数据,再给出结构化的分析结论。

它适合谁?主要是三类人:一是日常要盯 Grafana 告警的运维和 SRE,希望把重复的看图动作交给 AI 做初筛;二是用 Cursor 写代码顺带想查监控的后端开发;三是想把监控数据接进 AI 工作流、但不想自己写一堆胶水代码的团队。它的核心价值不在于替代 Grafana,而在于把"人看图→人分析→人决策"这条链路压缩成"说一句话→AI 拉数→AI 给建议"。

不过这里有个容易被忽略的环节:grafana-mcp-analyzer 本身只负责把 Grafana 数据取出来喂给 AI,真正做分析推理的是背后的模型。如果你用的是官方 API 直连,模型调用这一层往往要单独配 Key、单独管额度、单独处理不同厂商的接口差异。我在实际搭这套链路时,把模型接入层统一收到了 TaoToken 上,一个 Key 走通所有模型调用,省掉了在多个平台之间来回切换配置的麻烦。下面就把这套骨架完整拆开,从环境准备到配置落地再到验证请求,一步步走通。

2. TaoToken 前置:统一 Key 与 API 通道准备

在动手写 config.toml 和 settings.json 之前,先把模型调用这一层理顺。grafana-mcp-analyzer 的工作流是"取 Grafana 数据 → 交给 AI 分析",AI 这一端需要一个稳定的 API 通道。TaoToken 在这里扮演的角色就是统一入口:你不需要为每个模型单独申请 Key,也不用在配置文件里塞一堆不同厂商的 base_url。

具体操作上,先到官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册账号,然后进控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。创建好之后你会拿到一串以 sk- 开头的 Key,这个 Key 就是后面配置文件里要填的核心凭证。

API 的基础地址是 https://taotoken.net/api ,注意这个地址不带任何查询参数,直接作为 base_url 使用即可。如果你用的是 OpenAI 兼容的客户端,把 base_url 指向这个地址、api_key 填上刚才创建的 Key,就能直接调用。对于 grafana-mcp-analyzer 这种通过 MCP 协议工作的工具,模型调用通常由 MCP 客户端(比如 Cursor)自己处理,你只需要在客户端侧把模型通道配好,analyzer 专注做 Grafana 数据搬运。

这里有个细节值得说清楚:TaoToken 的定位是模型 API 的统一接入层,不是 Grafana 的代理,也不是 MCP 服务本身。它解决的是"AI 分析这一步用哪个模型、怎么调"的问题,而 grafana-mcp-analyzer 解决的是"Grafana 数据怎么变成 AI 能吃的格式"的问题。两者职责分离,配置起来反而清晰。

如果你后续要做长期编码或 Agent 类任务,可以了解下 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,它更适合高频、长上下文的场景。单纯做监控图表分析的话,按量调用就够了。

3. 可复制配置骨架:config.toml 与 settings.json

这一节是全文的核心,给出可以直接复制修改的配置骨架。grafana-mcp-analyzer 的配置分两块:一块是 Grafana 侧的查询定义(告诉它去哪个面板、取哪个指标),另一块是 MCP 客户端侧的服务器注册(告诉 Cursor 或 Claude 怎么启动这个 analyzer)。

先看 Grafana 侧的配置。analyzer 支持用 config.toml 或 JS 配置文件来描述查询,下面是一个覆盖 Prometheus 数据源的 config.toml 骨架:

# grafana-mcp-analyzer 的 Grafana 查询配置骨架 # 放在项目根目录或通过 CONFIG_PATH 指定 [grafana] base_url = "https://your-grafana.example.com" # 如果 Grafana 开了匿名访问或 API Key,在这里填 api_key = "your-grafana-api-key" org_id = 1 [grafana.default_headers] Content-Type = "application/json" Accept = "application/json, text/plain, */*" [grafana.health_check] url = "api/health" # 查询定义:每个 key 就是一个可被 AI 调用的分析单元 [queries.node_cpu_overall] description = "节点整体 CPU 使用率" method = "POST" url = "api/ds/query" datasource_type = "prometheus" datasource_uid = "your-prometheus-uid" [queries.node_cpu_overall.params] ds_type = "prometheus" requestId = "SQR_CPU_01" [queries.node_cpu_overall.headers] x-datasource-uid = "your-prometheus-uid" x-grafana-org-id = "1" x-panel-id = "22" x-panel-plugin-id = "timeseries" x-plugin-id = "prometheus" [queries.node_cpu_overall.data] from = "now-3h" to = "now" [[queries.node_cpu_overall.data.queries]] refId = "A" expr = "clamp_max(avg by (mode) (rate(node_cpu_seconds_total{mode!=\"idle\"}[1m])), 1)" format = "time_series" interval = "1m" legendFormat = "{{mode}}" [queries.node_cpu_overall.system_prompt] text = """ 你是系统性能分析专家。请基于 CPU 使用率数据回答: 1. 当前 CPU 使用率是多少(给出具体数值) 2. 主要消耗在哪个 mode(user/system/iowait) 3. 是否存在异常尖峰,时间点在哪 4. 给出可执行的优化建议 如果无法获取实际数据,请明确说明,不要基于假设分析。 """

这个骨架的关键点在于:[queries.xxx]下面每个块就是一个独立的分析单元,AI 可以通过名字(比如node_cpu_overall)来调用。system_prompt决定了 AI 拿到数据后怎么分析,你可以针对不同面板写不同的 prompt,比如内存面板强调泄漏检测、QPS 面板强调突增突降。

再看 MCP 客户端侧的 settings.json。以 Cursor 为例,在设置里找到 MCP 配置,填入:

{ "mcpServers": { "grafana-analyzer": { "command": "npx", "args": ["-y", "grafana-mcp-analyzer"], "env": { "CONFIG_PATH": "/absolute/path/to/your/config.toml", "TAOTOKEN_API_KEY": "sk-your-taotoken-key", "TAOTOKEN_BASE_URL": "https://taotoken.net/api" } } } }

如果你用的是 Claude Desktop,配置结构类似,只是文件位置不同(macOS 在~/Library/Application Support/Claude/claude_desktop_config.json,Windows 在%APPDATA%\Claude\claude_desktop_config.json)。CONFIG_PATH支持绝对路径和远程路径,本地调试建议用绝对路径,避免相对路径解析出错。

这里把TAOTOKEN_API_KEY和TAOTOKEN_BASE_URL放进 env 是有意为之:analyzer 在需要调用模型做分析时,会读取这两个环境变量。这样你换模型或换 Key 的时候,只改这一处,不用动 Grafana 查询配置。

4. 验证请求:一次图表分析请求的完整动作

配置写完之后,别急着上生产,先做一次最小验证。验证的目标是确认三件事:MCP 服务能启动、Grafana 数据能取到、AI 能基于数据给出分析。

第一步,重启你的 MCP 客户端(Cursor 或 Claude Desktop),让新的 settings.json 生效。重启后在 Cursor 的 MCP 面板里应该能看到grafana-analyzer处于绿色运行状态。如果显示红色或灰色,先去看客户端的 MCP 日志,通常是CONFIG_PATH路径写错或 Node 版本不够。

第二步,在对话里发起一次分析请求。用自然语言问:

分析 node_cpu_overall 的数据,告诉我当前 CPU 情况

如果链路通了,你会看到 AI 先调用 MCP 工具去拉取 Grafana 数据,然后基于返回的时序数据给出分析。一个正常的返回大概长这样:

## 服务器状态概览 直接结论:当前 CPU 使用率约 62%,状态正常偏高 ## 详细数据 - 当前使用率:62% - 平均使用率:48% - 峰值使用率:85%(出现在 14:23) - 主要使用模式:user 占 45%,system 占 12%,iowait 占 5% ## 风险评估 14:23 的峰值与 user 模式同步上升,可能是定时任务或批处理触发, 暂未看到 iowait 异常,磁盘层面压力不大。 ## 行动建议 1. 确认 14:23 是否有定时任务,如有可考虑错峰 2. 持续观察 user 模式占比,若长期高于 50% 需评估扩容

第三步,做一次多指标聚合验证。再问一句:

聚合分析 node_cpu_overall 和 node_memory_usage 的数据

这一步验证的是 analyzer 能否同时拉取多个查询单元并让 AI 做关联分析。如果 AI 能同时引用两个数据源并给出"CPU 上升伴随内存上升,疑似内存泄漏导致 GC 频繁"这类关联结论,说明整条链路已经跑通。

验证通过后,你可以把常用的分析请求固化成 prompt 模板,比如"每日巡检"、"告警初筛"、"容量评估"三个模板,每次直接调用,省去重复描述。

5. 本篇常见错排查

配置过程中最容易踩的坑集中在几个地方,我按出现频率排一下。

MCP 服务启动失败,客户端显示红色。九成是CONFIG_PATH路径问题。先确认路径是绝对路径,再确认文件确实存在且有读权限。如果用的是远程路径,确认网络能访问到那个地址。另外 Node.js 版本要 18 以上,低于这个版本 analyzer 会直接退出。

Grafana 数据取不到,AI 回复"无法获取实际数据"。这种情况先单独用 curl 测一下 Grafana 的 API 是否可达:

curl -H "Authorization: Bearer your-grafana-api-key" \ https://your-grafana.example.com/api/health

如果 curl 能通但 analyzer 取不到,多半是datasource_uid或x-panel-id填错了。这两个值要从 Grafana 面板的 Query Inspector 里复制,不能凭感觉写。打开面板 → Query Inspector → JSON,里面能看到真实的 uid 和 panel id。

AI 分析结果泛泛而谈,没有具体数值。这是system_prompt写得太松导致的。prompt 里一定要明确要求"给出具体数值"、"如果无法获取数据请明确说明,不要基于假设分析"。否则模型容易编造一个看起来合理的数字,这在运维场景里是致命的。

模型调用报 401 或 403。检查TAOTOKEN_API_KEY是否填对,注意 Key 有没有多余空格。base_url 必须是https://taotoken.net/api,不要在后面加/v1或其他路径,除非客户端明确要求。

分析延迟很高,一次请求要等十几秒。通常是查询时间范围太大,比如from = "now-7d"拉了七天的数据点。监控分析建议把范围控制在 3 小时以内,数据点少、分析快、结论也更聚焦。需要看长期趋势的话,单独配一个降采样的查询单元。

改了 config.toml 但没生效。analyzer 在启动时读取配置,改完必须重启 MCP 客户端。Cursor 里可以在 MCP 面板点重启按钮,或者直接重启整个客户端。

6. 把监控分析接进日常运维流

链路跑通之后,真正提升效率的是把它嵌进日常动作里。我自己的做法是配三个固定查询单元:一个 CPU/内存的巡检单元、一个错误率的告警初筛单元、一个 QPS 的容量评估单元。每天早上到工位先问一句"跑一下今日巡检",AI 会把三个单元的数据拉出来给一份简报,有异常再深入看。

对于告警场景,可以把 analyzer 和告警 webhook 结合:告警触发时自动把面板 UID 和查询名推给 AI,让 AI 先出一份初步分析,值班的人打开手机就能看到"疑似根因 + 建议动作",而不是面对一屏曲线发呆。这一步不需要改 analyzer 本身,用脚本调 MCP 接口就行。

模型通道这块,如果你后面要接更多 AI 工具(比如代码助手、日志分析),统一走 TaoToken 的 API 通道会省很多事,一个 Key 管所有模型调用,额度也在一个地方看。模型对话入口在 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,配置细节以文档为准。Claude Code 相关的接入可以参考 https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claude-code-anthropic&utm_campaign=rewrite 。

最后提醒一句:analyzer 的定位是"辅助分析",不是"自动决策"。它给出的建议要经过人确认再执行,尤其是涉及重启、扩容、限流这类操作。把它当成一个不知疲倦的初级运维,帮你做初筛和整理,最终判断还是留在人手里。这套骨架你先跑通,再根据自己的面板结构慢慢加查询单元,用起来会越来越顺手。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询