# Auspex Набор утилит мониторинга инфраструктуры WAF. ## Утилиты | Ключ | Описание | |------|----------| | `-ss` | Просмотр занятых портов (интерактивный TUI на bubbletea) | | `-c` | Проверка SSL сертификатов (сроки истечения, алерты в Telegram) | | `-p` | Проверка доступности портов из nginx upstream конфигов | | `-m` | Проверка совпадений портов Angie ↔ Docker (+ проверка запуска контейнеров) | | `-l` | Проверка обновления файлов PT AF access logs | | `-sv` | Проверка работоспособности служб | | `-dv` или `-d` | Проверка работоспособности контейнеров | ## Структура проекта ``` auspex/ ├── cmd/auspex/ │ └── main.go # Точка входа, меню, роутинг CLI-флагов ├── internal/ │ ├── config/ │ │ └── config.go # Общая конфигурация (хардкод + env) │ ├── telegram/ │ │ └── telegram.go # Общий клиент Telegram │ ├── portsview/ │ │ └── portsview.go # -ss: TUI просмотр портов │ ├── certcheck/ │ │ └── certcheck.go # -c: проверка сертификатов │ ├── portcheck/ │ │ └── portcheck.go # -p: проверка доступности портов │ └── matchcheck/ │ | └── matchcheck.go # -m: совпадения Angie ↔ Docker │ └── servicecheck/ │ | └── servicecheck.go # -sv: проверка работоспособности служб │ └── dockercheck/ │ └── dockercheck.go # -dv или -d: проверка работоспособности служб ├── go.mod ├── Makefile └── README.md ``` ## Сборка ```bash go mod tidy go build -o auspex ``` ## Использование ```bash # Интерактивное меню ./auspex # Быстрый вызов через флаги ./auspex -ss # TUI просмотр портов ./auspex -c # Проверка сертификатов ./auspex -p # Проверка доступности портов ./auspex -m # Проверка Angie ↔ Docker (все клиенты) ./auspex -m client_name # Проверка конкретного клиента ./auspex -l # Проверка свежести логов ./auspex -sv # Проверка работоспособности служб ./auspex -dv или -d # Проверка работоспособности контейнеров ./auspex -h # Справка ./auspex -v # Версия ``` ## Конфигурация Все настройки находятся в `config.go`. ### Переменные окружения | Переменная | Описание | Значение по умолчанию | |------------|----------|----------------------| | `AUSPEX_TELEGRAM_BOT_TOKEN` | Токен Telegram бота | `YOUR_BOT_TOKEN` | | `AUSPEX_TELEGRAM_CHAT_ID` | Chat ID для алертов | `YOUR_CHAT_ID` | | `AUSPEX_PTAF_BASE_DIR` | Базовая директория PTAF | `/home/install/ptaf` | | `AUSPEX_ANGIE_CONF_DIR` | Директория конфигов Angie | `/etc/angie/http.d` | | `AUSPEX_SSL_DIR` | Директория SSL сертификатов | `/etc/ssl` | | `AUSPEX_NGINX_CONFIG_GLOB` | Glob-путь к nginx конфигам | `/home/install/conf/ptaf-nginx/*/*/*/*.conf` | | `AUSPEX_STATE_FILE_PATH` | Файл состояния port checker | `/tmp/port_checker_state.json` | | `AUSPEX_CHECK_TIMEOUT_SEC` | Таймаут проверки порта (сек) | `10` | | `AUSPEX_MAX_RETRIES` | Количество повторов | `3` | | `AUSPEX_RETRY_DELAY_SEC` | Задержка между повторами (сек) | `2` | | `AUSPEX_CERT_CRITICAL_DAYS` | Порог критического алерта (дни) | `3` | | `AUSPEX_CERT_WARNING_DAYS` | Порог предупреждения (дни) | `15` | | `AUSPEX_CERT_INFO_DAYS` | Порог информирования (дни) | `30` | | `cfgDBUser` | БД юзер | `user` | | `cfgDBPassword` | БД пароль | `qJBrR` | | `cfgDBName` | Название БД | `waf_info` | | `cfgDBPort` | Порт БД | `5432` | | `cfgPrimaryDBHost` | Основная БД | `10.100.10.8` | | `cfgSecondaryDBHost` | Резервная БД | `10.100.13.5` | | `SERVICES_TO_CHECK ` | Службы для проверки | `ansible,docker` | | `EMAIL_SMTP_HOST` | Адрес почтового сервера | `smtp.example.com` | | `EMAIL_SMTP_PORT` | Порт почтового сервера | `587` | | `EMAIL_SMTP_USER` | Юзер для отправки | `auspex@example.com` | | `EMAIL_SMTP_PASSWORD` | Пароль | `secret` | | `EMAIL_FROM` | Юзер для отправки | `auspex@example.com` | | `EMAIL_TO` | Получатели | `admin1@example.com, admin2@example.com` | ## Зависимости - Go 1.22+ - github.com/charmbracelet/bubbletea (TUI фреймворк для `-ss`) - github.com/charmbracelet/bubbles (компоненты TUI) - github.com/charmbracelet/lipgloss (стилизация TUI) - github.com/lib/pq (запросы в БД) ## Требования на хосте - `ss` или `netstat` — для просмотра портов - `docker` — для проверки запущенных контейнеров (флаг `-m`) - `ps` — для деталей процессов (флаг `-ss`)