5.2 KiB
Executable file
grafana_gen
Утилита автоматической генерации Grafana-дашбордов и правил алертинга для клиентов WAF/PTAF.
Что делает
- Читает список клиентов и их SID из PostgreSQL (
sp_info+manual_info) - Генерирует дашборд для OpenSearch и/или VictoriaLogs datasource (независимо)
- Создаёт правила алертинга для OS и/или VL: 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
# VictoriaLogs (опционально)
VL_DATASOURCE_UID=efewdonokxybkf
VL_DASHBOARD_TITLE=PT AF Requests (VictoriaLogs)
# Управление генерацией
DASHBOARD_OS_ENABLED=true
DASHBOARD_VL_ENABLED=true
ALERTS_OS_ENABLED=true
ALERTS_VL_ENABLED=true
Полезные флаги
-dry-run # Сгенерировать и показать в логах, не отправлять в Grafana
-force # Пересоздать всё даже если изменений нет
-skip-git-pull # Не обновлять шаблоны из Git
Управление генерацией через переменные окружения
Можно независимо включать и отключать генерацию дашбордов и алертов:
| Переменная | По умолчанию | Описание |
|---|---|---|
DASHBOARD_OS_ENABLED |
true |
Генерировать дашборд для OpenSearch |
DASHBOARD_VL_ENABLED |
true |
Генерировать дашборд для VictoriaLogs |
ALERTS_OS_ENABLED |
true |
Генерировать алерты для OpenSearch |
ALERTS_VL_ENABLED |
true |
Генерировать алерты для VictoriaLogs |
Пример — только VL дашборд и VL алерты:
DASHBOARD_OS_ENABLED=false
ALERTS_OS_ENABLED=false
VictoriaLogs дашборд
При наличии VL_DATASOURCE_UID генерируется второй дашборд с теми же панелями но на базе VictoriaLogs datasource и LogsQL запросов. Дашборд содержит дополнительные секции:
- PTAF-Nginx (обзорные панели) — статус коды, запросы по нодам/тенантам, топ URI, сравнение nginx vs angie
- Angie — панели ошибок из
log_type:angie-error-PTAF
Шаблоны
Дашборд и алерты строятся по JSON-шаблонам из Git-репозитория:
dashboard_template.json— структура и панели дашбордаalert_rules_template.json— правила алертинга
Изменение любого шаблона автоматически триггерит пересоздание при следующем запуске.
Валидатор шаблона
При каждом запуске template_validator.go автоматически проверяет и исправляет критичные настройки шаблона:
vl_interval: "1m"для панелей RPS, status_codes, response_time, trafficspanNulls: trueдля панели status_codesvl_base_queryс переменными тенанта/ноды для обзорных панелей- Layout в три столбца (8+8+8) для tenant и domain панелей
Это защищает от потери настроек при обновлении шаблона из Git.
Подробнее
См. ARCHITECTURE.md.