К основному содержанию
скилл CX Codex

promql — скилл для Claude Code: запросы PromQL и разбор медленных

Пишет и проверяет запросы PromQL к Prometheus, Mimir и Grafana Cloud Metrics. Помогает, когда p95 считается неверно или запрос тормозит.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add grafana/skills --skill promql -a claude-code
Открыть на GitHub

Что делает promql

Скилл добавляет агенту библиотеку шаблонов PromQL: rate против irate и increase, матчеры меток и регулярки, агрегации sum / avg / topk / by / without, histogram_quantile для классических и нативных гистограмм, отношения с защитой от деления на ноль, absent и changes для устаревших серий, смещения по времени и predict_linear, именование recording-правил, математика SLO и burn-rate. Отдельный раздел — поиск метки, из-за которой раздулась кардинальность.

Работает по шагам. Сначала вы формулируете выражение, потом агент проверяет синтаксис и наличие метрики через /api/v1/query и /api/v1/series, а величину сверяет в Grafana Explore с известным эталоном. Медленную панель дашборда можно превратить в recording-rule: выражение получает имя вида job:http_request_duration_p95:rate5m, правило загружается, новая метрика проверяется тем же запросом, и только потом панель переключается на неё.

Главная ловушка PromQL — окно. rate() и increase() требуют range vector не меньше четырёх интервалов сбора; при сборе раз в 60 секунд берите [5m] как минимум. Если окно меньше, вы получите «No data» и будете искать ошибку в метках, а не в окне. Ещё нужен доступ к эндпоинту Prometheus, Mimir или Grafana Cloud; для Grafana Cloud в каждый curl добавляется basic auth.

Какие задачи решает

  • посчитать долю 5xx по сервисам
  • починить p95, который считается неверно
  • собрать алерт по error budget
  • найти метку, раздувшую кардинальность
  • перевести медленный запрос дашборда в recording-rule

Примеры запросов агенту

  • посчитай error rate по сервисам за 5 минут
  • почему этот запрос тормозит и что заполняет Mimir
  • сделай recording-rule из этого выражения для p95

Как установить promql

1Через Skills CLI (Vercel)

npx skills add grafana/skills --skill promql -a claude-code

2Вручную: положить файлы

~/.claude/skills/promql/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/promql/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о promql

Как установить promql в Claude?

Выполните npx skills add grafana/skills --skill promql -a claude-code. Скилл появится в ~/.claude/skills/promql/SKILL.md.

Что делает скилл promql?

Даёт агенту шаблоны запросов PromQL и порядок проверки: синтаксис, наличие метрики, сверка величины. Плюс разбор частых ошибок вроде NaN из histogram_quantile.

Что нужно для работы скилла?

Эндпоинт Prometheus, Mimir или Grafana Cloud Metrics для запросов. Для Grafana Cloud в curl добавляется basic auth с логином метрик и токеном.

Исходный текст

SKILL.md · Apache-2.0
---
name: promql
license: Apache-2.0
description: Write, validate, and optimize PromQL for Prometheus / Grafana Mimir / Grafana Cloud Metrics. Covers `rate` vs `irate` vs `increase`, label matchers and regex, `sum / avg / topk / by / without` aggregation, classic + native `histogram_quantile`, ratios with divide-by-zero guards, `absent` / `changes` for staleness, time offsets and `predict_linear`, recording-rule naming, SLO + burn-rate math, and a cardinality-hunting playbook. Use when writing a metric query, fixing wrong p95s, building an error-budget alert, debugging "query is slow", finding the noisy label that blew up cardinality, or migrating a dashboard query to a recording rule — even when the user says "calculate the error rate", "p99 latency", "sum by service", "why is this query slow", or "what's filling Mimir" without naming PromQL.
---

# PromQL Query Patterns

> **Docs**: https://prometheus.io/docs/prometheus/latest/querying/basics/

PromQL returns either an **instant vector**, a **range vector**, or a **scalar**.

**Golden rule:** `rate()` / `increase()` require a range vector ≥ 4× the scrape interval. 60s scrape → use `[5m]` minimum.

## Prerequisites

- A Prometheus / Mimir / Grafana Cloud endpoint to query (`/api/v1/query` or via Grafana Explore)
- The PromQL pattern library in [`references/patterns.md`](references/patterns.md)

## Common Workflows

### 1. Write + validate a query

```bash
# 0. Point at your Prometheus/Mimir. For Grafana Cloud, use the metrics endpoint
#    and add basic auth (-u "<metrics_user>:<token>") to each curl below.
PROM=http://localhost:9090   # or https://prometheus-prod-XX.grafana.net/api/prom

# 1. Sketch the query — for "5xx error rate per service":
EXPR='sum(rate(http_requests_total{status_code=~"5.."}[5m])) by (service)'

# 2. Validate syntax + that the metric/labels exist
curl -sG --data-urlencode "query=${EXPR}" \
  "$PROM/api/v1/query" | jq '.status, (.data.result|length)'
# Expect: "success" and result count > 0. If 0 — check label spelling and scrape activity:
curl -sG --data-urlencode "match[]=http_requests_total" "$PROM/api/v1/series" | jq '.data | length'

# 3. Sanity-check the magnitude — open Grafana Explore, paste the expr,
#    confirm the values look right against a known ground truth (k6 run, log count, etc.)
```

