Prometheus查询服务

MCP Prometheus Server是一个为Prometheus监控系统设计的服务器,使AI语言模型能够查询指标、分析时间序列数据并从Prometheus检索元数据。

  • by vilosource
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 vilosource/mcp-prometheus

使用说明

MCP普罗米修斯服务器

普罗米修斯监控系统的模型上下文协议(MCP)服务器。该服务器使AI语言模型能够查询指标、分析时间序列数据,并从Prometheus检索元数据。

文档

特性

  • 即时查询:在单个时间点执行PromQL查询
  • 范围查询:查询时间范围内的指标以进行趋势分析
  • 元数据发现:探索可用的指标、标签和目标
  • 系列探索:查找与标签选择器匹配的时间序列
  • 目标信息:查看抓取目标运行状况和配置
  • 缓存:为频繁访问的元数据内置缓存

安装

使用pip

pip install -e .

使用Docker

docker build -t mcp-prometheus .
docker run -p 8000:8000 --env-file .env mcp-prometheus

配置

创建一个 .env 文件基于 .env.example:

# Required
PROMETHEUS_URL=http://localhost:9090

# Optional authentication
PROMETHEUS_USERNAME=admin
PROMETHEUS_PASSWORD=password

# Optional settings
PROMETHEUS_TIMEOUT=30
PROMETHEUS_VERIFY_SSL=true

用法

命令行

# Run with stdio transport (default)
mcp-prometheus

# Run with SSE transport
mcp-prometheus --transport sse --port 8000

# With custom Prometheus URL
mcp-prometheus --prometheus-url http://prometheus.example.com:9090

# With authentication
mcp-prometheus --prometheus-username admin --prometheus-password secret

可用工具

  1. 怎么翻译:执行即时查询

    query(query="up", time="2024-01-01T00:00:00Z")
    
  2. query_range:执行范围查询

    query_range(query="rate(http_requests_total[5m])", start="1h", end="now", step="1m")
    
  3. 系列:通过标签选择器查找系列

    series(match=["up", "http_requests_total{job=\"api\"}"])
    
  4. 标签:获取所有标签名称

    labels()
    
  5. 标签值:获取特定标签的值

    label_values(label_name="job")
    
  6. 目标:获取抓取目标信息

    targets()
    
  7. 元数据:获取度量元数据

    metadata(metric="http_requests_total", limit=10)
    

查询示例

基本指标

  • up -目标向上状态
  • process_cpu_seconds_total -CPU使用率
  • node_memory_MemAvailable_bytes -可用内存

费率计算

  • rate(http_requests_total[5m]) -请求速率超过5分钟
  • irate(cpu_usage_seconds_total[1m]) -即时CPU速率

聚合

  • sum by (job) (up) -按工作统计目标
  • avg(node_load1) -平均1分钟负载

发展

运行测试

pytest tests/

代码的风格

# Format code
black src/

# Lint
ruff check src/

许可证

与父项目相同。