项目简介

这是一个基于 Model Context Protocol (MCP) 实现的服务器,旨在将 Prometheus 的监控和时序数据能力暴露给大型语言模型 (LLMs)。通过此服务器,LLMs 可以利用 Prometheus API 执行查询、获取告警、规则、状态等信息,从而增强其在监控和运维场景下的能力。

主要功能点

  • 执行 PromQL 查询: 允许 LLM 执行即时 PromQL 查询并获取结果。
  • 获取 TSDB 统计: 提供 Prometheus 时序数据库 (TSDB) 的使用和基数统计信息。
  • 列出告警: 获取当前所有活动的 Prometheus 告警。
  • 列出规则: 获取所有已加载的告警规则和记录规则。
  • 获取运行时信息: 提供 Prometheus 进程的运行时信息。
  • 获取构建信息: 提供 Prometheus 服务器的构建版本信息。
  • 获取目标状态: 提供 Prometheus 抓取目标的发现和运行状态概述。
  • 获取告警管理器状态: 提供 Prometheus 告警管理器 (Alertmanager) 的发现状态概述。
  • 获取 WAL 回放状态: 获取当前 Write-Ahead Log (WAL) 的回放状态。
  • 获取运行时标志: 提供 Prometheus 进程启动时使用的各项标志(flags)。

(注:资源 (Resources) 和 Prompt 模板 (Prompts) 功能目前尚未实现。)

安装步骤

  1. 环境准备: 确保您的系统已安装 Go 编程环境、GNU Make,以及容器运行时(如 Podman 或 Docker)。
  2. 获取代码: 克隆 GitHub 仓库到本地。
    git clone https://github.com/tjhop/prometheus-mcp-server.git
    cd prometheus-mcp-server
  3. 构建二进制文件: 使用 Makefile 构建服务器的可执行文件。
    make binary
    这会在当前目录或 './bin' 目录生成名为 'prometheus-mcp-server' 的二进制文件。

服务器配置 (为MCP客户端准备)

MCP 服务器通常由 MCP 客户端(如基于 Ollama 的客户端、'mcphost' 或 'mcp-inspector')启动和管理。您需要在 MCP 客户端的配置文件中指定如何启动此 Prometheus MCP 服务器。配置信息通常是 JSON 格式,包含服务器名称、启动命令等。

以下是供 MCP 客户端参考的配置信息:

{
  "name": "prometheus-mcp-server",
  "command": "prometheus-mcp-server",
  "args": []
}
  • 'name': MCP 服务器的唯一名称,客户端用来标识它。
  • 'command': MCP 服务器可执行文件的路径。如果二进制文件在系统的 PATH 环境变量中,只需提供文件名即可。否则,需要提供完整路径(例如,'./prometheus-mcp-server' 或 '/path/to/your/binary/prometheus-mcp-server')。
  • 'args': 启动 MCP 服务器时需要传递的命令行参数列表。对于此服务器,通常无需特殊参数。

在实际使用时,您需要将这些信息整合到您选择的 MCP 客户端工具的配置文件中(例如 README 中提到的 'mcp.json' 示例文件)。

基本使用方法

  1. 启动 Prometheus: 确保有一个运行中的 Prometheus 实例,并且可以通过 'http://127.0.0.1:9090' 访问其 API (注意:目前的服务器代码硬编码连接此地址)。
  2. 启动 MCP 客户端: 使用支持 MCP 的 LLM 客户端工具(如配置好的 Ollama 集成、'mcphost' 或 'mcp-inspector')启动,并加载您配置好的包含 Prometheus MCP 服务器信息的配置文件。
  3. 与 LLM 交互: 通过您的 LLM 界面,向模型提出与 Prometheus 数据相关的问题或指令,例如:
    • "请告诉我 Prometheus 的构建信息。" (会调用 'build_info' 工具)
    • "执行 PromQL 查询 'up'。" (会调用 'execute_query' 工具,参数为 'query="up"')
    • "列出所有活动的告警。" (会调用 'list_alerts' 工具)
    • "获取 TSDB 的统计数据。" (会调用 'tsdb_stats' 工具)

LLM 客户端会识别这些请求,并通过 MCP 协议调用 Prometheus MCP 服务器中对应的工具来获取信息,并将结果返回给 LLM 进行处理和响应。

信息

分类

开发者工具