mcpField
P
prometheus-api

prometheus-api

github.com/julianobarbosa云与 DevOps1459 次安装2 天前更新
代码仓库

关于 prometheus-api

用于通过 HTTP API 查询 Prometheus 监控系统的技能,并提供查询和健康检查脚本,适合检查指标、目标、告警与系统状态。

主要功能

  1. 01即时查询与区间查询
  2. 02序列、标签和元数据查询
  3. 03查看目标、告警与规则
  4. 04访问 Prometheus 状态端点
  5. 05查询和健康检查脚本

适用场景

  1. 01检查某一时刻的指标
  2. 02追踪一段时间内的指标值
  3. 03检查活动目标与告警
  4. 04查看 Prometheus 运行时和 TSDB 状态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill prometheus-api

安装后在 Claude Code 中输入/prometheus-api确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api_reference.md
promql_functions.md
scripts/
prom_health.py
prom_metadata.py
prom_query.py

详细介绍

Prometheus API 技能

通过 /api/v1 的 HTTP API 查询 Prometheus 监控系统。

快速参考

即时查询
curl 'http://<prometheus>:9090/api/v1/query?query=<promql>&time=<timestamp>'
范围查询
curl 'http://<prometheus>:9090/api/v1/query_range?query=<promql>&start=<ts>&end=<ts>&step=<duration>'

响应格式

所有响应均返回 JSON:

{
  "status": "success" | "error",
  "data": <result>,
  "errorType": "<string>",
  "error": "<string>",
  "warnings": ["<string>"]
}

HTTP 状态码:400(参数错误)、422(表达式错误)、503(超时)。

查询端点

端点用途关键参数
/api/v1/query即时查询query、time、timeout、limit
/api/v1/query_range范围查询query、start、end、step、timeout、limit
/api/v1/format_query格式化 PromQLquery
/api/v1/series按标签查找时间序列match[]、start、end、limit
/api/v1/labels列出标签名称start、end、match[]、limit
/api/v1/label/<name>/values标签值start、end、match[]、limit
/api/v1/query_exemplars查询示例数据query、start、end

元数据与状态端点

端点用途
/api/v1/targets目标发现状态(state=active|dropped|any)
/api/v1/targets/metadata来自目标的指标元数据
/api/v1/metadata所有指标元数据
/api/v1/rules告警规则/记录规则
/api/v1/alerts活动告警
/api/v1/alertmanagersAlertmanager 发现信息
/api/v1/status/config当前配置 YAML
/api/v1/status/flags命令行标志
/api/v1/status/runtimeinfo运行时信息
/api/v1/status/buildinfo构建信息
/api/v1/status/tsdbTSDB 基数统计信息
/api/v1/status/walreplayWAL 重放进度

管理端点(需要 --web.enable-admin-api)

端点方法用途
/api/v1/admin/tsdb/snapshotPOST创建 TSDB 快照
/api/v1/admin/tsdb/delete_seriesPOST删除时间序列(match[]、start、end)
/api/v1/admin/tsdb/clean_tombstonesPOST清理已删除的数据

常见 PromQL 模式

# Rate of counter over 5m
rate(http_requests_total[5m])

# Sum by label
sum by (job) (rate(http_requests_total[5m]))

# Percentile from histogram
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))

# Filter by label
up{job="prometheus", instance=~".*:9090"}

# Increase over time
increase(http_requests_total[1h])

# Average over time range
avg_over_time(process_cpu_seconds_total[5m])

结果类型

  • vector:[{"metric": {...}, "value": [timestamp, "value"]}]
  • matrix:[{"metric": {...}, "values": [[ts, "val"], ...]}]
  • scalar:[timestamp, "value"]
  • string:[timestamp, "string"]

脚本

查询脚本:scripts/prom_query.py

# Instant query
python scripts/prom_query.py http://localhost:9090 'up'

# Range query
python scripts/prom_query.py http://localhost:9090 'rate(http_requests_total[5m])' \
  --start '2024-01-01T00:00:00Z' --end '2024-01-01T01:00:00Z' --step '1m'

# Output: table, json, csv
python scripts/prom_query.py http://localhost:9090 'up' --format table

健康检查:scripts/prom_health.py

python scripts/prom_health.py http://localhost:9090

详细参考

完整 API 文档:references/api_reference.md

PromQL 函数:references/promql_functions.md

评论

支持 Markdown