MCP 之 Grafana 分析线上运行指标实战指南 #
本文展示了如何使用 Cursor 编辑器结合 MCP-Grafana 工具,通过 AI 对话的方式智能分析线上系统的运行指标。这种新的运维方式让复杂的监控数据查询变得更加直观和高效。
概述 #
在现代运维体系中,监控数据的分析往往需要运维人员具备深厚的 Grafana 操作经验和 Prometheus 查询语言(PromQL)知识。MCP(Model Context Protocol)的出现为这一挑战提供了新的解决方案。
通过 Cursor + MCP-Grafana 的组合,我们可以:
- 自然语言查询 - 用日常语言描述监控需求
- 智能数据分析 - AI 自动构建复杂的 PromQL 查询
- 实时状态监控 - 快速获取系统健康状态
- 趋势分析 - 深入了解系统性能变化

实战案例分析 #
案例一:系统看板概览 #
用户需求:确认目前有哪些看板
AI 分析过程:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>search_dashboards</tool_name>
<arguments>
{
"query": ""
}
</arguments>
</use_mcp_tool>
分析结果:
监控文件夹结构 #
| 文件夹 | ID | 用途 |
|---|---|---|
| AWS | 19 | AWS 云服务监控 |
| docker | 25 | 容器化服务监控 |
| monitor | 18 | 系统基础监控 |
| nats | 3 | 消息队列监控 |
核心仪表盘清单 #
基础设施监控:
- Node Exporter for Prometheus Dashboard CN v20200628
- AWS ECS
- AWS EFS(AWS 文件夹)
应用服务监控:
- Bingo2 Develop NATS Server Dashboard(nats 文件夹)
- Bingo2 Production NATS Server Dashboard(nats 文件夹)
- Bingo2 Test NATS Server Dashboard(nats 文件夹)
容器监控:
- Docker and system monitoring(docker 文件夹)
- Docker Container(docker 文件夹)
日志与业务监控:
- Fluent Bit
- Logging Dashboard
- 业务监控-开发服
- 业务监控-正式服
监控覆盖范围:这些看板涵盖了从基础设施到应用层的完整监控体系,包括 AWS 服务、Docker 容器、NATS 服务器、节点导出器以及业务监控等关键领域。
案例二:业务看板详情查询 #
用户需求:业务监控-正式服具体有哪些看板
AI 分析过程:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>search_dashboards</tool_name>
<arguments>
{
"query": "业务监控-正式服"
}
</arguments>
</use_mcp_tool>
分析结果:
通过查询获得了"业务监控-正式服"的基本元数据信息:
| 属性 | 值 |
|---|---|
| 看板 ID | 30 |
| 看板 UID | 8888888 |
| 访问路径 | /d/8888888/e4b89a-e58aa1-e79b91-e68ea7-e6ada3-e5bc8f-e69c8d |
注意:MCP 工具返回的是看板的元数据信息,要查看具体的面板和图表内容,需要直接在 Grafana 界面中访问该看板。
案例三:Prometheus 指标概览 #
用户需求:有哪些 Prometheus 指标
AI 分析过程:
首先获取数据源信息:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>list_datasources</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
然后查询指标列表:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>list_prometheus_metric_names</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"limit": 100
}
</arguments>
</use_mcp_tool>
分析结果:
指标分类概览 #
1. 业务服务指标
| 服务类型 | 关键指标 | 监控内容 |
|---|---|---|
| 聊天服务 | chat_repo_total, chat_request_duration_bucket, chat_request_total | 聊天功能性能和使用量 |
| 俱乐部服务 | club_repo_total, club_request_duration_bucket, club_request_total | 俱乐部功能性能监控 |
| 连接器服务 | connector_request_duration_bucket, connector_session_online | 连接管理和会话状态 |
| 网关服务 | gate_request_duration_bucket, gate_request_total | API 网关性能监控 |
2. NATS 消息系统指标
以 gnatsd_varz_ 开头的指标群,包括:
gnatsd_varz_connections- 连接数统计gnatsd_varz_in_bytes- 入站字节数gnatsd_varz_out_msgs- 出站消息数- 等多个消息系统状态指标
3. Go 运行时指标
| 类别 | 指标示例 | 用途 |
|---|---|---|
| 垃圾回收 | go_gc_duration_seconds, go_gc_pauses_seconds_bucket | GC 性能监控 |
| 内存统计 | go_memstats_alloc_bytes, go_memstats_heap_objects | 内存使用分析 |
| 协程管理 | go_goroutines | 并发性能监控 |
| 运行时信息 | go_info | Go 版本和环境信息 |
应用价值:这些指标为应用程序性能、资源使用情况和系统健康状态提供了全方位的监控能力,支持在 Grafana 中创建丰富的可视化图表和仪表盘。
案例四:NATS 集群状态深度分析 #
用户需求:NATS 目前的运行状态信息
AI 分析过程:
通过一系列 PromQL 查询获取 NATS 集群的关键运行指标:
<!-- 查询连接数 -->
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "gnatsd_varz_connections",
"queryType": "instant",
"startRfc3339": "2025-03-28T00:00:00Z"
}
</arguments>
</use_mcp_tool>
<!-- 查询入站消息 -->
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "gnatsd_varz_in_msgs",
"queryType": "instant",
"startRfc3339": "2025-03-28T00:00:00Z"
}
</arguments>
</use_mcp_tool>
<!-- 查询出站消息 -->
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "gnatsd_varz_out_msgs",
"queryType": "instant",
"startRfc3339": "2025-03-28T00:00:00Z"
}
</arguments>
</use_mcp_tool>
<!-- 查询订阅数 -->
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "gnatsd_varz_subscriptions",
"queryType": "instant",
"startRfc3339": "2025-03-28T00:00:00Z"
}
</arguments>
</use_mcp_tool>
<!-- 查询内存使用 -->
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "gnatsd_varz_mem",
"queryType": "instant",
"startRfc3339": "2025-03-28T00:00:00Z"
}
</arguments>
</use_mcp_tool>
分析结果:
NATS 集群运行状态总览 #
NATS 集群由三个服务器节点组成,运行状态良好:
连接数分布 #
| 节点 IP | 连接数 | 负载占比 |
|---|---|---|
| 172.31.1.140 | 206 | 30.3% |
| 172.31.13.130 | 249 | 36.6% |
| 172.31.4.41 | 225 | 33.1% |
| 总计 | 680 | 100% |
消息处理统计 #
入站消息总数:
| 节点 IP | 入站消息数 | 占比 |
|---|---|---|
| 172.31.1.140 | 18,736,199,964 | 40.8% |
| 172.31.13.130 | 14,815,461,942 | 32.3% |
| 172.31.4.41 | 12,467,602,737 | 27.1% |
出站消息总数:
| 节点 IP | 出站消息数 | 占比 |
|---|---|---|
| 172.31.1.140 | 19,169,173,557 | 40.4% |
| 172.31.13.130 | 15,307,350,762 | 32.2% |
| 172.31.4.41 | 12,989,740,138 | 27.4% |
订阅数统计 #
| 节点 IP | 订阅数 | 平均每连接订阅数 |
|---|---|---|
| 172.31.1.140 | 3,201 | 15.5 |
| 172.31.13.130 | 3,165 | 12.7 |
| 172.31.4.41 | 3,232 | 14.4 |
内存使用情况 #
| 节点 IP | 内存使用 | 内存使用(MB) |
|---|---|---|
| 172.31.1.140 | 82,194,432 字节 | 78.4 MB |
| 172.31.13.130 | 93,868,032 字节 | 89.5 MB |
| 172.31.4.41 | 90,210,304 字节 | 86.0 MB |
健康状态评估 #
集群状态:✅ 正常运行
负载均衡:✅ 三个节点负载相对均衡
消息处理:✅ 处理了大量消息流量,无异常
资源使用:✅ 连接数、订阅数和内存使用都在合理范围内
关键发现:
- 节点 172.31.1.140 处理的消息量最大,但内存使用相对较低
- 各节点的订阅数分布均匀,表明客户端连接分布良好
- 内存使用量都控制在 100MB 以下,资源利用率健康
案例五:Connector 服务性能趋势分析 #
用户需求:最近 Connector 这个机器 CPU 和内存指标正常吗?
AI 分析过程:
首先通过正则表达式搜索相关指标:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>list_prometheus_metric_names</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"limit": 100,
"regex": ".*connector.*|.*cpu.*|.*memory.*|.*mem.*"
}
</arguments>
</use_mcp_tool>
然后定位 Connector 服务实例:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "connector_session_online",
"queryType": "instant",
"startRfc3339": "2025-03-28T00:00:00Z"
}
</arguments>
</use_mcp_tool>
接着查询一周内的 CPU 使用趋势:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "sum by(instance) (rate(node_cpu_seconds_total{mode!='idle',instance='172.31.4.168:9100'}[5m]))",
"queryType": "range",
"startRfc3339": "2025-03-21T00:00:00Z",
"endRfc3339": "2025-03-28T23:59:59Z",
"stepSeconds": 3600
}
</arguments>
</use_mcp_tool>
查询内存使用趋势:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "(node_memory_MemTotal_bytes{instance='172.31.4.168:9100'} - node_memory_MemAvailable_bytes{instance='172.31.4.168:9100'}) / node_memory_MemTotal_bytes{instance='172.31.4.168:9100'} * 100",
"queryType": "range",
"startRfc3339": "2025-03-21T00:00:00Z",
"endRfc3339": "2025-03-28T23:59:59Z",
"stepSeconds": 3600
}
</arguments>
</use_mcp_tool>
查询业务负载指标:
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "sum(rate(connector_request_total[5m]))",
"queryType": "range",
"startRfc3339": "2025-03-21T00:00:00Z",
"endRfc3339": "2025-03-28T23:59:59Z",
"stepSeconds": 3600
}
</arguments>
</use_mcp_tool>
<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>query_prometheus</tool_name>
<arguments>
{
"datasourceUid": "lKxuuYv4z",
"expr": "sum(connector_session_online)",
"queryType": "range",
"startRfc3339": "2025-03-21T00:00:00Z",
"endRfc3339": "2025-03-28T23:59:59Z",
"stepSeconds": 3600
}
</arguments>
</use_mcp_tool>
分析结果:
Connector 机器(172.31.4.168)运行状态分析 #
📊 CPU 使用情况
| 时间段 | CPU 使用率范围 | 趋势分析 |
|---|---|---|
| 3月21日 | 1.6核(最低) | 基准水平 |
| 3月22-25日 | 2.0-2.8核 | 稳定运行 |
| 3月26-28日 | 2.8-3.6核(最高) | ⚠️ 明显上升 |
💾 内存使用情况
| 时间段 | 内存使用率 | 状态评估 |
|---|---|---|
| 3月21日 | 15%(最低) | 正常 |
| 3月22日 | 35%(异常峰值) | ⚠️ 需关注 |
| 3月23-25日 | 18-22% | 正常 |
| 3月26-28日 | 22-27% | 轻微上升 |
🔄 业务负载分析
请求量趋势:
- 正常范围:2,000-3,000 请求/秒
- 高峰期:4,500+ 请求/秒(3月26-28日)
- 增长率:最近三天增长约 50%
在线会话数:
- 正常范围:15,000-25,000 会话
- 峰值:31,140 会话(3月27日)
- 趋势:与请求量增长同步
综合健康评估 #
| 指标类别 | 当前状态 | 风险等级 | 建议措施 |
|---|---|---|---|
| CPU 使用率 | 🟡 上升趋势 | 中等 | 持续监控,准备扩容 |
| 内存使用率 | 🟢 安全范围 | 低 | 调查3月22日异常峰值 |
| 业务负载 | 🟡 快速增长 | 中等 | 评估增加实例需求 |
| 整体状态 | 🟢 正常运行 | 低-中等 | 制定扩容计划 |
关键发现与建议 #
🔍 关键发现:
- 负载增长明显:最近三天业务负载显著增加
- 资源利用合理:CPU 和内存使用率仍在安全范围内
- 异常事件:3月22日内存使用率异常峰值需要调查
💡 运维建议:
- 短期监控:密切关注 CPU 使用率趋势,设置 80% 阈值告警
- 容量规划:评估是否需要增加 Connector 实例以分担负载
- 异常调查:排查3月22日内存峰值的根本原因
- 性能优化:考虑优化应用程序以提高资源利用效率
总体评估:Connector 机器目前运行状态正常,但需要关注最近几天负载明显上升的趋势,建议制定预防性扩容计划。
技术价值与应用前景 #
MCP-Grafana 的核心优势 #
🚀 效率提升:
- 将复杂的 PromQL 查询简化为自然语言对话
- 减少运维人员的学习成本和操作复杂度
- 实现快速的问题定位和状态检查
🎯 智能分析:
- AI 自动选择合适的查询策略和时间范围
- 提供结构化的数据分析和趋势判断
- 生成可操作的运维建议
📊 可视化增强:
- 自动生成表格和对比分析
- 提供多维度的数据展示
- 支持历史趋势和实时状态的综合分析
应用场景扩展 #
- 故障排查:快速定位系统异常和性能瓶颈
- 容量规划:基于历史数据预测资源需求
- 性能优化:识别系统优化机会和改进点
- 合规报告:自动生成运维报告和健康检查
未来发展方向 #
- 更智能的异常检测:结合机器学习算法自动识别异常模式
- 预测性维护:基于历史数据预测潜在问题
- 自动化响应:将分析结果与自动化运维工具集成
- 多数据源整合:扩展到更多监控和日志系统
通过 MCP-Grafana 的实战应用,我们看到了 AI 辅助运维的巨大潜力。这种新的运维模式不仅提高了效率,更重要的是降低了技术门槛,让更多人能够参与到系统监控和分析中来。