diff --git a/webapp/models/source.py b/webapp/models/source.py index 9907409b..5c7f33c1 100644 --- a/webapp/models/source.py +++ b/webapp/models/source.py @@ -79,4 +79,4 @@ def combined_updated_at(self) -> datetime: return self.realtime_data_updated_at if self.static_data_updated_at: return self.static_data_updated_at - return self.modified_at + return self.modified diff --git a/webapp/prometheus_api/prometheus_handler.py b/webapp/prometheus_api/prometheus_handler.py index 37cb0565..345ce1cd 100644 --- a/webapp/prometheus_api/prometheus_handler.py +++ b/webapp/prometheus_api/prometheus_handler.py @@ -43,6 +43,11 @@ def __init__( def get_metrics(self) -> str: sources = self.source_repository.fetch_sources() + last_modified_metrics = Metrics( + help='Last modification in seconds from now', + type=MetricType.gauge, + identifier='app_ocpdb_source_last_modified', + ) last_static_update_metrics = Metrics( help='Last static update in seconds from now', type=MetricType.gauge, @@ -77,6 +82,13 @@ def get_metrics(self) -> str: if source.static_status in [SourceStatus.DISABLED, SourceStatus.PROVISIONED]: continue + last_modified_metrics.metrics.append( + SourceMetric( + source=source.uid, + value=int((datetime.now(tz=timezone.utc) - source.modified).total_seconds()), + ) + ) + if source.static_data_updated_at: last_static_update_metrics.metrics.append( SourceMetric( @@ -121,7 +133,8 @@ def get_metrics(self) -> str: ) metrics = ( - failed_static_sources.to_metrics() + last_modified_metrics.to_metrics() + + failed_static_sources.to_metrics() + last_static_update_metrics.to_metrics() + source_static_errors.to_metrics() + failed_realtime_sources.to_metrics()