feat(base): Add django-prometheus for metrics export

ref: #156 #469
This commit is contained in:
2025-01-13 18:09:48 +09:30
parent 7e72bab4ba
commit 6b6c05f07d
4 changed files with 22 additions and 2 deletions

1
.vscode/launch.json vendored
View File

@ -23,6 +23,7 @@
"request": "launch", "request": "launch",
"module": "gunicorn", "module": "gunicorn",
"args": [ "args": [
"--config=../includes/etc/gunicorn.conf.py",
"--access-logfile", "--access-logfile",
"-", "-",
"--workers", "--workers",

View File

@ -64,9 +64,18 @@ CELERY_WORKER_CONCURRENCY = 2 # worker_concurrency - Default: Number of CPU cor
CELERY_WORKER_DEDUPLICATE_SUCCESSFUL_TASKS = True # worker_deduplicate_successful_tasks CELERY_WORKER_DEDUPLICATE_SUCCESSFUL_TASKS = True # worker_deduplicate_successful_tasks
CELERY_WORKER_MAX_TASKS_PER_CHILD = 1 # worker_max_tasks_per_child CELERY_WORKER_MAX_TASKS_PER_CHILD = 1 # worker_max_tasks_per_child
# CELERY_WORKER_MAX_MEMORY_PER_CHILD = 10000 # 10000=10mb worker_max_memory_per_child - Default: No limit. Type: int (kilobytes) # CELERY_WORKER_MAX_MEMORY_PER_CHILD = 10000 # 10000=10mb worker_max_memory_per_child - Default: No limit. Type: int (kilobytes)
# CELERY_TASK_SEND_SENT_EVENT = True CELERY_TASK_SEND_SENT_EVENT = True
CELERY_WORKER_SEND_TASK_EVENTS = True # worker_send_task_events CELERY_WORKER_SEND_TASK_EVENTS = True # worker_send_task_events
# PROMETHEUS_METRICS_EXPORT_PORT_RANGE = range(8010, 8010)
# PROMETHEUS_METRICS_EXPORT_PORT = 8010
# PROMETHEUS_METRICS_EXPORT_ADDRESS = ''
METRICS_ENABLED = True # Enable Metrics
METRICS_EXPORT_PORT = 8080 # Port to serve metrics on
METRICS_MULTIPROC_DIR = '/tmp/prometheus' # path the metrics from multiple-process' save to
# django setting. # django setting.
CACHES = { CACHES = {
'default': { 'default': {
@ -125,9 +134,11 @@ INSTALLED_APPS = [
'drf_spectacular_sidecar', 'drf_spectacular_sidecar',
'config_management.apps.ConfigManagementConfig', 'config_management.apps.ConfigManagementConfig',
'project_management.apps.ProjectManagementConfig', 'project_management.apps.ProjectManagementConfig',
'django_prometheus',
] ]
MIDDLEWARE = [ MIDDLEWARE = [
'django_prometheus.middleware.PrometheusBeforeMiddleware',
'corsheaders.middleware.CorsMiddleware', 'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
@ -138,6 +149,7 @@ MIDDLEWARE = [
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'core.middleware.get_request.RequestMiddleware', 'core.middleware.get_request.RequestMiddleware',
'app.middleware.timezone.TimezoneMiddleware', 'app.middleware.timezone.TimezoneMiddleware',
'django_prometheus.middleware.PrometheusAfterMiddleware',
] ]
@ -170,7 +182,7 @@ WSGI_APPLICATION = 'app.wsgi.application'
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django_prometheus.db.backends.sqlite3',
'NAME': str(BASE_DIR / 'db.sqlite3'), 'NAME': str(BASE_DIR / 'db.sqlite3'),
} }
} }

View File

@ -1,5 +1,8 @@
# ITSM Docker Settings # ITSM Docker Settings
# If metrics enabled, see https://nofusscomputing.com/projects/centurion_erp/administration/monitoring/#django-exporter-setup)
# to configure the database metrics.
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.sqlite3',

View File

@ -30,3 +30,7 @@ Pygments==2.18.0
celery==5.4.0 celery==5.4.0
django-celery-results==2.5.1 django-celery-results==2.5.1
sqlalchemy==2.0.31 sqlalchemy==2.0.31
# metrics
prometheus-client==0.21.1
django-prometheus==2.3.1