From 8500472c41622ec6aa3415d8e5ff892c9c9d023e Mon Sep 17 00:00:00 2001 From: kkeirstead <85592574+kkeirstead@users.noreply.github.com> Date: Thu, 30 Mar 2023 09:17:50 -0700 Subject: [PATCH] Represent SDM Counters as Gauges In Prometheus Exposition Format (#4098) --- .../Metrics/MetricsStore.cs | 2 +- .../MetricsFormattingTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.Diagnostics.Monitoring.WebApi/Metrics/MetricsStore.cs b/src/Microsoft.Diagnostics.Monitoring.WebApi/Metrics/MetricsStore.cs index 1ebfdbef892..5d3b01425cd 100644 --- a/src/Microsoft.Diagnostics.Monitoring.WebApi/Metrics/MetricsStore.cs +++ b/src/Microsoft.Diagnostics.Monitoring.WebApi/Metrics/MetricsStore.cs @@ -200,8 +200,8 @@ private static string GetMetricType(EventType eventType) { switch (eventType) { + // In Prometheus, rates are treated as gauges due to their non-monotonic nature case EventType.Rate: - return "counter"; case EventType.Gauge: return "gauge"; case EventType.Histogram: diff --git a/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/MetricsFormattingTests.cs b/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/MetricsFormattingTests.cs index 22fa08055e2..ae4712896c1 100644 --- a/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/MetricsFormattingTests.cs +++ b/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/MetricsFormattingTests.cs @@ -99,7 +99,7 @@ public async Task CounterFormat_Test() Assert.Equal(3, lines.Count); Assert.Equal($"# HELP {metricName}{payload.Unit} {payload.DisplayName}", lines[0]); - Assert.Equal($"# TYPE {metricName} counter", lines[1]); + Assert.Equal($"# TYPE {metricName} gauge", lines[1]); Assert.Equal($"{metricName} {payload.Value} {new DateTimeOffset(payload.Timestamp).ToUnixTimeMilliseconds()}", lines[2]); }