From 5b2c642afceee706067d0f2898d8ad231168d9b2 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Thu, 5 Jun 2025 19:36:57 +0300 Subject: [PATCH] Features: Prometheus for celery workers --- docker-compose.yml | 2 +- monitoring/prometheus.yml | 8 +------- poetry.lock | 19 +++++++++++++++++-- pyproject.toml | 3 ++- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 306966e9..40050f20 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -83,7 +83,7 @@ services: --max-tasks-per-child=100 \ --max-memory-per-child=512000 \ --soft-time-limit=10800 \ - --time-limit=21600" + --time-limit=21600 & poetry run celery_prometheus_exporter" volumes: - .:/app env_file: diff --git a/monitoring/prometheus.yml b/monitoring/prometheus.yml index 1ec4ad56..5c54c77e 100644 --- a/monitoring/prometheus.yml +++ b/monitoring/prometheus.yml @@ -13,13 +13,7 @@ scrape_configs: metrics_path: /prometheus/metrics scheme: http static_configs: - - targets: [ 'worker:8000' ] - - - job_name: 'evibes-beat' - metrics_path: /prometheus/metrics - scheme: http - static_configs: - - targets: [ 'beat:8000' ] + - targets: [ 'worker:8888' ] # - job_name: 'redis' # static_configs: diff --git a/poetry.lock b/poetry.lock index 81f08eb1..e5414712 100644 --- a/poetry.lock +++ b/poetry.lock @@ -397,6 +397,21 @@ yaml = ["PyYAML (>=3.10)"] zookeeper = ["kazoo (>=1.3.1)"] zstd = ["zstandard (==0.23.0)"] +[[package]] +name = "celery-prometheus-exporter" +version = "1.7.0" +description = "Simple Prometheus metrics exporter for Celery" +optional = true +python-versions = "*" +files = [ + { file = "celery-prometheus-exporter-1.7.0.tar.gz", hash = "sha256:8fc2d5909921c44f01c8c1b7d956d92e6966f2e14eec196bf60735e39a0e0991" }, + { file = "celery_prometheus_exporter-1.7.0-py2-none-any.whl", hash = "sha256:a3ba0d3340b546ae82b36fef7645ccbc54c2b696fc3df05bb9ee28a402e710e1" }, +] + +[package.dependencies] +celery = ">=3" +prometheus-client = ">=0.0.20" + [[package]] name = "certifi" version = "2025.4.26" @@ -4502,9 +4517,9 @@ type = ["pytest-mypy"] ai = ["openai"] graph = ["pygraphviz"] jupyter = ["jupyter"] -worker = ["celery", "django-celery-beat", "django-celery-results"] +worker = ["celery", "celery-prometheus-exporter", "django-celery-beat", "django-celery-results"] [metadata] lock-version = "2.0" python-versions = ">=3.12,<3.13" -content-hash = "41d93348d32ac7451ed8251fda80b409ae24ba8cc7cb2b28ef525114f5d4823b" +content-hash = "8381fcab87bd578eaae8f88e24133866b78914a1967df332cdc09189d1fbd937" diff --git a/pyproject.toml b/pyproject.toml index af432e0b..d3012b4b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,6 +15,7 @@ cryptography = "44.0.3" redis = "6.0.0" httpx = "0.28.1" celery = { version = "5.5.2", optional = true } +celery-prometheus-exporter = { version = "1.7.0", optional = true } pillow = "11.2.1" south = "1.0.2" pygraphviz = { version = "1.14", optional = true } @@ -69,7 +70,7 @@ drf-spectacular = { extras = ["sidecar"], version = "0.28.0" } [tool.poetry.extras] graph = ["pygraphviz"] -worker = ["celery", "django-celery-beat", "django-celery-results"] +worker = ["celery", "django-celery-beat", "django-celery-results", "celery-prometheus-exporter"] AI = ["openai"] jupyter = ["jupyter"]