From 2e4629d45e1488d6857de95e1b95a8a989124944 Mon Sep 17 00:00:00 2001 From: lagertonne Date: Sat, 21 Dec 2024 22:14:53 +0100 Subject: [PATCH] metrics: Make metrics actually usable --- core/core/management/__init__.py | 0 core/core/management/commands/__init__.py | 0 .../management/commands/update_metrics.py | 8 ------- core/core/metrics.py | 23 +++++++++++-------- core/core/settings.py | 1 - deploy/ansible/playbooks/deploy-c3lf-sys3.yml | 10 -------- .../templates/c3lf-sys3-cron.service.j2 | 13 ----------- .../templates/c3lf-sys3-cron.timer.j2 | 9 -------- 8 files changed, 14 insertions(+), 50 deletions(-) delete mode 100644 core/core/management/__init__.py delete mode 100644 core/core/management/commands/__init__.py delete mode 100644 core/core/management/commands/update_metrics.py delete mode 100644 deploy/ansible/playbooks/templates/c3lf-sys3-cron.service.j2 delete mode 100644 deploy/ansible/playbooks/templates/c3lf-sys3-cron.timer.j2 diff --git a/core/core/management/__init__.py b/core/core/management/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/core/core/management/commands/__init__.py b/core/core/management/commands/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/core/core/management/commands/update_metrics.py b/core/core/management/commands/update_metrics.py deleted file mode 100644 index a51cfea..0000000 --- a/core/core/management/commands/update_metrics.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.core.management.base import BaseCommand, CommandError -from core.metrics import update_item_count - -class Command(BaseCommand): - help = "Refresh the metrics" - - def handle(self, *args, **options): - update_item_count() \ No newline at end of file diff --git a/core/core/metrics.py b/core/core/metrics.py index 4f79754..01c9719 100644 --- a/core/core/metrics.py +++ b/core/core/metrics.py @@ -1,11 +1,16 @@ -from prometheus_client import Gauge -from django_prometheus import exports -from inventory.models import * +from django.apps import apps +from prometheus_client.core import CounterMetricFamily, REGISTRY -g_items_total = Gauge('c3lf_items_total', 'Current Total items') +class ModelCountCollector(object): -def update_item_count(): - # Get the count of MyModel objects - count = Item.objects.count() - # Set the gauge to the current count - g_items_total.set(count) \ No newline at end of file + def collect(self): + counter = CounterMetricFamily('model_count', 'Number of objects per model', labels=['model', 'app']) + yield counter + if not apps.models_ready or not apps.apps_ready: + return + for app_name, app_config in apps.app_configs.items(): + for model in app_config.get_models(): + counter.add_metric([model.__name__, app_name], model.objects.count()) + yield counter + +REGISTRY.register(ModelCountCollector()) \ No newline at end of file diff --git a/core/core/settings.py b/core/core/settings.py index 31a024f..5a8f20f 100644 --- a/core/core/settings.py +++ b/core/core/settings.py @@ -70,7 +70,6 @@ INSTALLED_APPS = [ 'inventory', 'mail', 'notify_sessions', - 'core' ] REST_FRAMEWORK = { diff --git a/deploy/ansible/playbooks/deploy-c3lf-sys3.yml b/deploy/ansible/playbooks/deploy-c3lf-sys3.yml index 679f85a..fa5e892 100644 --- a/deploy/ansible/playbooks/deploy-c3lf-sys3.yml +++ b/deploy/ansible/playbooks/deploy-c3lf-sys3.yml @@ -311,16 +311,6 @@ notify: - restart c3lf-sys3 - - name: add c3lf-sys3-cron service - template: - src: templates/c3lf-sys3-cron.service.j2 - dest: /etc/systemd/system/c3lf-sys3-cron.service - - - name: add c3lf-sys3-cron timer - template: - src: templates/c3lf-sys3-cron.timer.j2 - dest: /etc/systemd/system/c3lf-sys3-cron.timer - - name: reload systemd systemd: daemon_reload: yes diff --git a/deploy/ansible/playbooks/templates/c3lf-sys3-cron.service.j2 b/deploy/ansible/playbooks/templates/c3lf-sys3-cron.service.j2 deleted file mode 100644 index 0df787e..0000000 --- a/deploy/ansible/playbooks/templates/c3lf-sys3-cron.service.j2 +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=c3lf sys3 background service -After=network.target - -[Service] -User=www-data -Group=www-data -WorkingDirectory=/var/www/c3lf-sys3 -ExecStart=/var/www/c3lf-sys3/venv/bin/python3 /var/www/c3lf-sys3/repo/core/manage.py update_metrics -Environment=DJANGO_SETTINGS_MODULE=core.settings - -[Install] -WantedBy=multi-user.target \ No newline at end of file diff --git a/deploy/ansible/playbooks/templates/c3lf-sys3-cron.timer.j2 b/deploy/ansible/playbooks/templates/c3lf-sys3-cron.timer.j2 deleted file mode 100644 index 6d888b4..0000000 --- a/deploy/ansible/playbooks/templates/c3lf-sys3-cron.timer.j2 +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Run Nextcloud cron.php every 5 minutes - -[Timer] -OnCalendar=minutely -Unit=c3lf-sys3-cron.service - -[Install] -WantedBy=timers.target \ No newline at end of file