Как мониторить Celery (Flower, Prometheus)?
Подробный ответ
Что показывает Flower
Flower — веб-интерфейс для наблюдения за Celery. Он показывает доступных исполнителей, активные и ожидающие задачи, успешные и неуспешные выполнения, время выполнения, ошибки и статистику очередей.
pip install flower
celery -A config flower --port=5555Flower нельзя открывать в публичный интернет без защиты. Доступ к нему должен быть ограничен сетью, обратным прокси, аутентификацией и правами сотрудников.
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. Алерты строю на задержке задач и доле ошибок, а не только на факте запуска процессов.
Оцени свой прогресс