Набор утилит мониторинга инфраструктуры WAF
Find a file
2026-05-14 18:07:39 +03:00
.gitignore Work version 2026-02-24 10:54:38 +03:00
ARCHITECTURE.md Added double check 2026-05-12 17:44:48 +03:00
certcheck.go Added tg proxy, mail, mattermost 2026-04-14 17:03:31 +03:00
config.go Added tg proxy, mail, mattermost 2026-04-14 17:03:31 +03:00
DATABASE_SCHEMA.md Added database_schema 2026-04-17 10:31:01 +03:00
dockercheck.go Added tg proxy, mail, mattermost 2026-04-14 17:03:31 +03:00
email.go Added smtp alerts 2026-03-27 17:36:52 +03:00
go.mod Added mattermost alert 2026-04-13 14:48:32 +03:00
go.sum Work version 2026-02-24 10:54:38 +03:00
LICENSE Added license 2026-03-24 18:00:25 +03:00
logcheck.go Added tg proxy, mail, mattermost 2026-04-14 17:03:31 +03:00
main.go Added double check 2026-05-12 17:44:48 +03:00
matchcheck.go Speed matchchecker 2026-04-24 09:05:22 +03:00
mattermost.go Added tg proxy, mail, mattermost 2026-04-14 17:03:31 +03:00
portcheck.go Added tg proxy, mail, mattermost 2026-04-14 17:03:31 +03:00
portsview.go Work version 2026-02-24 10:54:38 +03:00
README.md Added double check 2026-05-12 17:44:48 +03:00
servicecheck.go Added tg proxy, mail, mattermost 2026-04-14 17:03:31 +03:00
telegram.go Added tg proxy, mail, mattermost 2026-04-14 17:03:31 +03:00
webcheck.go Added backup 2026-05-14 18:07:39 +03:00

Auspex

Набор утилит мониторинга инфраструктуры WAF.

Утилиты

Ключ Описание
-ss Просмотр занятых портов (интерактивный TUI на bubbletea)
-c Проверка SSL сертификатов (сроки истечения, алерты)
-p Проверка доступности портов из nginx upstream конфигов
-m Проверка совпадений портов Angie ↔ Docker (+ проверка запуска контейнеров)
-l Проверка обновления файлов PT AF access logs
-sv Проверка работоспособности служб systemd
-d или -dc Проверка работоспособности Docker контейнеров

Структура проекта

auspex/
├── main.go          # Точка входа, меню, роутинг CLI-флагов
├── config.go        # Глобальная конфигурация (переменные + загрузка из .env)
├── telegram.go      # Отправка алертов в Telegram (поддержка HTTP и SOCKS5 прокси)
├── email.go         # Отправка алертов по Email (SMTP, AUTH LOGIN)
├── mattermost.go    # Отправка алертов в Mattermost (Bot API)
├── certcheck.go     # -c:  проверка SSL сертификатов
├── portcheck.go     # -p:  проверка доступности портов
├── matchcheck.go    # -m:  совпадения Angie ↔ Docker
├── logcheck.go      # -l:  проверка свежести логов
├── servicecheck.go  # -sv: проверка служб systemd
├── dockercheck.go   # -d:  проверка Docker контейнеров
├── portsview.go     # -ss: TUI просмотр занятых портов
├── go.mod
└── README.md

Сборка

go mod tidy
go build -o auspex .
sudo cp auspex /usr/local/bin/auspex

Использование

# Интерактивное меню
./auspex

# Быстрый вызов через флаги
./auspex -ss              # TUI просмотр портов
./auspex -c               # Проверка сертификатов
./auspex -p               # Проверка доступности портов
./auspex -m               # Проверка Angie ↔ Docker (все клиенты)
./auspex -m client_name   # Проверка конкретного клиента
./auspex -l               # Проверка свежести логов
./auspex -sv              # Проверка работоспособности служб
./auspex -d               # Проверка работоспособности контейнеров
./auspex -w               # Проверка веб доступности
./auspex -h               # Справка
./auspex -v               # Версия

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

Конфигурация загружается из /etc/auspex/auspex.env. Если файл не найден — используются значения по умолчанию. Формат файла: KEY=VALUE, комментарии через #.

sudo mkdir -p /etc/auspex
sudo nano /etc/auspex/auspex.env

Полный список параметров

Telegram

Переменная Описание По умолчанию
TELEGRAM_BOT_TOKEN Токен бота
TELEGRAM_CHAT_ID ID чата для алертов
TELEGRAM_HTTP_PROXY HTTP прокси: http://user:pass@host:port
TELEGRAM_SOCKS5_PROXY SOCKS5 прокси: host:port
TELEGRAM_SOCKS5_USER Логин SOCKS5 прокси
TELEGRAM_SOCKS5_PASSWORD Пароль SOCKS5 прокси (спецсимволы безопасны)

Порядок попыток при отправке: HTTP прокси → SOCKS5 → прямое соединение. Если один вариант недоступен — автоматически используется следующий.

Email / SMTP

Переменная Описание По умолчанию
EMAIL_SMTP_HOST Адрес SMTP сервера
EMAIL_SMTP_PORT Порт SMTP (STARTTLS) 587
EMAIL_SMTP_USER Логин SMTP
EMAIL_SMTP_PASSWORD Пароль SMTP
EMAIL_FROM Адрес отправителя
EMAIL_TO Адреса получателей (через запятую)

Поддерживается AUTH LOGIN (Exchange/корпоративные серверы). Если EMAIL_SMTP_HOST не задан — отправка молча пропускается.

Mattermost

