Содержание

Эксплуатация AlertWeb

Справочник для администраторов: какие процессы крутятся на панели и KVM-нодах, где лежат конфиги, как смотреть логи и проверять здоровье системы.

Архитектура процессов

КомпонентГдеНазначение
alertweb-apiПанельHTTP REST (:8080), gRPC для агентов (:9090), MySQL, лицензия
alertweb-workerПанельФоновые jobs: создание VM, миграции, distribute ISO/шаблонов
nginxПанельTLS, статика UI, прокси /api/ и WebSocket консоли
MySQL/MariaDBПанельСостояние control plane (VM, ноды, jobs, RBAC)
alertweb-agentKVM-нодаlibvirt, диски VM, сеть, VNC/websockify, отчёт метрик
libvirtdKVM-нодаГипервизор QEMU/KVM

Браузер ходит только на nginx панели. Агенты на нодах подключаются к API по gRPC (mTLS) на порт 9090.

Сервисы на панели (systemd)

UnitБинарникEnvironmentFile
alertweb-api.service/usr/local/bin/alertweb-api/etc/alertweb/api.env
alertweb-worker.service/usr/local/bin/alertweb-worker/etc/alertweb/worker.env
nginx.service/etc/nginx/conf.d/alertweb-panel.conf
mariadb / mysqldБД alertweb
sudo systemctl status alertweb-api alertweb-worker nginx
sudo systemctl restart alertweb-api alertweb-worker
sudo systemctl enable --now alertweb-api alertweb-worker

Сервисы на KVM-ноде

UnitНазначение
alertweb-agent.serviceАгент AlertWeb → gRPC панели
libvirtd.serviceKVM/QEMU
alertweb-network-reconcile.timerПериодическая сверка сети (если установлен)
sudo systemctl status alertweb-agent libvirtd
sudo systemctl restart alertweb-agent

Каталоги на диске

ПутьСодержимое
/etc/alertweb/api.env, worker.env, agent.env, certs/
/usr/local/bin/alertweb-*Бинарники API, worker, agent
/var/www/alertweb-ui/Статика веб-интерфейса (SPA)
/usr/share/alertweb/migrations/SQL-миграции MySQL
/var/lib/alertweb/iso/Загруженные ISO на панели (ALERTWEB_ISO_STORAGE)
/vm/Диски виртуальных машин на ноде (ALERTWEB_VM_DISKS_DIR)
/opt/alertweb/Распакованный релиз (скрипты обновления), опционально

Файлы конфигурации

Панель — /etc/alertweb/api.env

Основной конфиг API. Пример production (значения замените на свои):

ALERTWEB_HTTP_ADDR=:8080
ALERTWEB_GRPC_ADDR=:9090
ALERTWEB_MYSQL_DSN=alertweb:SECRET@tcp(127.0.0.1:3306)/alertweb?parseTime=true&charset=utf8mb4
ALERTWEB_JWT_SECRET=...длинный-секрет...
ALERTWEB_MIGRATIONS_DIR=/usr/share/alertweb/migrations
ALERTWEB_ISO_STORAGE=/var/lib/alertweb/iso
ALERTWEB_GRPC_TLS_CERT=/etc/alertweb/certs/server.pem
ALERTWEB_GRPC_TLS_KEY=/etc/alertweb/certs/server-key.pem
ALERTWEB_GRPC_TLS_CA=/etc/alertweb/certs/ca.pem
ALERTWEB_HTTP_READ_TIMEOUT=2h
ALERTWEB_HTTP_WRITE_TIMEOUT=2h

Панель — /etc/alertweb/worker.env

ALERTWEB_MYSQL_DSN=...тот же DSN...
ALERTWEB_JWT_SECRET=...тот же секрет...
ALERTWEB_WORKER_ID=worker-1
ALERTWEB_CONTROL_PLANE_GRPC=127.0.0.1:9090
ALERTWEB_GRPC_TLS_CERT=/etc/alertweb/certs/client.pem
ALERTWEB_GRPC_TLS_KEY=/etc/alertweb/certs/client-key.pem
ALERTWEB_GRPC_TLS_CA=/etc/alertweb/certs/ca.pem
ALERTWEB_GRPC_TLS_SERVER_NAME=alertweb-api

Нода — /etc/alertweb/agent.env

ALERTWEB_AGENT_NODE_UUID=...
ALERTWEB_AGENT_BOOTSTRAP_TOKEN=...
ALERTWEB_CONTROL_PLANE_GRPC=203.0.113.10:9090
ALERTWEB_HYPERVISOR_DRIVER=libvirt
LIBVIRT_DEFAULT_URI=qemu:///system
ALERTWEB_VM_DISKS_DIR=/vm
ALERTWEB_GRPC_TLS_CERT=/etc/alertweb/certs/client.pem
ALERTWEB_GRPC_TLS_KEY=/etc/alertweb/certs/client-key.pem
ALERTWEB_GRPC_TLS_CA=/etc/alertweb/certs/ca.pem
ALERTWEB_GRPC_TLS_SERVER_NAME=alertweb-api

