diff --git a/backend/telemetry_core/src/main.rs b/backend/telemetry_core/src/main.rs index 1dc039d..0e2c61b 100644 --- a/backend/telemetry_core/src/main.rs +++ b/backend/telemetry_core/src/main.rs @@ -487,6 +487,13 @@ where async fn return_prometheus_metrics(aggregator: AggregatorSet) -> Response { let metrics = aggregator.latest_metrics(); + // Instead of using the rust prometheus library, we just split out the text format that prometheus expects + // ourselves, using whatever the latest metrics that we've captured so far are. See: + // + // https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md#text-format-details + // + // For an example and explanation of this text based format. The minimal output we produce here seems to + // be handled correctly when pointing a current version of prometheus at it. let mut s = String::new(); for (idx, m) in metrics.iter().enumerate() { s.push_str(&format!("telemetry_connected_feeds{{aggregator=\"{}\"}} {} {}\n", idx, m.connected_feeds, m.timestamp_unix_ms)); @@ -500,6 +507,7 @@ async fn return_prometheus_metrics(aggregator: AggregatorSet) -> Response