Fix broken content negotiation for Prometheus with OpenMetrics
Update Prometheus `TextOutputFormat` so that OpenMetrics is used in preference to text output when an appropriate accept header is found. If the accept header contains `*/*` or is missing then the text format will be used. See gh-28130
This commit is contained in:
@@ -35,18 +35,6 @@ import org.springframework.util.MimeTypeUtils;
|
||||
*/
|
||||
public enum TextOutputFormat implements Producible<TextOutputFormat> {
|
||||
|
||||
/**
|
||||
* OpenMetrics text version 1.0.0.
|
||||
*/
|
||||
CONTENT_TYPE_OPENMETRICS_100(TextFormat.CONTENT_TYPE_OPENMETRICS_100) {
|
||||
|
||||
@Override
|
||||
void write(Writer writer, Enumeration<MetricFamilySamples> samples) throws IOException {
|
||||
TextFormat.writeOpenMetrics100(writer, samples);
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Prometheus text version 0.0.4.
|
||||
*/
|
||||
@@ -57,6 +45,23 @@ public enum TextOutputFormat implements Producible<TextOutputFormat> {
|
||||
TextFormat.write004(writer, samples);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDefault() {
|
||||
return true;
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* OpenMetrics text version 1.0.0.
|
||||
*/
|
||||
CONTENT_TYPE_OPENMETRICS_100(TextFormat.CONTENT_TYPE_OPENMETRICS_100) {
|
||||
|
||||
@Override
|
||||
void write(Writer writer, Enumeration<MetricFamilySamples> samples) throws IOException {
|
||||
TextFormat.writeOpenMetrics100(writer, samples);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
private final MimeType mimeType;
|
||||
|
||||
Reference in New Issue
Block a user