Features: Prometheus for celery workers

This commit is contained in:
Egor Pavlovich Gorbunov 2025-06-05 19:36:57 +03:00
parent 8db354c85a
commit 5b2c642afc
4 changed files with 21 additions and 11 deletions

View file

@ -83,7 +83,7 @@ services:
--max-tasks-per-child=100 \ --max-tasks-per-child=100 \
--max-memory-per-child=512000 \ --max-memory-per-child=512000 \
--soft-time-limit=10800 \ --soft-time-limit=10800 \
--time-limit=21600" --time-limit=21600 & poetry run celery_prometheus_exporter"
volumes: volumes:
- .:/app - .:/app
env_file: env_file:

View file

@ -13,13 +13,7 @@ scrape_configs:
metrics_path: /prometheus/metrics metrics_path: /prometheus/metrics
scheme: http scheme: http
static_configs: static_configs:
- targets: [ 'worker:8000' ] - targets: [ 'worker:8888' ]
- job_name: 'evibes-beat'
metrics_path: /prometheus/metrics
scheme: http
static_configs:
- targets: [ 'beat:8000' ]
# - job_name: 'redis' # - job_name: 'redis'
# static_configs: # static_configs:

19
poetry.lock generated
View file

@ -397,6 +397,21 @@ yaml = ["PyYAML (>=3.10)"]
zookeeper = ["kazoo (>=1.3.1)"] zookeeper = ["kazoo (>=1.3.1)"]
zstd = ["zstandard (==0.23.0)"] 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]] [[package]]
name = "certifi" name = "certifi"
version = "2025.4.26" version = "2025.4.26"
@ -4502,9 +4517,9 @@ type = ["pytest-mypy"]
ai = ["openai"] ai = ["openai"]
graph = ["pygraphviz"] graph = ["pygraphviz"]
jupyter = ["jupyter"] jupyter = ["jupyter"]
worker = ["celery", "django-celery-beat", "django-celery-results"] worker = ["celery", "celery-prometheus-exporter", "django-celery-beat", "django-celery-results"]
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = ">=3.12,<3.13" python-versions = ">=3.12,<3.13"
content-hash = "41d93348d32ac7451ed8251fda80b409ae24ba8cc7cb2b28ef525114f5d4823b" content-hash = "8381fcab87bd578eaae8f88e24133866b78914a1967df332cdc09189d1fbd937"

View file

@ -15,6 +15,7 @@ cryptography = "44.0.3"
redis = "6.0.0" redis = "6.0.0"
httpx = "0.28.1" httpx = "0.28.1"
celery = { version = "5.5.2", optional = true } celery = { version = "5.5.2", optional = true }
celery-prometheus-exporter = { version = "1.7.0", optional = true }
pillow = "11.2.1" pillow = "11.2.1"
south = "1.0.2" south = "1.0.2"
pygraphviz = { version = "1.14", optional = true } pygraphviz = { version = "1.14", optional = true }
@ -69,7 +70,7 @@ drf-spectacular = { extras = ["sidecar"], version = "0.28.0" }
[tool.poetry.extras] [tool.poetry.extras]
graph = ["pygraphviz"] graph = ["pygraphviz"]
worker = ["celery", "django-celery-beat", "django-celery-results"] worker = ["celery", "django-celery-beat", "django-celery-results", "celery-prometheus-exporter"]
AI = ["openai"] AI = ["openai"]
jupyter = ["jupyter"] jupyter = ["jupyter"]