Как проверить работоспособность приложения в продакшене?

«Как проверить работоспособность приложения в продакшене?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для проверки работоспособности приложения в DevOps-практике используется многоуровневый подход, начиная с базовых проверок и заканчивая комплексным мониторингом.

1. Базовые проверки (ручные или скриптовые):

  • Health-check эндпоинты: Самый надежный способ для веб-сервисов. Приложение должно предоставлять эндпоинты (например, /health, /ready), которые возвращают HTTP 200 и статус зависимостей (БД, кэш, внешние API).
    curl -f http://app-host:8080/health || echo "Health check failed"
  • Проверка логов: Ищем ошибки или необычную активность сразу после деплоя.
    # Для systemd
    journalctl -u myapp-service --since "5 min ago" -n 20 --no-pager
    # Для контейнеров Docker
    docker logs --tail 50 --since 5m myapp-container

2. Инструменты мониторинга и алертинга (основной DevOps-инструментарий):

  • Prometheus + Blackbox Exporter: Для периодического опроса health-эндпоинтов и сбора метрик доступности (up/down).
  • Grafana: Визуализация метрик доступности и времени ответа.
  • Alertmanager: Настройка алертов на недоступность сервиса (например, если up{job="myapp"} == 0 более 1 минуты).

3. Инфраструктурные проверки в оркестраторах:

  • Kubernetes Probes: Настройка livenessProbe (перезапуск контейнера) и readinessProbe (исключение из балансировки нагрузки) в манифестах пода.
    livenessProbe:
      httpGet:
        path: /health
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 10

4. Синтетические тесты (Synthetic Monitoring): Использование инструментов вроде Grafana Synthetic Monitoring или Checkmk для имитации действий пользователя из разных географических точек и проверки не только доступности, но и корректности бизнес-логики.