使用说明
# 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)
- 安装Python 3.12+
- uv安装
- 安装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_namelist_process_groups(...)
审核流(AI生成PromQL)
run_generated_promql必须在用户批准后运行。
- 批准请求
{"question":"...","promql":"...","approved":false}
- 批准后运行
{"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加载失败orPROM_ENV_URLS未设置- 解决方案:
.env设置后重新启动
2) run_check 错误
- PromQL标签/度量名称可能与实际环境不同
- 告知所需的公制名称即可修改
🔒 安全建议
.env,.env.mcp_ssh是 千万不要提交- 内部IP/认证
.env.example仅共享
📄 许可证
必要时请添加。
