Перейти к содержанию

GrafanaSmith — дашборды, сгенерированные AI

Представьте: вам нужно сделать дашборд для PostgreSQL-кластера. Потом для Redis. Потом для Kafka. И ещё для десяти сервисов. Каждый раз — открывать Grafana, тащить панели, вспоминать метрики, настраивать PromQL, пороги, переменные.

GrafanaSmith делает это за вас. Это не библиотека и не тулза командной строки. Это Skill — файл SKILL.md, который загружается в AI-агента (opencode, Claude Code, Cursor, любой другой с поддержкой skills) и превращает описание сервиса в готовый JSON дашборда.

Как это работает

Вы даёте агенту три вещи:

  1. scrape_configs — Prometheus-конфиг сервиса (job_name, метрики, лейблы).
  2. service_description — что за сервис и как развёрнут (single, кластер, primary-replica).
  3. контекст — окружение, SLO, ожидаемая нагрузка.

Агент с загруженным скиллом парсит конфиг, определяет тип сервиса (по метрикам — pg_* значит PostgreSQL, redis_* значит Redis), подгружает шаблон из templates/ и генерирует:

  • полный JSON дашборда с панелями, переменными, порогами.
  • все PromQL-запросы уже написаны под конкретный тип сервиса.
  • переменные: $datasource, $job, $instance, плюс специфичные (для PostgreSQL — $datname, для Kafka — $topic).
  • опционально: SLO-панели и алерт-правила.

Встроенные шаблоны сервисов

GrafanaSmith поставляется с девятью шаблонами:

  • PostgreSQL
  • MySQL / MariaDB
  • Redis
  • Kafka
  • NGINX
  • PowerDNS
  • Node Exporter (универсальный хост)
  • Kubernetes Pods (kube-state-metrics + cAdvisor)
  • Универсальный fallback (Golden Signals — QPS, latency, errors, saturation)

Каждый шаблон — это файл .md в папке templates/. Добавить новый сервис означает создать ещё один такой же.

Конкретный пример: генерируем дашборд для PostgreSQL

Покажу как это выглядит на практике. Вот scrape_configs для PostgreSQL:

scrape_configs:
  - job_name: postgres-exporter
    scrape_interval: 15s
    static_configs:
      - targets:
          - pg-primary.internal:9187
          - pg-replica-1.internal:9187
          - pg-replica-2.internal:9187

Описание сервиса для агента:

Сервис: PostgreSQL 16
Развёртывание: primary + 2 read-only реплики
Окружение: production
SLO: 99.95% доступности, P95 latency < 50ms
Провайдер: bare metal
Ожидаемая нагрузка: 15000 QPS

Агент с GrafanaSmith загружает шаблон PostgreSQL, парсит конфиг и генерирует JSON дашборда из 4 строк (rows):

Row 1 — Overview: - Stat: количество активных соединений к primary - Stat: репликационное отставание (lag) на каждой реплике - Stat: версия PostgreSQL и аптайм

Row 2 — Performance: - Time Series: QPS по типам запросов (SELECT/INSERT/UPDATE/DELETE) - Time Series: количество транзакций (committed vs rolled back) - Time Series: P50/P95/P99 latency запросов

Row 3 — Resource Usage: - Time Series: количество блокировок - Bar Gauge: самые медленные запросы - Time Series: temporary files — размер и скорость создания

Row 4 — Replication & WAL: - Time Series: отставание репликации в байтах - Time Series: скорость записи WAL - Stat: статус каждой реплики (streaming/paused/catching up)

Все PromQL-запросы, пороги и переменные уже в JSON. Вам остаётся только импортировать дашборд в Grafana.

Пример того, как выглядит сгенерированная переменная $datname (имя базы данных):

{
  "name": "datname",
  "label": "Database",
  "type": "query",
  "datasource": "$datasource",
  "query": "pg_stat_database",
  "multi": true,
  "includeAll": true,
  "allValue": ".*"
}

И панель с QPS:

{
  "title": "QPS by Query Type",
  "type": "timeseries",
  "targets": [
    {
      "expr": "sum by (query_type) (rate(pg_stat_statements_calls_total{datname=~\"$datname\"}[5m]))",
      "legendFormat": "{{query_type}}"
    }
  ],
  "fieldConfig": {
    "defaults": {
      "unit": "reqps"
    }
  }
}

Агент делает ту работу, на которую SRE тратит 2-3 часа — перелопачивание документации по метрикам, написание PromQL, подбор порогов. Разница: агент делает это за минуты и не забывает метрики.

Почему это полезно SRE

Три причины.

Первая — скорость. Вместо часов ручного конструирования дашборда вы получаете готовый JSON за минуты. Это особенно ценно, когда сервисов десятки и на каждый тратить день — непозволительная роскошь.

Вторая — качество. Шаблон уже содержит правильные метрики, правильные пороги, правильную структуру панелей. Вы не забудете RED-метрики для веб-сервиса. Не пропустите replication lag для PostgreSQL. Не поставите бессмысленный порог на CPU.

Третья — воспроизводимость. Дашборд генерится из шаблона, а не копипастится из старого JSON. Если шаблон улучшился — перегенерировали и получили обновлённую версию.

Что GrafanaSmith не умеет

  • Не знает вашу инфраструктуру (нетипичные порты, нестандартные имена метрик, особенности сети).
  • Не создаёт дашборды для сервисов, которых нет в шаблонах — для таких нужен кастомный шаблон.
  • Не работает сам по себе — нужен AI-агент с поддержкой skills.

Это инструмент для типовых сервисов. Специфичная бизнес-логика вашей системы — всё ещё за вами.


Далее: SRE-инструменты