Переменная Описание По умолчанию
MATTERMOST_URL URL сервера: https://mattermost.example.com
MATTERMOST_BOT_TOKEN Токен бота
MATTERMOST_CHANNEL_ID ID канала для отправки

Используется Bot API (POST /api/v4/posts). HTML-теги из Telegram автоматически конвертируются в Markdown.

PostgreSQL

Переменная Описание По умолчанию
DB_USER Пользователь БД
DB_PASSWORD Пароль БД
DB_NAME Название БД waf_info
DB_PORT Порт БД 5432
PRIMARY_DB_HOST Основной хост БД 10.100.10.8
SECONDARY_DB_HOST Резервный хост БД 10.100.13.5

Пути

Переменная Описание По умолчанию
PTAF_BASE_DIR Базовая директория PTAF /home/install/ptaf
ANGIE_CONF_DIR Директория конфигов Angie /etc/angie/http.d
SSL_DIR Директория SSL сертификатов /etc/ssl
NGINX_CONFIG_GLOB Glob-путь к nginx конфигам /home/install/conf/ptaf-nginx/*/*/*/*.conf
LOG_DIR Директория access логов /var/log/ptaf_nginx
STATE_FILE_PATH State-файл portcheck /tmp/port_checker_state.json
SERVICE_STATE_FILE_PATH State-файл servicecheck /tmp/auspex_service_state.json
DOCKER_STATE_FILE_PATH State-файл dockercheck /tmp/auspex_docker_state.json

Пороги сертификатов

Переменная Описание По умолчанию
CERT_CRITICAL_DAYS Критический алерт (дней до истечения) 3
CERT_WARNING_DAYS Предупреждение 15
CERT_INFO_DAYS Информирование 30

Проверка портов

Переменная Описание По умолчанию
CHECK_TIMEOUT_SEC Таймаут TCP-соединения (сек) 10
MAX_RETRIES Количество повторов 3
RETRY_DELAY_SEC Задержка между повторами (сек) 2
MAX_WORKERS Горутин для параллельной обработки 10

Проверка логов

Переменная Описание По умолчанию
LOG_STALE_MINUTES Порог устаревшего лога (мин) 61

Проверка служб

Переменная Описание По умолчанию
SERVICES_TO_CHECK Службы для проверки (через запятую)

Пример: SERVICES_TO_CHECK=angie,docker,postgresql

Пример auspex.env

# Telegram
TELEGRAM_BOT_TOKEN=8411463479:AAF0zFi7iXTEC51sBG0Ckc8_S7JD-DuVcoo
TELEGRAM_CHAT_ID=-1001234567890
# HTTP прокси (опционально)
TELEGRAM_HTTP_PROXY=http://10.100.12.4:8888
# SOCKS5 прокси (опционально, fallback после HTTP)
TELEGRAM_SOCKS5_PROXY=212.87.220.230:1080
TELEGRAM_SOCKS5_USER=proxyuser
TELEGRAM_SOCKS5_PASSWORD=ProxyPass!$

# Email
EMAIL_SMTP_HOST=mail.example.com
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=auspex@example.com
EMAIL_SMTP_PASSWORD=secret
EMAIL_FROM=auspex@example.com
EMAIL_TO=admin@example.com,devops@example.com

# Mattermost
MATTERMOST_URL=https://mattermost.example.com
MATTERMOST_BOT_TOKEN=831yapr3xxxxxxxxxxx
MATTERMOST_CHANNEL_ID=oun39xxxxxxxxxxxx

# База данных
DB_USER=waf_user
DB_PASSWORD=secret
DB_NAME=waf_info
PRIMARY_DB_HOST=10.100.10.8
SECONDARY_DB_HOST=10.100.13.5

# Службы для проверки
SERVICES_TO_CHECK=angie,docker

# Пороги сертификатов
CERT_CRITICAL_DAYS=3
CERT_WARNING_DAYS=15
CERT_INFO_DAYS=30

Доставка алертов

Все модули с алертами отправляют уведомления во все настроенные каналы независимо друг от друга:

Канал Условие отправки
Telegram TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID заданы
Email EMAIL_SMTP_HOST, EMAIL_FROM, EMAIL_TO заданы
Mattermost MATTERMOST_URL, MATTERMOST_BOT_TOKEN, MATTERMOST_CHANNEL_ID заданы

Если канал не настроен — он молча пропускается, программа не падает.

State-файлы

Модули -p, -sv, -d сохраняют состояние между запусками и отправляют алерты только при изменении статуса. Это позволяет безопасно запускать их по cron без спама.

Модуль State-файл
-p portcheck /tmp/port_checker_state.json
-sv servicecheck /tmp/auspex_service_state.json
-d dockercheck /tmp/auspex_docker_state.json

При первом запуске состояние сохраняется, алерты не отправляются.

Пример cron

# Проверка сертификатов — раз в сутки
0 9 * * * root /usr/local/bin/auspex -c >> /var/log/auspex/certcheck.log 2>&1

# Проверка портов — каждые 5 минут
*/5 * * * * root /usr/local/bin/auspex -p >> /var/log/auspex/portcheck.log 2>&1

# Проверка логов — каждый час
0 * * * * root /usr/local/bin/auspex -l >> /var/log/auspex/logcheck.log 2>&1

# Проверка служб — каждые 2 минуты
*/2 * * * * root /usr/local/bin/auspex -sv >> /var/log/auspex/servicecheck.log 2>&1

# Проверка контейнеров — каждые 2 минуты
*/2 * * * * root /usr/local/bin/auspex -d >> /var/log/auspex/dockercheck.log 2>&1

Подробнее

См. ARCHITECTURE.md.