Утилита автоматической генерации Grafana-дашбордов и правил алертинга для клиентов WAF.
Find a file
2026-02-26 15:35:00 +03:00
.gitignore Work version 2026-02-24 12:45:35 +03:00
alerts.go Added multoresource 2026-02-26 15:35:00 +03:00
ARCHITECTURE.md New readme 2026-02-25 15:29:05 +03:00
config.go Added multoresource 2026-02-26 15:35:00 +03:00
dashboard.go Added multoresource 2026-02-26 15:35:00 +03:00
database.go Added alert rules 2026-02-25 14:47:07 +03:00
env.go Work version 2026-02-24 12:45:35 +03:00
git.go Work version 2026-02-24 12:45:35 +03:00
go.mod Work version 2026-02-24 12:45:35 +03:00
grafana.go Work version 2026-02-24 12:45:35 +03:00
main.go Added alert rules 2026-02-25 14:47:07 +03:00
panels.go Added multoresource 2026-02-26 15:35:00 +03:00
README.md New readme 2026-02-25 15:29:05 +03:00
state.go Added alert rules 2026-02-25 14:47:07 +03:00
template.go Added alert rules 2026-02-25 14:47:07 +03:00

grafana_gen

Утилита автоматической генерации Grafana-дашбордов и правил алертинга для клиентов WAF/PTAF.

Что делает

  • Читает список клиентов и их SID из PostgreSQL (sp_info + manual_info)
  • Генерирует единый дашборд с панелями на каждого клиента
  • Создаёт правила алертинга: RPS, 4xx/5xx ошибки (пороги из БД), CPU, RAM, диск, контейнеры, Angie
  • Обновляет шаблоны дашборда и алертов из Git-репозитория при каждом запуске
  • Пропускает запуск если ничего не изменилось (отслеживает хэши)

Быстрый старт

# Минимальный запуск
./grafana_gen \
  -db-user=reader \
  -db-password=secret \
  -grafana-url=https://grafana.example.com \
  -grafana-api-key=glsa-xxx

# Или через .env файл (приоритет ниже переменных окружения)
cp grafana_gen.env.example /etc/grafana_gen/grafana_gen.env
./grafana_gen

Конфигурация

Параметры разрешаются в порядке приоритета: флаг → переменная окружения → .env файл → константа в config.go

Минимально необходимые параметры:

Параметр Флаг Переменная окружения
PostgreSQL пользователь -db-user DB_USER
PostgreSQL пароль -db-password DB_PASSWORD
URL Grafana -grafana-url GRAFANA_URL
Grafana API ключ -grafana-api-key GRAFANA_API_KEY

Пример .env файла:

DB_USER=grafana_reader
DB_PASSWORD=secret
GRAFANA_URL=https://grafana.example.com
GRAFANA_API_KEY=glsa-xxxxxxxxxxxxxxxxxxxx
GIT_TOKEN=your-gitea-token

Полезные флаги

-dry-run        # Сгенерировать и показать в логах, не отправлять в Grafana
-force          # Пересоздать всё даже если изменений нет
-skip-git-pull  # Не обновлять шаблоны из Git

Шаблоны

Дашборд и алерты строятся по JSON-шаблонам из Git-репозитория:

  • dashboard_template.json — структура и панели дашборда
  • alert_rules_template.json — правила алертинга

Изменение любого шаблона автоматически триггерит пересоздание при следующем запуске.

Подробнее

См. ARCHITECTURE.md.