监控MCP服务器
  ](https://pypi.org/project/monitoring-mcp/) ](https://pypi.org/project/monitoring-mcp/)  
   
](https://github.com/sandraschi/monitoring-mcp) ](https://github.com/sandraschi/monitoring-mcp) ](https://github.com/sandraschi/monitoring-mcp/issues)
  
*一个全面的FastMCP 3.1.0驱动的监控服务器,为Grafana、Prometheus和Loki生态系统提供智能操作,并为DevOps工作流程提供会话式AI辅助。*
特性
FastMCP 3.1.0集成
- 会话工具返回 -人工智能友好的响应,具有可操作的见解
- 采样能力 -大型结果集的智能数据采样
- 持久化存储 -用于配置和状态的DiskStore后端
- 生产就绪 -专为高性能监控操作而设计
综合监控工具
Grafana管理 (grafana_management)
- 仪表板操作:列出、创建、更新、删除和分析仪表板
- 数据源查询:对配置的数据源执行查询
- 面板管理:添加和修改仪表板面板
- 警报配置:为仪表板指标设置警报规则
- AI驱动的分析:智能仪表板优化建议
普罗米修斯监控 (prometheus_monitoring)
- 度量查询:使用智能采样执行PromQL查询
- 范围查询:具有自动优化功能的时间序列分析
- 目标健康:监控抓取目标状态和连接
- 警报管理:列出活动警报并管理警报规则
- 性能分析:查询优化和瓶颈检测
洛基测井 (loki_logging)
- 日志查询:使用模式识别执行LogQL查询
- 实时尾随:以可配置的限制流式传输实时日志
- 异常检测:AI驱动的日志模式分析
- 误差相关:将错误日志与系统事件链接
- 请求跟踪:通过日志流跟踪请求流
跨系统相关性 (cross_system_correlation)
- 事件分析:关联度量、日志和跟踪,以进行根本原因分析
- 性能相关性:将性能指标与系统事件联系起来
- 误差相关:跨系统连接错误模式
- 健康评估:综合系统健康评分
- 预测性洞察:基于人工智能的趋势分析和建议
状态和健康监测 (monitoring_status)
- 系统健康检查:对所有系统进行全面的健康评估
- 连接性测试:验证与所有监控组件的连接
- 配置验证:验证系统配置和设置
- 数据流监控:检查监控系统之间的数据流
- 警报状态:监控警报系统运行状况和活动警报
人工智能驱动的智能
- 会话响应:自然语言摘要和可操作的见解
- 智能采样:大型数据集的自动数据缩减
- 根本原因分析:人工智能辅助事件调查
- 优化建议:性能和配置建议
- 模式识别:自动异常检测和趋势分析
企业功能
- 持久配置:具有平台感知路径的加密存储
- 速率限制:智能请求限制和错误处理
- 结构化日志记录:具有丰富上下文的JSON格式日志
- 错误恢复:优雅的降级和自动重试逻辑
- 安全:API密钥管理的身份验证支持
会话用法示例
这些示例展示了用户如何通过自然语言对话与监控MCP服务器交互,就像您在Claude Desktop或其他启用MCP的应用程序中一样。
系统健康检查对话
用户: “检查我的监控系统的整体运行状况”
监控MCP响应:
“我发现你的监控系统基本上是健康的! 系统状态:已降级 (4个成分中有3个健康) 格拉法纳:健康(12个仪表板,配置了3个数据源) 普罗米修斯:健康(247个目标,98%以上) 洛基:不健康(连接超时-检查Loki服务是否正在运行) 总体:1个问题需要注意 建议: 启动Loki服务并运行连接测试以验证修复。"
______________________________________________________________________
事故调查对话
用户: “我们的API响应时间在今天下午3点15分激增。你能帮我调查发生了什么吗?”
监控MCP响应:
“我将在下午3点15分调查API响应时间峰值。让我关联度量、日志和系统事件。 时间线分析: - 下午3时15分:API延迟从45毫秒跃升至890毫秒 - 指标:web-01服务器上的内存使用率飙升至92% - 日志:web api服务中出现多个“超出GC开销限制”错误 已确定根本原因: 内存压力引发了垃圾收集风暴,导致响应延迟。 证据: - 内存使用率:92%(阈值:80%) - GC暂停时间:450ms(正常:\ - 错误日志:5分钟窗口内出现47个“GC开销”异常 建议: 1. 扩展web-01实例(当前为t3.media) 1. 调整JVM GC设置(-XX:+使用G1GC-XX:最大GCPauseMillis=100) 1. 在75%阈值时添加内存监控警报”
______________________________________________________________________
性能分析对话
用户: “为什么本周我们的数据库查询性能下降了?”
监控MCP响应:
“过去一周,我分析了您的数据库性能。以下是我的发现: 性能趋势: 查询响应时间缩短23% 关键指标: - 平均查询时间:450毫秒(高于320毫秒) - 慢速查询(>1s):占总数的15%(高于8%) - 连接池利用率:89%(高于72%) 相关事件: - 星期二下午2:30:数据库重新启动(维护窗口) - 星期三:索引重建已完成(预期性能下降) - 星期五:连接池多次耗尽 性能洞察: 1. 连接池争用:89%的利用率表明池大小需要增加 1. 索引碎片:最近的重建显示出40%的改进潜力 1. 记忆压力:缓冲区缓存命中率降至87% 行动项目: - 将连接池大小增加25% - 安排定期指标维护 - 添加对连接池利用率>80%的监控”
______________________________________________________________________
日志分析对话
用户: “我在日志中看到身份验证失败。你能分析一下模式吗?”
监控MCP响应:
“我分析了您在过去24小时内的身份验证失败模式: 摘要: 检测到1247次登录尝试失败 主要故障原因: - 无效凭证68%(851次尝试)-正常用户错误 - 帐户已锁定:22%(275次尝试)-暴力保护 - 过期令牌:8%(100次尝试)-会话超时 - IP已阻止:2%(21次尝试)-安全措施 检测到可疑模式: - IP地址192.168.1.100:10分钟内连续45次失败 - 用户“admin”:针对89个不同的IP - 时间模式:UTC凌晨2点至4点之间的峰值故障 安全建议: 1. 临时阻止IP 192.168.1.100(暴力破解尝试) 1. 对登录失败实施渐进式延迟 1. 为可疑区域添加地理封锁 1. 为管理员帐户启用MFA”
______________________________________________________________________
仪表板创建对话
用户: “创建一个显示我们的服务健康状况概览的仪表板”
监控MCP响应:
“我将为您创建一个全面的服务健康仪表板! 已创建仪表板: '服务运行状况概述' UID: svc-health-2024 面板包括: 1. 服务状态网格 -所有服务的实时健康状况 1. 错误率趋势 -1h、24h、7d误差率图 1. 响应时间分布 -P50、P95、P99延迟指标 1. 资源利用 -CPU、内存、磁盘、网络使用情况 1. 警报摘要 -按严重程度列出的活动警报 1. 主要错误源 -产生最多错误的服务 已连接的数据源: - 普罗米修斯(指标) - 洛基(原木) - Grafana(可视化) 自动刷新: 30秒 时间范围: 最后1小时 访问权限: 可在 /d/svc-health-2024/service-health-overview 仪表板现已上线,将帮助您一目了然地监控服务健康状况!"______________________________________________________________________
配置验证对话
用户: “验证我的监控配置是否正确”
监控MCP响应:
“让我检查所有组件的监控系统配置: 配置验证结果: 全部有效 格拉法纳http://grafana:3000): - API连接已确认 - 配置了3个数据源(Prometheus、Loki、TestData) - 12个可用仪表板 - 管理员权限已验证 普罗米修斯(http://prometheus:9090): - 查询API响应 - 已配置247个刮擦目标 - 98%的目标健康状况(243/247上升) - 45条警报规则处于活动状态 洛基(http://loki:3100): - LogQL API函数 - 8个不同的日志流 - 摄入2.3GB日志(过去24小时) - 保留政策:30天 跨系统集成: - Grafana可以查询普罗米修斯数据 - Grafana可以查询洛基日志 - 已配置警报路由 - 仪表板链接功能正常 建议: 1. 4个不健康的目标 普罗米修斯需要调查 1. 考虑提高保留率 如果您需要更长的日志历史记录 1. 添加更多警报规则 关键服务 您的监控堆栈已正确配置并可运行! "
______________________________________________________________________
API使用示例
对于直接与MCP工具集成的开发人员:
Grafana仪表板管理
# List all dashboards
await grafana_management(operation="list_dashboards")
# Create a new dashboard
await grafana_management(
operation="create_dashboard",
dashboard_data={
"title": "System Overview",
"tags": ["system", "overview"],
"panels": [...]
}
)普罗米修斯指标分析
# Query system CPU usage
await prometheus_monitoring(
operation="query_metrics",
query="100 - (avg by(instance) (irate(node_cpu_seconds_total{mode='idle'}[5m])) * 100)"
)洛基测井分析
# Search for error patterns
await loki_logging(
operation="search_errors",
query='{job="web-api"} |= "ERROR" or "Exception"'
)跨系统事件分析
# Correlate incident data
await cross_system_correlation(
operation="correlate_incident",
incident_description="API response times spiked"
)健康监测
# Check overall system health
await monitoring_status(operation="system_health")安装
先决条件
- 紫外线 已安装(推荐)
- Python 3.12+
快速开始
立即通过运行 uvx:
uvx monitoring-mcpClaude桌面集成
添加到您的 claude_desktop_config.json:
"mcpServers": {
"monitoring-mcp": {
"command": "uv",
"args": ["--directory", "D:/Dev/repos/monitoring-mcp", "run", "monitoring-mcp"]
}
}先决条件
- Python 3.10+
- 访问Grafana、Prometheus和洛基实例
- FastMCP 3.1.0+(自动安装)
来自PyPI(推荐)
pip install monitoring-mcp来源
git clone https://github.com/sandraschi/monitoring-mcp.git
cd monitoring-mcp
uv pip install -e .[dev]配置
创建一个 .env 文件或设置环境变量:
# Monitoring endpoints
MONITORING_MCP_GRAFANA_URL=http://localhost:3000
MONITORING_MCP_PROMETHEUS_URL=http://localhost:9090
MONITORING_MCP_LOKI_URL=http://localhost:3100
# Authentication (optional)
MONITORING_MCP_GRAFANA_API_KEY=your_grafana_api_key
MONITORING_MCP_GRAFANA_USERNAME=your_username
MONITORING_MCP_GRAFANA_PASSWORD=your_password
# Performance settings
MONITORING_MCP_REQUEST_TIMEOUT=30
MONITORING_MCP_MAX_CONCURRENT_REQUESTS=10
MONITORING_MCP_MAX_RESULTS_LIMIT=1000
# Sampling configuration
MONITORING_MCP_ENABLE_SAMPLING=true
MONITORING_MCP_SAMPLING_THRESHOLD=10000
MONITORING_MCP_SAMPLING_RATE=0.1配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MONITORING_MCP_GRAFANA_URL | Grafana服务器URL | http://localhost:3000 |
MONITORING_MCP_PROMETHEUS_URL | Prometheus服务器URL | http://localhost:9090 |
MONITORING_MCP_LOKI_URL | 洛基服务器URL | http://localhost:3100 |
MONITORING_MCP_REQUEST_TIMEOUT | 请求超时(秒) | 30 |
MONITORING_MCP_MAX_RESULTS_LIMIT | 每次查询的最大结果数 | 1000 |
MONITORING_MCP_ENABLE_SAMPLING | 启用智能采样 | true |
认证
Grafana身份验证
- API密钥 (推荐):设置
MONITORING_MCP_GRAFANA_API_KEY - 用户名/密码:设置两者
MONITORING_MCP_GRAFANA_USERNAME和MONITORING_MCP_GRAFANA_PASSWORD
普罗米修斯和洛基
- 当前使用直接HTTP访问(本地设置不需要身份验证)
- 对于生产部署,配置具有身份验证的反向代理
快速开始
1.启动服务器
# Using the installed package
monitoring-mcp
# Or directly with Python
python -m monitoring_mcp2.配置克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"monitoring": {
"command": "python",
"args": ["-m", "monitoring_mcp"],
"env": {
"MONITORING_MCP_GRAFANA_URL": "http://your-grafana:3000",
"MONITORING_MCP_PROMETHEUS_URL": "http://your-prometheus:9090",
"MONITORING_MCP_LOKI_URL": "http://your-loki:3100"
}
}
}
}3.测试连接
# Check system health
result = await monitoring_status(operation="system_health")
print(f"System status: {result['health_status']['overall_status']}")
# Query a simple metric
result = await prometheus_monitoring(
operation="query_metrics",
query="up"
)
print(f"Found {result['result_count']} metric series")监控架构
Monitoring MCP Server
Portmanteau Tools
Grafana Prometheus Loki
Management Monitoring Logging
Grafana Promethe Loki
Dashboards us Met- Logs
& Panels rics & Analysis
Alerts
Cross-System
Correlation Engine
Incident Analysis
Root Cause Detection
Performance Insights
Health Assessment
工具参考
Grafana管理(grafana_management)
| 操作 | 说明 |
|---|---|
list_dashboards | 列出所有带有元数据的仪表板 |
get_dashboard | 检索特定仪表板 |
create_dashboard | 创建新仪表板 |
update_dashboard | 修改现有仪表板 |
delete_dashboard | 删除仪表板 |
search_dashboards | 按条件搜索仪表板 |
list_datasources | 列出已配置的数据源 |
query_datasource | 对数据源执行查询 |
analyze_dashboard | 基于人工智能的仪表板分析 |
普罗米修斯监控(prometheus_monitoring)
| 操作 | 说明 |
|---|---|
query_metrics | 执行即时PromQL查询 |
query_range | 执行范围PromQL查询 |
list_targets | 列出抓取目标和状态 |
get_target_health | 检查特定目标健康状况 |
list_rules | 列出警报和记录规则 |
list_alerts | 列出活动警报 |
analyze_metrics | 基于人工智能的指标分析 |
optimize_queries | 查询优化建议 |
洛基测井(loki_logging)
| 操作 | 说明 |
|---|---|
query_logs | 执行即时LogQL查询 |
query_range | 执行范围LogQL查询 |
tail_logs | 流式传输实时日志 |
analyze_logs | 基于AI的日志模式分析 |
detect_anomalies | 识别异常日志模式 |
search_errors | 查找错误消息和异常 |
trace_requests | 跟踪请求跟踪 |
get_labels | 列出可用日志标签 |
跨系统相关性(cross_system_correlation)
| 操作 | 说明 |
|---|---|
correlate_incident | 分析跨系统的事件 |
find_root_cause | 人工智能驱动的根本原因分析 |
performance_correlation | 将绩效与事件联系起来 |
error_correlation | 连接错误模式 |
health_assessment | 综合系统健康 |
service_dependency_map | 映射服务关系 |
状态监控(monitoring_status)
| 操作 | 说明 |
|---|---|
system_health | 整体系统健康检查 |
connectivity_test | 测试系统连接性 |
configuration_validation | 验证配置 |
performance_metrics | 监控系统性能 |
data_flow_status | 检查数据流健康状况 |
alert_status | 监控警报系统 |
发展
   
  
设置开发环境
# Install development dependencies
uv pip install -e .[dev]
# Run tests
pytest
# Run linting
ruff check .
# Format code
ruff format .
# Type checking
mypy src/测试
# Run all tests
pytest
# Run with coverage
pytest --cov=monitoring_mcp --cov-report=html
# Run specific test category
pytest tests/unit/ -v
pytest tests/integration/ -vDocker开发
# Build development image
docker build -t monitoring-mcp:dev -f Dockerfile.dev .
# Run with hot reload
docker run -p 8000:8000 -v $(pwd):/app monitoring-mcp:dev文档
指南和文件
- API 参考 -完整的API文件
- Grafana集成 -Grafana特定指南
- 普罗米修斯查询 -PromQL实践
- 洛基查询 -LogQL模式和示例
- 相关性分析 -跨系统分析技术
- 故障排除 -常见问题和解决方案
架构文档
贡献
我们欢迎捐款!请查看我们的 贡献指南 了解详情。
开发流程
- 分叉存储库
- 创建要素分支(
git checkout -b feature/-feature) - 通过全面的测试进行更改
- 运行完整的测试套件:
make test-all - 根据需要更新文档
- 提交拉取请求
代码规范
- FastMCP 3.1.0+:使用最新功能和模式
- 类型提示:需要全类型覆盖
- 异步优先:在适当的情况下,所有操作都应该是异步的
- 对话式:工具响应应该对人工智能友好
- 文档:综合文档和示例
🛡️ 工业级质量堆栈
该项目坚持 索塔14.1 高保真代理编排的工业标准:
- Python(核心): 拉夫 用于裁剪和格式化。零容忍
print核心处理程序中的语句(T201). - Web应用程序(用户界面): 生物群系 用于亚毫秒级的起毛。严格
noConsoleLog执行。 - 协议遵从:硬化
stdout/stderr隔离,以确保防崩溃的JSON-RPC通信。 - 自动化: Justfile 所有舰队行动的食谱(
just lint,just fix,just dev). - 安全:通过以下方式进行自动化审计
bandit和safety.
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- FastMCP团队 -对于优秀的MCP框架
- Grafana实验室 -对于格拉法娜、普罗米修斯和洛基
- 开放遥测社区 -对于可观测性标准
- Pydantic团队 -用于强大的数据验证
______________________________________________________________________
使用FastMCP 3.1.0构建,用于智能监控操作
