From 9017f328f08c2b5f9caf597abd6195bd8da426ce Mon Sep 17 00:00:00 2001 From: James Wilson Date: Wed, 11 Aug 2021 16:05:29 +0100 Subject: [PATCH] Add comment explaining prometheus metrics endpoint body --- backend/telemetry_core/src/main.rs | 8 ++++++++ 1 file changed, 8 insertions(+) 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