Skip to content

Устранение неисправностей

Отказ базы данных

Симптомы: connection refused, pq: dial tcp, сервис не стартует.

Причины:

  • PostgreSQL не запущен
  • Неверные учётные данные (POSTGRES_USER/POSTGRES_PASSWORD)
  • Host/port заданы неверно
  • SSL mismatch (sslmode в production должен быть require)

Решение:

bash
# Проверить доступность БД
pg_isready -h localhost -p 5432

# Проверить логи
docker compose logs postgres

# Проверить конфигурацию
curl http://localhost:8080/health
# {"status":"unhealthy","error":"database connection failed"}

Ошибка миграций

Симптомы: dirty database version, migration failed, сервис не запускается.

Причины:

  • Migration file содержит ошибку SQL
  • Версия миграции в БД не совпадает с файловой системой
  • Конфликт версий при параллельных деплоях

Решение:

bash
# Проверить текущую версию
SELECT * FROM schema_migrations;

# Принудительно установить версию (если точно знаете, что делаете)
UPDATE schema_migrations SET version=18, dirty=false;

# Либо удалить и пересоздать БД (только для разработки!)
dropdb slozy_dev && createdb slozy_dev

Таймаут Prometheus

Симптомы: context deadline exceeded, метрики SLO не обновляются.

Причины:

  • Prometheus сервер недоступен
  • Неверный URL в конфигурации datasource
  • Таймаут запроса превышает лимит (по умолчанию 30s)
  • Слишком много метрик в одном запросе

Решение:

bash
# Проверить доступность Prometheus
curl -I http://prometheus:9090/-/ready

# Проверить конфигурацию datasource
# Prometheus URL настраивается в UI или через миграцию 000016

# Увеличить таймаут
INGESTION_TIMEOUT=60s

CORS ошибки

Симптомы: браузер блокирует запросы, No 'Access-Control-Allow-Origin' header.

Причины:

  • Origin не добавлен в CORS_ORIGINS
  • Неверный протокол (http vs https)
  • Отсутствует заголовок Origin в запросе

Решение:

bash
# Проверить текущую конфигурацию CORS
curl -H "Origin: https://app.slozy.net" \
  -H "Access-Control-Request-Method: GET" \
  -X OPTIONS https://api.slozy.net/api/v1/slos

# Убедиться, что в ответе есть заголовки
# Access-Control-Allow-Origin: https://app.slozy.net

WebSocket проблемы

Симптомы: реальные метрики не обновляются, частые переподключения.

Причины:

  • WebSocket не поддерживается инфраструктурой (ALB, Nginx)
  • Не настроен WSS (WebSocket Secure)
  • Превышено количество одновременных подключений

Решение:

nginx
# Nginx: обязательно включить WebSocket прокси
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Проверьте метрику websocket_disconnections_total в Prometheus.