MCP 之 Grafana 分析线上运行指标实战指南

MCP 之 Grafana 分析线上运行指标实战指南 #

本文展示了如何使用 Cursor 编辑器结合 MCP-Grafana 工具,通过 AI 对话的方式智能分析线上系统的运行指标。这种新的运维方式让复杂的监控数据查询变得更加直观和高效。

概述 #

在现代运维体系中,监控数据的分析往往需要运维人员具备深厚的 Grafana 操作经验和 Prometheus 查询语言(PromQL)知识。MCP(Model Context Protocol)的出现为这一挑战提供了新的解决方案。

通过 Cursor + MCP-Grafana 的组合,我们可以:

  • 自然语言查询 - 用日常语言描述监控需求
  • 智能数据分析 - AI 自动构建复杂的 PromQL 查询
  • 实时状态监控 - 快速获取系统健康状态
  • 趋势分析 - 深入了解系统性能变化

MCP-Grafana 分析示例

实战案例分析 #

案例一:系统看板概览 #

用户需求:确认目前有哪些看板

AI 分析过程

<use_mcp_tool>
<server_name>tool-grafana</server_name>
<tool_name>search_dashboards</tool_name>
<arguments>
{
  "query": ""
}
</arguments>
</use_mcp_tool>

分析结果

监控文件夹结构 #

文件夹ID用途
AWS19AWS 云服务监控
docker25容器化服务监控
monitor18系统基础监控
nats3消息队列监控

核心仪表盘清单 #

基础设施监控

  • 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>

分析结果

通过查询获得了"业务监控-正式服"的基本元数据信息:

属性
看板 ID30
看板 UID8888888
访问路径/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_totalAPI 网关性能监控

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_bucketGC 性能监控
内存统计go_memstats_alloc_bytes, go_memstats_heap_objects内存使用分析
协程管理go_goroutines并发性能监控
运行时信息go_infoGo 版本和环境信息

应用价值:这些指标为应用程序性能、资源使用情况和系统健康状态提供了全方位的监控能力,支持在 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.14020630.3%
172.31.13.13024936.6%
172.31.4.4122533.1%
总计680100%

消息处理统计 #

入站消息总数

节点 IP入站消息数占比
172.31.1.14018,736,199,96440.8%
172.31.13.13014,815,461,94232.3%
172.31.4.4112,467,602,73727.1%

出站消息总数

节点 IP出站消息数占比
172.31.1.14019,169,173,55740.4%
172.31.13.13015,307,350,76232.2%
172.31.4.4112,989,740,13827.4%

订阅数统计 #

节点 IP订阅数平均每连接订阅数
172.31.1.1403,20115.5
172.31.13.1303,16512.7
172.31.4.413,23214.4

内存使用情况 #

节点 IP内存使用内存使用(MB)
172.31.1.14082,194,432 字节78.4 MB
172.31.13.13093,868,032 字节89.5 MB
172.31.4.4190,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日异常峰值
业务负载🟡 快速增长中等评估增加实例需求
整体状态🟢 正常运行低-中等制定扩容计划

关键发现与建议 #

🔍 关键发现

  1. 负载增长明显:最近三天业务负载显著增加
  2. 资源利用合理:CPU 和内存使用率仍在安全范围内
  3. 异常事件:3月22日内存使用率异常峰值需要调查

💡 运维建议

  1. 短期监控:密切关注 CPU 使用率趋势,设置 80% 阈值告警
  2. 容量规划:评估是否需要增加 Connector 实例以分担负载
  3. 异常调查:排查3月22日内存峰值的根本原因
  4. 性能优化:考虑优化应用程序以提高资源利用效率

总体评估:Connector 机器目前运行状态正常,但需要关注最近几天负载明显上升的趋势,建议制定预防性扩容计划。

技术价值与应用前景 #

MCP-Grafana 的核心优势 #

🚀 效率提升

  • 将复杂的 PromQL 查询简化为自然语言对话
  • 减少运维人员的学习成本和操作复杂度
  • 实现快速的问题定位和状态检查

🎯 智能分析

  • AI 自动选择合适的查询策略和时间范围
  • 提供结构化的数据分析和趋势判断
  • 生成可操作的运维建议

📊 可视化增强

  • 自动生成表格和对比分析
  • 提供多维度的数据展示
  • 支持历史趋势和实时状态的综合分析

应用场景扩展 #

  1. 故障排查:快速定位系统异常和性能瓶颈
  2. 容量规划:基于历史数据预测资源需求
  3. 性能优化:识别系统优化机会和改进点
  4. 合规报告:自动生成运维报告和健康检查

未来发展方向 #

  • 更智能的异常检测:结合机器学习算法自动识别异常模式
  • 预测性维护:基于历史数据预测潜在问题
  • 自动化响应:将分析结果与自动化运维工具集成
  • 多数据源整合:扩展到更多监控和日志系统

通过 MCP-Grafana 的实战应用,我们看到了 AI 辅助运维的巨大潜力。这种新的运维模式不仅提高了效率,更重要的是降低了技术门槛,让更多人能够参与到系统监控和分析中来。