mTLS — /etc/alertweb/certs/

  • ca.pem — корневой CA
  • server.pem / server-key.pem — сертификат API (gRPC server)
  • client.pem / client-key.pem — worker и агенты (gRPC client)

nginx — /etc/nginx/conf.d/alertweb-panel.conf

Проксирует /api/ на 127.0.0.1:8080, отдаёт UI из /var/www/alertweb-ui. Для ISO-загрузок обязательно:

client_max_body_size 8g;
proxy_read_timeout 7200s;
proxy_send_timeout 7200s;

Сгенерировать черновик конфига можно из UI: GET /api/platform/settings/security/nginx (см. API).

Переменные API (справочник)

ПеременнаяОписаниеПо умолчанию
ALERTWEB_HTTP_ADDRHTTP listen:8080
ALERTWEB_GRPC_ADDRgRPC для агентов:9090
ALERTWEB_MYSQL_DSNMySQL DSN
ALERTWEB_JWT_SECRETСекрет JWT (обязателен)
ALERTWEB_JWT_ACCESS_TTLВремя жизни access token1h
ALERTWEB_JWT_REFRESH_TTLRefresh token24h
ALERTWEB_ISO_STORAGEКаталог ISO на панели/var/lib/alertweb/iso
ALERTWEB_GRPC_INTERNAL_TOKENВнутренний токен worker↔API
ALERTWEB_METRICS_TOKENЗащита /metrics
ALERTWEB_AUTH_RATE_LIMIT_RPMЛимит login/min на IP20

Переменные worker

ПеременнаяОписание
ALERTWEB_WORKER_IDИдентификатор воркера (уникальный при нескольких)
ALERTWEB_WORKER_CONCURRENCYПараллельные jobs (по умолчанию 8)
ALERTWEB_CONTROL_PLANE_GRPCАдрес gRPC API

Переменные agent (нода)

ПеременнаяОписание
ALERTWEB_AGENT_NODE_UUIDUUID из панели при создании ноды
ALERTWEB_AGENT_BOOTSTRAP_TOKENОдноразовый токен регистрации
ALERTWEB_VM_DISKS_DIRКаталог дисков VM (обычно /vm)
ALERTWEB_NETCONFIG_DRY_RUN1 — не применять сетевые команды (тест)
ALERTWEB_VXLAN_UPLINKИнтерфейс uplink для VXLAN

Лицензирование

В production релизах проверка лицензии включена через ALERTWEB_LICENSE_ENABLED=true.

ПеременнаяОписание
ALERTWEB_LICENSE_ENABLEDtrue — коммерческий режим, мутации требуют активную лицензию
ALERTWEB_LICENSE_KEYКлюч из личного кабинета (можно задать в UI вместо env)
ALERTWEB_LICENSE_PUBLIC_IPПубличный IP панели (если NAT)
ALERTWEB_LICENSE_EMAILEmail владельца лицензии

Подробнее о поведении без ключа — в разделе Установка → Лицензия.

Журналы (логи)

AlertWeb пишет в journald (stdout/stderr процессов). Отдельных файлов в /var/log/alertweb/ на панели обычно нет.

# Панель
sudo journalctl -u alertweb-api -f
sudo journalctl -u alertweb-worker -f
sudo journalctl -u alertweb-api --since "1 hour ago" -p err

# Нода
sudo journalctl -u alertweb-agent -f

# nginx (доступ / ошибки прокси)
sudo tail -f /var/log/nginx/error.log

Логи jobs в UI и API

Детальные шаги фоновых задач (создание VM, миграция, distribute) хранятся в MySQL и доступны:

  • В панели: Задачи → открыть job → шаги и лог
  • API: GET /jobs/{uuid}/logs, GET /jobs/{uuid}/steps

Аудит действий пользователей: GET /audit (permission platform.audit.read).

Health и метрики

EndpointНазначение
GET /healthLiveness — процесс жив
GET /health/readyReadiness — MySQL + worker доступны
GET /metricsPrometheus-метрики (нужен ALERTWEB_METRICS_TOKEN)
curl -fsS http://127.0.0.1:8080/health
curl -fsS http://127.0.0.1:8080/health/ready

nginx и WebSocket

  • REST: https://panel.example.ru/api/... → API :8080
  • VNC-консоль: wss://panel.example.ru/api/console/ws?vm=...&token=...
  • UI: try_filesindex.html (SPA)

Быстрая диагностика

В комплекте релиза — скрипт только для чтения (не меняет firewall и сеть):

sudo bash /opt/alertweb/deploy/almalinux/diagnose-alertweb.sh
СимптомЧто проверить
502 / API недоступенsystemctl status alertweb-api, DSN, journalctl -u alertweb-api
Jobs висятalertweb-worker, gRPC/mTLS certs
Нода offlineagent logs, firewall :9090, clock skew, bootstrap token
403 license_*Ключ, IP, POST /platform/license/sync, исходящий HTTPS
ISO upload 413client_max_body_size в nginx
Консоль не открываетсяwebsockify на ноде, порты 6080+, nginx Upgrade headers