Logging et Observabilité¶
Le module de logging injecte automatiquement le contexte tenant dans chaque enregistrement de log. Le module d’observabilité enrichit les spans OpenTelemetry.
Logging Structuré¶
Module : src.share_kernel.infrastructure.logging
Format de log recommandé pour la sortie structurée.
Observabilité (OpenTelemetry)¶
Module : src.share_kernel.infrastructure.observability
Ajoute les attributs tenant au span OpenTelemetry courant :
tenant.idtenant.slugcorrelation.id
Ajoute les attributs d’évaluation ABAC au span courant :
abac.decisionabac.policy_id
Décorateur pour ajouter le traçage OpenTelemetry à une tâche Celery.
from src.share_kernel.infrastructure.observability import traced_task @traced_task def process_order(order_id): # Un span "celery.process_order" est créé automatiquement ...
Middleware Django qui enrichit les spans OpenTelemetry avec le contexte tenant. À placer après
TenantMiddlewaredansMIDDLEWARE.MIDDLEWARE = [ ... 'src.module.tenant.middleware.TenantMiddleware', 'src.share_kernel.infrastructure.observability.SpanAttributeMiddleware', ... ]
Métriques simples¶
Incrémente un compteur simple. Les données sont loggées de manière structurée.
from src.share_kernel.infrastructure.observability import increment_metric increment_metric("abac.evaluation", {"decision": "allow", "tenant": "acme"})
Enregistre une observation de durée.
Context manager pour mesurer et enregistrer la durée d’un bloc.
from src.share_kernel.infrastructure.observability import MeasureDuration with MeasureDuration("abac.evaluation_time", {"engine": "json"}): result = evaluate_policies(request)