Утилита автоматической генерации Grafana-дашбордов и правил алертинга для клиентов WAF.
| .gitignore | ||
| alerts.go | ||
| alerts_vl.go | ||
| ARCHITECTURE.md | ||
| config.go | ||
| dashboard.go | ||
| dashboard_vl.go | ||
| database.go | ||
| env.go | ||
| git.go | ||
| go.mod | ||
| grafana.go | ||
| LICENSE | ||
| main.go | ||
| panels.go | ||
| panels_vl.go | ||
| README.md | ||
| state.go | ||
| template.go | ||
| template_validator.go | ||
grafana_gen
Утилита автоматической генерации Grafana-дашбордов и правил алертинга для клиентов WAF.
Что делает
- Читает список клиентов и их 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.