""" Métriques Prometheus pour RPA Vision Ce module définit toutes les métriques Prometheus utilisées pour monitorer le système RPA. """ from prometheus_client import Counter, Histogram, Gauge, Info # ============================================================================= # Counters - Métriques qui ne font qu'augmenter # ============================================================================= workflow_executions_total = Counter( 'workflow_executions_total', 'Total workflow executions', ['workflow_id', 'status'] ) log_entries_total = Counter( 'log_entries_total', 'Total log entries', ['level', 'component'] ) chain_executions_total = Counter( 'chain_executions_total', 'Total chain executions', ['chain_id', 'status'] ) trigger_fires_total = Counter( 'trigger_fires_total', 'Total trigger fires', ['trigger_type', 'workflow_id'] ) # ============================================================================= # Histograms - Distribution de valeurs # ============================================================================= workflow_duration_seconds = Histogram( 'workflow_duration_seconds', 'Workflow execution duration in seconds', ['workflow_id'], buckets=(0.1, 0.5, 1.0, 2.5, 5.0, 10.0, 30.0, 60.0, 120.0, 300.0, float('inf')) ) chain_duration_seconds = Histogram( 'chain_duration_seconds', 'Chain execution duration in seconds', ['chain_id'], buckets=(1.0, 5.0, 10.0, 30.0, 60.0, 120.0, 300.0, 600.0, float('inf')) ) # ============================================================================= # Gauges - Valeurs qui peuvent augmenter ou diminuer # ============================================================================= active_workflows = Gauge( 'active_workflows', 'Number of currently active workflows' ) active_chains = Gauge( 'active_chains', 'Number of currently active chains' ) error_rate = Gauge( 'error_rate', 'Current error rate percentage' ) enabled_triggers = Gauge( 'enabled_triggers', 'Number of enabled triggers' ) # ============================================================================= # Info - Informations système # ============================================================================= system_info = Info( 'rpa_system', 'RPA system information' ) # Initialiser les informations système system_info.info({ 'version': '3.0.0', 'component': 'rpa_vision', 'monitoring': 'enabled' }) # ============================================================================= # Fonctions utilitaires # ============================================================================= def increment_workflow_execution(workflow_id: str, success: bool): """ Incrémente le compteur d'exécution de workflow. Args: workflow_id: ID du workflow success: True si succès, False si échec """ status = 'success' if success else 'failure' workflow_executions_total.labels(workflow_id=workflow_id, status=status).inc() def record_workflow_duration(workflow_id: str, duration: float): """ Enregistre la durée d'exécution d'un workflow. Args: workflow_id: ID du workflow duration: Durée en secondes """ workflow_duration_seconds.labels(workflow_id=workflow_id).observe(duration) def increment_log_entry(level: str, component: str): """ Incrémente le compteur d'entrées de log. Args: level: Niveau de log (INFO, WARNING, ERROR, DEBUG) component: Composant source """ log_entries_total.labels(level=level, component=component).inc() def increment_chain_execution(chain_id: str, success: bool): """ Incrémente le compteur d'exécution de chaîne. Args: chain_id: ID de la chaîne success: True si succès, False si échec """ status = 'success' if success else 'failure' chain_executions_total.labels(chain_id=chain_id, status=status).inc() def record_chain_duration(chain_id: str, duration: float): """ Enregistre la durée d'exécution d'une chaîne. Args: chain_id: ID de la chaîne duration: Durée en secondes """ chain_duration_seconds.labels(chain_id=chain_id).observe(duration) def increment_trigger_fire(trigger_type: str, workflow_id: str): """ Incrémente le compteur de déclenchements. Args: trigger_type: Type de trigger (schedule, file, manual) workflow_id: ID du workflow déclenché """ trigger_fires_total.labels(trigger_type=trigger_type, workflow_id=workflow_id).inc() def set_active_workflows(count: int): """ Met à jour le nombre de workflows actifs. Args: count: Nombre de workflows actifs """ active_workflows.set(count) def set_active_chains(count: int): """ Met à jour le nombre de chaînes actives. Args: count: Nombre de chaînes actives """ active_chains.set(count) def set_error_rate(rate: float): """ Met à jour le taux d'erreur. Args: rate: Taux d'erreur en pourcentage (0-100) """ error_rate.set(rate) def set_enabled_triggers(count: int): """ Met à jour le nombre de triggers activés. Args: count: Nombre de triggers activés """ enabled_triggers.set(count)