Утилита автоматической генерации Grafana-дашбордов и правил алертинга для клиентов WAF.
Find a file
2026-04-27 18:01:57 +03:00
.gitignore Work version 2026-02-24 12:45:35 +03:00
alerts.go Change alerts 2026-04-27 17:35:43 +03:00
alerts_vl.go Change alerts 2026-04-27 17:35:43 +03:00
ARCHITECTURE.md Change alerts 2026-04-27 18:01:57 +03:00
config.go Change alerts 2026-04-27 17:35:43 +03:00
dashboard.go Added VL 2026-03-06 12:00:26 +03:00
dashboard_vl.go Fix graphs 2026-03-19 18:04:19 +03:00
database.go Change alerts 2026-04-27 17:35:43 +03:00
DATABASE_SCHEMA.md Change alerts 2026-04-27 18:01:57 +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
go.sum Change alerts 2026-04-27 17:35:43 +03:00
grafana.go Work version 2026-02-24 12:45:35 +03:00
LICENSE Added license 2026-03-24 17:59:43 +03:00
main.go Change alerts 2026-04-27 17:35:43 +03:00
panels.go Added VL 2026-03-06 12:00:26 +03:00
panels_vl.go Added VL alerts 2026-04-15 17:27:47 +03:00
README.md Renew docs 2026-04-16 15:21:43 +03:00
state.go Change alerts 2026-04-27 17:35:43 +03:00
template.go Added alert rules 2026-02-25 14:47:07 +03:00
template_validator.go Added checker 2026-03-23 15:39:07 +03:00

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, traffic
  • spanNulls: true для панели status_codes
  • vl_base_query с переменными тенанта/ноды для обзорных панелей
  • Layout в три столбца (8+8+8) для tenant и domain панелей

Это защищает от потери настроек при обновлении шаблона из Git.

Подробнее

См. ARCHITECTURE.md.