PRO

Как мониторить Celery (Flower, Prometheus)?

Для оперативного контроля Celery используют Flower — веб-интерфейс состояния исполнителей и задач. Для постоянного мониторинга и оповещений Flower может отдавать метрики Prometheus, которые затем отображаются в Grafana и используются для автоматических предупреждений.
Подробный ответ

Что показывает Flower

Flower — веб-интерфейс для наблюдения за Celery. Он показывает доступных исполнителей, активные и ожидающие задачи, успешные и неуспешные выполнения, время выполнения, ошибки и статистику очередей.

pip install flower
celery -A config flower --port=5555

Flower нельзя открывать в публичный интернет без защиты. Доступ к нему должен быть ограничен сетью, обратным прокси, аутентификацией и правами сотрудников.

Prometheus и Grafana

Flower может отдавать метрики в формате Prometheus через endpoint /metrics. Prometheus периодически считывает эти метрики, а Grafana строит дашборды и оповещения.

scrape_configs:
  - job_name: flower
    static_configs:
      - targets:
          - flower:5555

Какие метрики важны

  • количество задач в очереди и возраст старейшей задачи;

  • число активных исполнителей и одновременно выполняемых задач;

  • длительность выполнения задач по типам;

  • число ошибок, повторов и задач в очереди неуспешных сообщений;

  • задержка между постановкой задачи и началом выполнения;

  • состояние брокера, Redis или RabbitMQ, память и число подключений.

Примеры оповещений

- alert: CeleryQueueLagHigh
  expr: celery_oldest_task_age_seconds > 300
  for: 10m
  labels:
    severity: warning
  annotations:
    summary: Old task waits for more than five minutes

- alert: CeleryFailureRateHigh
  expr: rate(celery_task_failed_total[10m]) > 0.1
  for: 5m
  labels:
    severity: critical

Наблюдаемость самой задачи

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

Как ответить на собеседовании

Для оперативного просмотра Celery использую Flower, а для постоянного мониторинга подключаю его метрики к Prometheus и Grafana. Контролирую длину и возраст очереди, состояние исполнителей, время выполнения, ошибки, повторы и DLQ. Алерты строю на задержке задач и доле ошибок, а не только на факте запуска процессов.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге