home / skills / julianobarbosa / claude-code-skills / prometheus-skill
This skill queries Prometheus http api for instant/range queries, metadata, and alerts to troubleshoot monitoring and retrieve metrics efficiently.
npx playbooks add skill julianobarbosa/claude-code-skills --skill prometheus-skillReview the files below or copy the command above to add this skill to your agents.
---
name: prometheus-api
description: Query and interact with Prometheus HTTP API for monitoring data. Use when Claude needs to query Prometheus metrics, execute PromQL queries, retrieve targets/alerts/rules status, access metadata about series/labels, manage TSDB operations, or troubleshoot monitoring infrastructure. Supports instant queries, range queries, metadata endpoints, admin APIs, and alerting information.
---
# Prometheus API Skill
Query Prometheus monitoring systems via HTTP API at `/api/v1`.
## Quick Reference
### Instant Query
```bash
curl 'http://<prometheus>:9090/api/v1/query?query=<promql>&time=<timestamp>'
```
### Range Query
```bash
curl 'http://<prometheus>:9090/api/v1/query_range?query=<promql>&start=<ts>&end=<ts>&step=<duration>'
```
## Response Format
All responses return JSON:
```json
{
"status": "success" | "error",
"data": <result>,
"errorType": "<string>",
"error": "<string>",
"warnings": ["<string>"]
}
```
HTTP codes: `400` (bad params), `422` (expression error), `503` (timeout).
## Query Endpoints
| Endpoint | Purpose | Key Parameters |
|----------|---------|----------------|
| `/api/v1/query` | Instant query | `query`, `time`, `timeout`, `limit` |
| `/api/v1/query_range` | Range query | `query`, `start`, `end`, `step`, `timeout`, `limit` |
| `/api/v1/format_query` | Format PromQL | `query` |
| `/api/v1/series` | Find series by labels | `match[]`, `start`, `end`, `limit` |
| `/api/v1/labels` | List label names | `start`, `end`, `match[]`, `limit` |
| `/api/v1/label/<name>/values` | Label values | `start`, `end`, `match[]`, `limit` |
| `/api/v1/query_exemplars` | Query exemplars | `query`, `start`, `end` |
## Metadata & Status Endpoints
| Endpoint | Purpose |
|----------|---------|
| `/api/v1/targets` | Target discovery status (`state=active\|dropped\|any`) |
| `/api/v1/targets/metadata` | Metric metadata from targets |
| `/api/v1/metadata` | All metric metadata |
| `/api/v1/rules` | Alerting/recording rules |
| `/api/v1/alerts` | Active alerts |
| `/api/v1/alertmanagers` | Alertmanager discovery |
| `/api/v1/status/config` | Current config YAML |
| `/api/v1/status/flags` | CLI flags |
| `/api/v1/status/runtimeinfo` | Runtime info |
| `/api/v1/status/buildinfo` | Build info |
| `/api/v1/status/tsdb` | TSDB cardinality stats |
| `/api/v1/status/walreplay` | WAL replay progress |
## Admin Endpoints (require `--web.enable-admin-api`)
| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/api/v1/admin/tsdb/snapshot` | POST | Create TSDB snapshot |
| `/api/v1/admin/tsdb/delete_series` | POST | Delete series (`match[]`, `start`, `end`) |
| `/api/v1/admin/tsdb/clean_tombstones` | POST | Clean deleted data |
## Common PromQL Patterns
```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])
```
## Result Types
- **vector**: `[{"metric": {...}, "value": [timestamp, "value"]}]`
- **matrix**: `[{"metric": {...}, "values": [[ts, "val"], ...]}]`
- **scalar**: `[timestamp, "value"]`
- **string**: `[timestamp, "string"]`
## Scripts
Query script: `scripts/prom_query.py`
```bash
# 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
```
Health check: `scripts/prom_health.py`
```bash
python scripts/prom_health.py http://localhost:9090
```
## Detailed Reference
For complete API documentation: [references/api_reference.md](references/api_reference.md)
For PromQL functions: [references/promql_functions.md](references/promql_functions.md)
This skill lets the agent query and interact with a Prometheus HTTP API to retrieve monitoring metrics, metadata, alerts, and TSDB/admin information. It supports instant and range PromQL queries, metadata and status endpoints, and admin TSDB operations when enabled. Use it to inspect series, labels, targets, rules, and alertmanager discovery for troubleshooting and automation.
The skill issues HTTP requests to Prometheus API endpoints under /api/v1 and parses JSON responses into structured results. It supports instant queries (/query), range queries (/query_range), metadata endpoints (/series, /labels, /label/<name>/values), status endpoints (/status/*), alerting endpoints (/alerts, /rules), and admin TSDB operations when the admin API is enabled. Error states and warnings are surfaced from the Prometheus JSON status and HTTP codes.
What response types can I expect from queries?
Prometheus returns vector, matrix, scalar, or string result types wrapped in a JSON status payload with optional warnings.
Which HTTP errors should I handle?
Handle 400 for bad parameters, 422 for PromQL expression errors, and 503 for timeouts; also surface error and errorType fields from the JSON body.