Prometheus监控工具

MCP Tools提供基于Prometheus的监控服务,支持通过自然语言查询执行预定义检查或自定义PromQL,并返回汇总结果,适用于服务器和应用程序监控。

  • by yeonkyu-git
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yeonkyu-git/AI-Agent-MCP

使用说明

# MCP工具(普罗米修斯/SSH)🚀

这个存储库 使用MCP工具提供基于Prometheus的监控进行的项目。
如果操作员用自然语言提问,则执行指定的检查/PromQL并返回摘要结果。


主要功能

  • 🔎 执行预定义检查 (run_check, run_all_checks)
  • 🧠 运行用户PromQL (run_promql)
  • ✅ AI生成PromQL批准流程 (run_generated_promql)
  • 🧭 查看环境列表 (list_environments)
  • 🖥️ 查看服务器列表 (list_servers,基于up+server_name)
  • 🧩 查看流程组列表 (list_process_groups)
  • 📊 进程/DB/网络/插座状态 包括检查

🧱 预准备(基于Windows)

  1. 安装Python 3.12+
  2. uv安装
  3. 安装Node.js+npm (需要Codex CLI)

确认:

python --version
uv --version
node -v
npm -v

📦 安装

# 프로젝트 루트
uv sync

设置环境变量

1) .env 使用文件(推荐)

.env会自动加载。

示例: .env (输入实际操作值)

# Prometheus MCP
PROM_ENV_URLS={"prod":"http://<prom-host>:9090","dev_test":"http://<prom-host>:9090","dr":"http://<prom-host>:9090"}
# PROM_URL="http://<prom-host>:9090"  # optional default
# PROM_BEARER_TOKEN=""                # optional
# PROM_TIMEOUT_SEC="15"

# SSH MCP credentials
SSH_USER=""
SSH_PASS=""
SUDO_PASS=""
SSH_ALLOWLIST=[]

✅ .env是 .gitignore未提交,包括在中。

2)直接设置环境变量

$env:PROM_ENV_URLS='{"prod":"http://10.0.0.1:9090"}'

▶实施

uv run python mcp_prometheus.py

🛠️ 提供工具列表

基本

  • list_environments()
  • list_checks()
  • run_check(...)
  • run_all_checks(...)

PromQL

  • run_promql(...)
  • run_generated_promql(...) ← 需要批准

状态/列表

  • list_servers(...) ← 基于up+server_name
  • list_process_groups(...)

审核流(AI生成PromQL)

run_generated_promql必须在用户批准后运行。

  1. 批准请求
{"question":"...","promql":"...","approved":false}
  1. 批准后运行
{"question":"...","promql":"...","approved":true}

🎯 仅查询特定服务器

run_check, run_all_checks, run_promql, run_generated_promql是
可选 server_name 或 instance只能接收并过滤特定服务器。

示例:

{"check_id":"cpu_avg_pct","server_name":"CMS AP #1"}
{"promql":"up","instance":"10.0.0.12:9100"}

根据持续时间判断警报

百分比系列检查不是单个峰值 持续时间标准以判定警报。

  • Warning:85%以上 连续5分钟以上 持续的时候
  • 紧急:95%以上 连续5分钟以上 持续的时候

必要时 .env可以在中调整以下值:

ALERT_WARN_PCT=85
ALERT_CRIT_PCT=95
ALERT_SUSTAIN_MINUTES=5

📌 检查示例问题

  • “最近15分钟CPU利用率最高的服务器是?”
  • “PostgreSQL QPS有增加的DB吗?”
  • “TCP TIME_WAIT套接字多的服务器是?”
  • “让我看看每个进程组的内存使用量前5名。”

🧯 故障射击

1)环境列表为空

  • .env 加载失败or PROM_ENV_URLS 未设置
  • 解决方案: .env 设置后重新启动

2) run_check 错误

  • PromQL标签/度量名称可能与实际环境不同
  • 告知所需的公制名称即可修改

🔒 安全建议

  • .env, .env.mcp_ssh是 千万不要提交
  • 内部IP/认证 .env.example仅共享

📄 许可证

必要时请添加。