GrafanaSmith — дашборды, сгенерированные AI¶
Представьте: вам нужно сделать дашборд для PostgreSQL-кластера. Потом для Redis. Потом для Kafka. И ещё для десяти сервисов. Каждый раз — открывать Grafana, тащить панели, вспоминать метрики, настраивать PromQL, пороги, переменные.
GrafanaSmith делает это за вас. Это не библиотека и не тулза командной строки. Это Skill — файл SKILL.md, который загружается в AI-агента (opencode, Claude Code, Cursor, любой другой с поддержкой skills) и превращает описание сервиса в готовый JSON дашборда.
Как это работает¶
Вы даёте агенту три вещи:
- scrape_configs — Prometheus-конфиг сервиса (job_name, метрики, лейблы).
- service_description — что за сервис и как развёрнут (single, кластер, primary-replica).
- контекст — окружение, 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-инструменты