Устранение неисправностей
Отказ базы данных
Симптомы: 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=60sCORS ошибки
Симптомы: браузер блокирует запросы, 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.netWebSocket проблемы
Симптомы: реальные метрики не обновляются, частые переподключения.
Причины:
- WebSocket не поддерживается инфраструктурой (ALB, Nginx)
- Не настроен WSS (WebSocket Secure)
- Превышено количество одновременных подключений
Решение:
nginx
# Nginx: обязательно включить WebSocket прокси
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";Проверьте метрику websocket_disconnections_total в Prometheus.