### 2. Common patterns to copy

**Per-status request rate** (aggregate AFTER rate):

```promql
sum(rate(http_requests_total{job="api"}[5m])) by (status_code)
```

**p95 latency** (must keep `le` in the inner aggregation):

```promql
histogram_quantile(0.95,
  sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service))
```

**Error rate with divide-by-zero guard:**

```promql
sum(rate(http_requests_total{status_code=~"5.."}[5m]))
  / (sum(rate(http_requests_total[5m])) > 0)
```

Full library (recording rules, SLO burn-rate, offsets, cardinality hunt, native histograms): [`references/patterns.md`](references/patterns.md).

### 3. Convert a slow dashboard query into a recording rule

```yaml
# 1. Pick the slow expression, give it a recording-rule name
groups:
  - name: http_request_rates
    interval: 1m
    rules:
      - record: job:http_request_duration_p95:rate5m
        expr: |
          histogram_quantile(0.95,
            sum(rate(http_request_duration_seconds_bucket[5m])) by (le, job))
```

```bash
# 2. After rules load, verify the new metric exists
curl -sG --data-urlencode "query=job:http_request_duration_p95:rate5m" \
  "$PROM/api/v1/query" | jq '.data.result | length'   # → > 0

# 3. Verify it matches the original expression for at least one sample window
# (Both queries should produce the same value at the same timestamp.)

# 4. Replace the dashboard panel expression with the recording-rule metric.
```

## Common bugs

- `histogram_quantile` returns NaN → forgot `by (le)` in the inner aggregation
- "No data" → check the metric exists (`/api/v1/series`) and the window ≥ 4× scrape interval
- Wrong rate magnitude → counter was aggregated before `rate()` (always `rate()` first)
- Query timeout → series count too high; use `topk(...)` + a recording rule + drop high-cardinality labels (see [`references/patterns.md`](references/patterns.md))

## Resources

- [PromQL basics](https://prometheus.io/docs/prometheus/latest/querying/basics/)
- [Operators](https://prometheus.io/docs/prometheus/latest/querying/operators/)
- [Functions](https://prometheus.io/docs/prometheus/latest/querying/functions/)
- [Grafana Mimir](https://grafana.com/docs/mimir/latest/)

© grafana · Apache-2.0 · grafana/skills

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →
promql-cli samber Скилл учит агента гонять PromQL через CLI promql-cli: instant- и range-запросы, поиск метрик, вывод таблицей, CSV, JSON или графиком. CX Codex +1 4 400установок prometheus-grafana devops-skills Скилл помогает агенту поднять сбор метрик в Prometheus, писать запросы PromQL и собирать панели Grafana. Пригодится, когда в проект нужно добавить мониторинг. CX Codex +1 449установок promql-generator akin-ozer Скилл ведёт агента по шагам планирования и собирает PromQL-запросы, правила алертов и recording rules для Prometheus. CX Codex +1 615установок grafana-dashboards Seth Hobson Скилл помогает создавать Grafana-дашборды для метрик систем и приложений. Подойдёт для мониторинга, SLO и операционных интерфейсов наблюдаемости. CX Codex 13 097установок qdrant-monitoring qdrant Скилл подсказывает, как настроить мониторинг Qdrant и разобраться с зависшим оптимизатором, ростом памяти или медленными запросами. CX Codex +1 1 500установок grafana-dashboard aj-geddes Помогает агенту собирать дашборды Grafana: панели, переменные, алерты и провижининг. Пригодится, когда нужно быстро накидать мониторинг по метрикам. CX Codex +1 494установок

Из того же набора47

dashboarding Скилл собирает и правит JSON дашбордов Grafana и отправляет их в HTTP API. Пригодится, когда панели нужно описать кодом, а не мышкой в UI. CX Codex +1 8 500установок loki Скилл loki от Grafana учит агента писать запросы LogQL и настраивать сбор логов в Loki. Внутри — синтаксис селекторов, парсеров и метрик, архитектура и приём логов через Alloy, Promtail и Fluent Bit. CX Codex +1 7 500установок loki-label-analyzer Разбирает схему меток Grafana Loki: где растёт кардинальность, какие метки мешают запросам и что с ними делать. CX Codex +1 6 300установок opentelemetry Скилл помогает подключить OpenTelemetry к приложению и отправить метрики, логи и трейсы в Grafana Cloud или свой Mimir, Loki, Tempo. CX Codex +1 6 100установок grafana-oss Скилл помогает агенту провизионить дашборды и датасорсы Grafana OSS из YAML, писать JSON панелей и проверять каждый шаг через API. CX Codex +1 5 600установок prometheus Справочник по PromQL, правилам алертов Prometheus и маршрутизации Alertmanager. Помогает генерировать метрики, алерты и правила записи. CX Codex +1 5 200установок alerting-irm Настраивает Grafana Alerting, IRM и SLO: от правил и маршрутизации до дежурств и эскалаций. Пригодится для YAML- и API-конфигурации. CX Codex +1 5 100установок assistant-mcp Помогает подключить ИИ-агентов к Grafana Cloud через MCP-сервер mcp-grafana. Пригодится для чтения метрик, поиска дашбордов и проверки алертов прямо в кодовой базе. CX Codex +1 5 000установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой