""" Laborious Metrics Module This module defines all Prometheus metrics used by the Sientia DataOps Laborious system for monitoring and observability. The metrics provide insights into system performance, prediction quality, and operational health. The metrics are designed to be scraped by Prometheus and can be visualized in Grafana or other monitoring dashboards to provide real-time visibility into the system's operation. Key Metric Categories: - Application Health: Overall system status and availability - Prediction Operations: Count and performance of prediction operations - Data Quality: Confidence levels and validation results - Export Operations: Database and OPC export performance - Response Times: Performance monitoring for various operations Metric Labels: - pod_id: Kubernetes pod identifier for multi-instance deployments - model_name: Name of the ML model being used - pipeline_name: Name of the prediction pipeline - opc_server_id: Identifier for OPC server operations """ from prometheus_client import Gauge, Counter, Histogram # Application health metric APP_UP = Gauge( "app_up", "Indicates if the application is running (1) or shutting down (0)", ["pod_id"], ) # Core labels used across multiple metrics CORE_LABELS = ["pod_id", "model_name", "pipeline_name"] # Prediction operation metrics PREDICTIONS_WRITTEN_COUNT = Counter( "laborious_predictions_written_count", "Number of predictions written to the database table predictions", CORE_LABELS, ) # Prediction quality metrics PREDICTION_CONFIDENCE_MONITOR = Gauge( "laborious_prediction_confidence_monitor", "Current confidence of each prediction", CORE_LABELS, ) # Performance monitoring metrics PREDICTION_RESPONSE_TIME_MONITOR = Histogram( "laborious_prediction_response_time_monitor", "Current response time of each prediction", CORE_LABELS, buckets=[0.01, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0] ) # OPC export metrics PREDICTION_OPC_WRITING_COUNT = Counter( "laborious_prediction_opc_writing_count", "Number of predictions written to the OPC server", [*CORE_LABELS, "opc_server_id"], ) PREDICTION_OPC_WRITING_RESPONSE_TIME_MONITOR = Histogram( "laborious_prediction_opc_writing_response_time_monitor", "Current response time of each prediction written to the OPC server", [*CORE_LABELS, "opc_server_id"], buckets=[0.01, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0] )