diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpoint.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpoint.java index eb179c543842..be0aec1cf441 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpoint.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpoint.java @@ -56,7 +56,7 @@ public WebEndpointResponse scrape(TextOutputFormat format, @Nullable Set ? this.collectorRegistry.filteredMetricFamilySamples(includedNames) : this.collectorRegistry.metricFamilySamples(); format.write(writer, samples); - return new WebEndpointResponse<>(writer.toString(), format); + return new WebEndpointResponse<>(writer.toString(), format.getContentType()); } catch (IOException ex) { // This actually never happens since StringWriter doesn't throw an IOException diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/TextOutputFormat.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/TextOutputFormat.java index 4831d37cf3f0..858066d0fd99 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/TextOutputFormat.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/TextOutputFormat.java @@ -24,6 +24,7 @@ import io.prometheus.client.exporter.common.TextFormat; import org.springframework.boot.actuate.endpoint.Producible; +import org.springframework.http.MediaType; import org.springframework.util.MimeType; import org.springframework.util.MimeTypeUtils; @@ -38,7 +39,7 @@ public enum TextOutputFormat implements Producible { /** * OpenMetrics text version 1.0.0. */ - CONTENT_TYPE_OPENMETRICS_100(TextFormat.CONTENT_TYPE_OPENMETRICS_100) { + CONTENT_TYPE_OPENMETRICS_100("application/openmetrics-text") { @Override void write(Writer writer, Enumeration samples) throws IOException { @@ -50,7 +51,7 @@ void write(Writer writer, Enumeration samples) throws IOExc /** * Prometheus text version 0.0.4. */ - CONTENT_TYPE_004(TextFormat.CONTENT_TYPE_004) { + CONTENT_TYPE_004(MediaType.TEXT_PLAIN_VALUE) { @Override void write(Writer writer, Enumeration samples) throws IOException { @@ -61,8 +62,11 @@ void write(Writer writer, Enumeration samples) throws IOExc private final MimeType mimeType; + private final MimeType contentType; + TextOutputFormat(String mimeType) { this.mimeType = MimeTypeUtils.parseMimeType(mimeType); + this.contentType = MimeTypeUtils.parseMimeType(TextFormat.chooseContentType(mimeType)); } @Override @@ -70,6 +74,10 @@ public MimeType getProducedMimeType() { return this.mimeType; } + MimeType getContentType() { + return this.contentType; + } + abstract void write(Writer writer, Enumeration samples) throws IOException; }