Enhance OPC Metrics Handling and Refactor Write Operations - Updated the OPC class to return response times for write operations, improving metrics tracking. - Refactored the Gates activity to incorporate OPC metrics into the metrics writing process. - Adjusted the manage_output_tags method in OpcRepository to return response times for each tag written. - Modified tests to validate the new metrics structure and ensure correct behavior of the updated methods.
73 lines
2.4 KiB
Python
73 lines
2.4 KiB
Python
"""
|
|
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 Counter, Gauge, 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', 'tag'],
|
|
)
|
|
|
|
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', 'tag'],
|
|
buckets=[0.01, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0],
|
|
)
|