Compare commits
2 Commits
c6976d88fd
...
1.17.1
Author | SHA1 | Date | |
---|---|---|---|
4fb94bdd6d | |||
e2582373ad |
2
.cz.yaml
2
.cz.yaml
@ -17,5 +17,5 @@ commitizen:
|
||||
prerelease_offset: 1
|
||||
tag_format: $version
|
||||
update_changelog_on_bump: false
|
||||
version: 1.17.0
|
||||
version: 1.17.1
|
||||
version_scheme: semver
|
||||
|
@ -1,3 +1,9 @@
|
||||
## 1.17.1 (2025-06-02)
|
||||
|
||||
### Fixes
|
||||
|
||||
- **base**: Add python metrics to prometheus exporter
|
||||
|
||||
## 1.17.0 (2025-05-16)
|
||||
|
||||
### feat
|
||||
|
78
app/centurion/celery.py
Normal file
78
app/centurion/celery.py
Normal file
@ -0,0 +1,78 @@
|
||||
import logging
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from celery import Celery, signals
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from prometheus_client import multiprocess, start_http_server, REGISTRY
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'centurion.settings')
|
||||
|
||||
worker = Celery('app')
|
||||
|
||||
worker.config_from_object(f'django.conf:settings', namespace='CELERY')
|
||||
|
||||
worker.autodiscover_tasks()
|
||||
|
||||
|
||||
@worker.task(bind=True, ignore_result=True)
|
||||
def debug_task(self):
|
||||
print(f'Request: {self!r}')
|
||||
|
||||
|
||||
|
||||
@signals.worker_ready.connect()
|
||||
def setup_prometheus(**kwargs):
|
||||
|
||||
if not getattr(settings, 'METRICS_ENABLED', False):
|
||||
return
|
||||
|
||||
proc_path = None
|
||||
|
||||
try:
|
||||
proc_path = os.environ["PROMETHEUS_MULTIPROC_DIR"]
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
if not proc_path:
|
||||
|
||||
os.environ["PROMETHEUS_MULTIPROC_DIR"] = settings.METRICS_MULTIPROC_DIR
|
||||
|
||||
proc_path = os.environ["PROMETHEUS_MULTIPROC_DIR"]
|
||||
|
||||
|
||||
logger.info(f'Setting up prometheus metrics HTTP server on port {str(settings.METRICS_EXPORT_PORT)}.')
|
||||
|
||||
multiproc_folder_path = _setup_multiproc_folder()
|
||||
|
||||
registry = REGISTRY
|
||||
|
||||
logger.info(f'Setting up prometheus metrics directory.')
|
||||
|
||||
multiprocess.MultiProcessCollector(registry, path=multiproc_folder_path)
|
||||
|
||||
logger.info(f'Starting prometheus metrics server.')
|
||||
|
||||
start_http_server( settings.METRICS_EXPORT_PORT, registry=registry)
|
||||
|
||||
logger.info(f'Starting prometheus serving on port {str(settings.METRICS_EXPORT_PORT)}.')
|
||||
|
||||
|
||||
|
||||
def _setup_multiproc_folder():
|
||||
|
||||
coordination_dir = Path(os.environ["PROMETHEUS_MULTIPROC_DIR"])
|
||||
|
||||
coordination_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
for filepath in coordination_dir.glob("*.db"):
|
||||
|
||||
filepath.unlink()
|
||||
|
||||
return coordination_dir
|
@ -5,7 +5,7 @@ from pathlib import Path
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from prometheus_client import CollectorRegistry, multiprocess, start_http_server
|
||||
from prometheus_client import multiprocess, start_http_server, REGISTRY
|
||||
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ def when_ready(_):
|
||||
|
||||
multiproc_folder_path = _setup_multiproc_folder()
|
||||
|
||||
registry = CollectorRegistry()
|
||||
registry = REGISTRY
|
||||
|
||||
logger.info(f'Setting up prometheus metrics directory.')
|
||||
|
||||
|
Reference in New Issue
Block a user