Логи и диагностика¶
Где брать логи¶
Backend (Spring Boot)¶
# Последние логи (проверь активный контейнер: vpn-back-blue или vpn-back-green)
./scripts/ssh-internal.sh 10.99.87.249 "docker logs vpn-back-blue --tail 100"
# Ошибки
./scripts/ssh-internal.sh 10.99.87.249 "docker logs vpn-back-blue 2>&1 | grep ERROR | tail 20"
# Follow (в реальном времени)
./scripts/ssh-internal.sh 10.99.87.249 "docker logs vpn-back-blue -f --tail 10"
Blue-green deploy
Активный контейнер: vpn-back-blue (:8080) или vpn-back-green (:8081).
Проверь: docker ps --filter name=vpn-back
Текущее состояние: cat /opt/deploy/.deploy-state
Health check:
./scripts/ssh-internal.sh 10.99.87.249 "curl -s http://localhost:8080/actuator/health"
# Ожидаем: {"status":"UP"}
VPN Config Service (FastAPI)¶
# API процесс
./scripts/ssh-internal.sh 10.99.87.249 \
"cd /opt/vpn-config-service && docker compose logs vpn-config-service --tail 100"
# Worker процесс
./scripts/ssh-internal.sh 10.99.87.249 \
"cd /opt/vpn-config-service && docker compose logs vpn-config-worker --tail 100"
Health check:
./scripts/ssh-internal.sh 10.99.87.249 "curl -s http://localhost:8000/health"
# Возвращает: DB, Redis, worker sync age, servers_with_errors
# HTTP 503 если unhealthy
MySQL¶
# Slow query log
./scripts/ssh-internal.sh 10.99.87.62 \
"docker exec vpn-db mysql -uvpn -p'$(см. Vaultwarden → Databases)' -e 'SHOW STATUS LIKE \"Slow_queries\"'"
# Текущие процессы
./scripts/ssh-internal.sh 10.99.87.62 \
"docker exec vpn-db mysql -uvpn -p'$(см. Vaultwarden → Databases)' -e 'SHOW PROCESSLIST'"
# Контейнер
./scripts/ssh-internal.sh 10.99.87.62 "docker logs vpn-db --tail 50"
Nginx (API proxy)¶
# Логи прокси (212.70.189.60)
ssh -p 2255 root@212.70.189.60 "tail -100 /var/log/nginx/access.log"
ssh -p 2255 root@212.70.189.60 "tail -100 /var/log/nginx/error.log"
# Проверка конфигурации
ssh -p 2255 root@212.70.189.60 "nginx -t"
XUI (VPN серверы)¶
# XRAY логи
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519_shivavpn root@<IP> \
"docker logs xray --tail 50"
# X-UI panel логи
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519_shivavpn root@<IP> \
"journalctl -u x-ui --tail 50"
# Статус сервиса
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519_shivavpn root@<IP> \
"systemctl status xray; ss -tlnp | grep 443"
Remnawave ноды¶
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519_hiddify root@<IP> \
"docker logs remnanode --tail 50"
Audit Bot¶
Grafana / Prometheus¶
./scripts/ssh-internal.sh 10.99.87.5 "docker logs grafana --tail 50"
./scripts/ssh-internal.sh 10.99.87.5 "docker logs grafana-prometheus-1 --tail 50"
Prometheus порт
Prometheus слушает на порту 9091 (не 9090): docker port grafana-prometheus-1.
При curl с Grafana-сервера добавляй no_proxy=localhost чтобы обойти squid.
Диагностические скрипты¶
Полный каталог: DevOps скрипты.
Ключевые для диагностики:
| Скрипт | Описание |
|---|---|
audit_account.py |
Полный аудит аккаунта: MySQL + VPN configs + VUSA + devices |
audit_wl_proxies.py |
Аудит WL прокси: MySQL vs nftables конфиг |
check_backend_configs.py |
Что бэкенд API возвращает для пользователя |
check_panel_configs.py |
Что XUI панели имеют для пользователя |
Быстрая диагностика¶
API не отвечает¶
# 1. Тест каждого слоя
curl -I https://api.shivavpn.io/api/v1/config/ping # Внешний
curl -I https://212.70.189.60 # Proxy
# 2. Backend напрямую (через SSH)
./scripts/ssh-internal.sh 10.99.87.249 \
"curl -s http://localhost:8080/actuator/health"
# 3. Логи (проверь активный контейнер: blue или green)
./scripts/ssh-internal.sh 10.99.87.249 "docker logs vpn-back-blue --tail 50"
VPN сервер не работает¶
SERVER_IP=<IP>
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519_shivavpn root@$SERVER_IP
# Проверки:
systemctl status xray
ss -tlnp | grep 443
journalctl -u xray --tail 50
docker logs xray --tail 50
Пользователь не может подключиться¶
# 1. Проверить аккаунт (DevOps инструмент, monorepo: scripts/audit_account.py)
# python3 scripts/audit_account.py <ACCOUNT_NUMBER>
# 2. Принудительный sync
TOKEN=$(curl -s -X POST http://10.99.87.249:8080/api/auth/login/admin \
-H "Content-Type: application/json" \
-d '{"login":"admin@shivavpn.io","password":"<Vaultwarden → Infrastructure → Admin Panel>"}' | jq -r .accessToken)
curl -X POST \
"http://10.99.87.249:8080/api/admin/maintenance/sync/account/by-login/<ACCOUNT>" \
-H "Authorization: Bearer $TOKEN"
Централизованный мониторинг¶
- Grafana:
https://monitor.karmann.tech(порт 3001) - Prometheus: метрики с backend (
/actuator/prometheus), VPN Config Service (/metrics), node_exporter - Loki: логи через Promtail/Fluent-Bit
Подробнее: см. Мониторинг (будет добавлен).