This is an automated email from the ASF dual-hosted git repository.

bowenli86 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new d996802ab86 [FLINK-29984][flink-metrics] Export Prometheus histogram 
min and max (#28465)
d996802ab86 is described below

commit d996802ab864848aad42e9a16756de5ccacacab3
Author: bowenli86 <[email protected]>
AuthorDate: Wed Jun 17 17:22:44 2026 -0700

    [FLINK-29984][flink-metrics] Export Prometheus histogram min and max 
(#28465)
    
    Expose histogram min and max from the Prometheus reporters as summary 
quantiles 0.0 and 1.0.
---
 .../content.zh/docs/deployment/metric_reporters.md |  2 +-
 docs/content/docs/deployment/metric_reporters.md   |  2 +-
 .../prometheus/AbstractPrometheusReporter.java     | 26 +++++++++++++++++-----
 .../PrometheusReporterTaskScopeTest.java           | 24 ++++++++++++++++++++
 .../metrics/prometheus/PrometheusReporterTest.java |  2 ++
 5 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/docs/content.zh/docs/deployment/metric_reporters.md 
b/docs/content.zh/docs/deployment/metric_reporters.md
index 947b97742db..4696a58278a 100644
--- a/docs/content.zh/docs/deployment/metric_reporters.md
+++ b/docs/content.zh/docs/deployment/metric_reporters.md
@@ -199,7 +199,7 @@ Flink 指标类型与 Prometheus 指标类型对应关系如下:
 | --------- |------------|-----------------------------------------|
 | Counter   | Gauge      | Prometheus 的 counter 不支持累加。         |
 | Gauge     | Gauge      | 只支持数字与布尔类型。                      |
-| Histogram | Summary    | 分位数为 .5,.75,.95,.98,.99 和 .999。  |
+| Histogram | Summary    | 分位数为 0.0,.5,.75,.95,.98,.99,.999 和 1.0。  |
 | Meter     | Gauge      | Prometheus 的 gauge 为 meter 的百分比形式。 |
 
 所有的 Flink 运行指标变量(见 [List of all Variables]({{< ref "docs/ops/metrics" 
>}}#list-of-all-variables))都会按照 label 形式上报给 Prometheus。
diff --git a/docs/content/docs/deployment/metric_reporters.md 
b/docs/content/docs/deployment/metric_reporters.md
index 0c7fe48d942..809520f5419 100644
--- a/docs/content/docs/deployment/metric_reporters.md
+++ b/docs/content/docs/deployment/metric_reporters.md
@@ -189,7 +189,7 @@ Flink metric types are mapped to Prometheus metric types as 
follows:
 | --------- |------------|------------------------------------------|
 | Counter   | Gauge      |Prometheus counters cannot be decremented.|
 | Gauge     | Gauge      |Only numbers and booleans are supported.  |
-| Histogram | Summary    |Quantiles .5, .75, .95, .98, .99 and .999 |
+| Histogram | Summary    |Quantiles 0.0, .5, .75, .95, .98, .99, .999 and 1.0 |
 | Meter     | Gauge      |The gauge exports the meter's rate.       |
 
 All Flink metrics variables (see [List of all Variables]({{< ref 
"docs/ops/metrics" >}}#list-of-all-variables)) are exported to Prometheus as 
labels. 
diff --git 
a/flink-metrics/flink-metrics-prometheus/src/main/java/org/apache/flink/metrics/prometheus/AbstractPrometheusReporter.java
 
b/flink-metrics/flink-metrics-prometheus/src/main/java/org/apache/flink/metrics/prometheus/AbstractPrometheusReporter.java
index 272a64eeb5a..6354d88433a 100644
--- 
a/flink-metrics/flink-metrics-prometheus/src/main/java/org/apache/flink/metrics/prometheus/AbstractPrometheusReporter.java
+++ 
b/flink-metrics/flink-metrics-prometheus/src/main/java/org/apache/flink/metrics/prometheus/AbstractPrometheusReporter.java
@@ -389,14 +389,28 @@ public abstract class AbstractPrometheusReporter 
implements MetricReporter {
                             labelValues,
                             histogram.getCount()));
             final HistogramStatistics statistics = histogram.getStatistics();
+            addQuantileSample(labelValues, samples, "0.0", 
statistics.getMin());
             for (final Double quantile : QUANTILES) {
-                samples.add(
-                        new MetricFamilySamples.Sample(
-                                metricName,
-                                labelNamesWithQuantile,
-                                addToList(labelValues, quantile.toString()),
-                                statistics.getQuantile(quantile)));
+                addQuantileSample(
+                        labelValues,
+                        samples,
+                        quantile.toString(),
+                        statistics.getQuantile(quantile));
             }
+            addQuantileSample(labelValues, samples, "1.0", 
statistics.getMax());
+        }
+
+        private void addQuantileSample(
+                final List<String> labelValues,
+                final List<MetricFamilySamples.Sample> samples,
+                final String quantile,
+                final double value) {
+            samples.add(
+                    new MetricFamilySamples.Sample(
+                            metricName,
+                            labelNamesWithQuantile,
+                            addToList(labelValues, quantile),
+                            value));
         }
     }
 
diff --git 
a/flink-metrics/flink-metrics-prometheus/src/test/java/org/apache/flink/metrics/prometheus/PrometheusReporterTaskScopeTest.java
 
b/flink-metrics/flink-metrics-prometheus/src/test/java/org/apache/flink/metrics/prometheus/PrometheusReporterTaskScopeTest.java
index 354d0b9ebd8..9afff9f4026 100644
--- 
a/flink-metrics/flink-metrics-prometheus/src/test/java/org/apache/flink/metrics/prometheus/PrometheusReporterTaskScopeTest.java
+++ 
b/flink-metrics/flink-metrics-prometheus/src/test/java/org/apache/flink/metrics/prometheus/PrometheusReporterTaskScopeTest.java
@@ -155,6 +155,30 @@ class PrometheusReporterTaskScopeTest {
                                     addToArray(LABEL_VALUES_2, "" + quantile)))
                     .isEqualTo(quantile);
         }
+        assertThat(
+                        reporter.registry.getSampleValue(
+                                getLogicalScope(METRIC_NAME),
+                                labelNamesWithQuantile,
+                                addToArray(LABEL_VALUES_1, "0.0")))
+                .isEqualTo(histogram1.getStatistics().getMin());
+        assertThat(
+                        reporter.registry.getSampleValue(
+                                getLogicalScope(METRIC_NAME),
+                                labelNamesWithQuantile,
+                                addToArray(LABEL_VALUES_1, "1.0")))
+                .isEqualTo(histogram1.getStatistics().getMax());
+        assertThat(
+                        reporter.registry.getSampleValue(
+                                getLogicalScope(METRIC_NAME),
+                                labelNamesWithQuantile,
+                                addToArray(LABEL_VALUES_2, "0.0")))
+                .isEqualTo(histogram2.getStatistics().getMin());
+        assertThat(
+                        reporter.registry.getSampleValue(
+                                getLogicalScope(METRIC_NAME),
+                                labelNamesWithQuantile,
+                                addToArray(LABEL_VALUES_2, "1.0")))
+                .isEqualTo(histogram2.getStatistics().getMax());
     }
 
     @Test
diff --git 
a/flink-metrics/flink-metrics-prometheus/src/test/java/org/apache/flink/metrics/prometheus/PrometheusReporterTest.java
 
b/flink-metrics/flink-metrics-prometheus/src/test/java/org/apache/flink/metrics/prometheus/PrometheusReporterTest.java
index 8759ab0db07..2a0c3b14812 100644
--- 
a/flink-metrics/flink-metrics-prometheus/src/test/java/org/apache/flink/metrics/prometheus/PrometheusReporterTest.java
+++ 
b/flink-metrics/flink-metrics-prometheus/src/test/java/org/apache/flink/metrics/prometheus/PrometheusReporterTest.java
@@ -151,6 +151,8 @@ class PrometheusReporterTest {
                                     + quantile
                                     + "\n");
         }
+        assertThat(response).contains(summaryName + "{" + DIMENSIONS + 
",quantile=\"0.0\",} 7.0\n");
+        assertThat(response).contains(summaryName + "{" + DIMENSIONS + 
",quantile=\"1.0\",} 6.0\n");
     }
 
     /**

Reply via email to