From 4cfbf57428991a9800da5a85c30d41fc76c109a1 Mon Sep 17 00:00:00 2001 From: jorgepastorr Date: Thu, 25 Jan 2024 19:34:54 +0100 Subject: [PATCH] metrics reduce code get top 10 resources --- orchestra/contrib/metrics/custom_metrics.py | 36 +++++++++------------ 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/orchestra/contrib/metrics/custom_metrics.py b/orchestra/contrib/metrics/custom_metrics.py index 71e83578..84de2be8 100644 --- a/orchestra/contrib/metrics/custom_metrics.py +++ b/orchestra/contrib/metrics/custom_metrics.py @@ -12,18 +12,25 @@ from orchestra.contrib.saas.models import SaaS # Crear métricas de tipo Gauge con etiquetas usuarios_metrica = Gauge('usuarios', 'Número total de usuarios', ['tipo', 'estado']) -usuarios_top_size_metrica = Gauge('usuarios_top_size', 'Top 10 cuentas ocupan espacio', ['account']) websites_metrica = Gauge('websites_server', 'Número total de websites en server', ['target_server', 'estado']) databases_metrica = Gauge('databases', 'Número total de websites en server', ['target_server']) -databases_top_size_metrica = Gauge('databases_top_size', 'Top 10 databases ocupan espacio', ['database']) mailboxes_metrica = Gauge('mailbox', 'Número total de mailbox', ['estado']) -mailboxes_top_size_metrica = Gauge('mailboxes_top_size', 'Top 10 mailboxes ocupan espacio', ['mailbox']) lists_metrica = Gauge('lists', 'Número total de listas') saas_metrica = Gauge('saas', 'Número total de saas', ['service', 'estado']) -saas_top_size_metrica = Gauge('saas_top_size', 'Top 10 saas ocupan espacio', ['saas']) + +usuarios_top_size_metrica = Gauge('usuarios_top_size', 'Top 10 cuentas ocupan espacio', ['object']) +databases_top_size_metrica = Gauge('databases_top_size', 'Top 10 databases ocupan espacio', ['object']) +mailboxes_top_size_metrica = Gauge('mailboxes_top_size', 'Top 10 mailboxes ocupan espacio', ['object']) +saas_top_size_metrica = Gauge('saas_top_size', 'Top 10 saas ocupan espacio', ['object']) + + +def get_size_resourcedata(id_resource, metrica): + top_resources = ResourceData.objects.filter(resource_id=id_resource, used__isnull=False).order_by('-used')[:10] + for resourcedata in top_resources: + metrica.labels(object=resourcedata.content_object_repr).set(resourcedata.used) def actualizar_metrica_usuarios(): - # Generar una lista de usuarios aleatorios para el ejemplo + get_size_resourcedata(4, usuarios_top_size_metrica) usuarios = Account.objects.all() user_dict = {} @@ -41,10 +48,6 @@ def actualizar_metrica_usuarios(): usuarios_metrica.labels(tipo=type, estado='activo').set(value['activo']) usuarios_metrica.labels(tipo=type, estado='no_activo').set(value['inactivo']) - top_resources = ResourceData.objects.filter(resource_id=4, used__isnull=False).order_by('-used')[:10] - for resourcedata in top_resources: - usuarios_top_size_metrica.labels(account=resourcedata.content_object_repr).set(resourcedata.used) - def actualizar_metrica_websites(): websites = Website.objects.all() @@ -65,6 +68,7 @@ def actualizar_metrica_websites(): def actualizar_metrica_databases(): + get_size_resourcedata(5, databases_top_size_metrica) databases = Database.objects.all() data = {} @@ -76,12 +80,9 @@ def actualizar_metrica_databases(): for server, value in data.items(): databases_metrica.labels(target_server=server).set(value['total']) - top_resources = ResourceData.objects.filter(resource_id=5, used__isnull=False).order_by('-used')[:10] - for resourcedata in top_resources: - databases_top_size_metrica.labels(database=resourcedata.content_object_repr).set(resourcedata.used) - def actualizar_metrica_mailboxes(): + get_size_resourcedata(1, mailboxes_top_size_metrica) mailboxes = Mailbox.objects.all() mailbox_activos = sum(1 for mailbox in mailboxes if mailbox.is_active) @@ -90,16 +91,13 @@ def actualizar_metrica_mailboxes(): mailboxes_metrica.labels(estado='activo').set(mailbox_activos) mailboxes_metrica.labels(estado='no_activo').set(mailbox_inactivos) - top_resources = ResourceData.objects.filter(resource_id=1, used__isnull=False).order_by('-used')[:10] - for resourcedata in top_resources: - mailboxes_top_size_metrica.labels(mailbox=resourcedata.content_object_repr).set(resourcedata.used) - def actualizar_metrica_lists(): lists = List.objects.all() lists_metrica.set(len(lists)) def actualizar_metrica_saas(): + get_size_resourcedata(23, saas_top_size_metrica) saases = SaaS.objects.all() saas_dict = {} @@ -115,7 +113,3 @@ def actualizar_metrica_saas(): for servicio, value in saas_dict.items(): saas_metrica.labels(service=servicio, estado='activo').set(value['activo']) saas_metrica.labels(service=servicio, estado='no_activo').set(value['inactivo']) - - top_resources = ResourceData.objects.filter(resource_id=23, used__isnull=False).order_by('-used')[:10] - for resourcedata in top_resources: - saas_top_size_metrica.labels(saas=resourcedata.content_object_repr).set(resourcedata.used) \ No newline at end of file