不知道如何更改 Prometheus 内容类型 header
Can't figure out how to change Prometheus content type header
所以我的指标都显示在我 end-point 的一行中,而不是每个指标换行。
我使用千分尺、spring、prometheus 和 scala。
我的控制器:
@RequestMapping(Array(""))
class MetricsController @Inject() (prometheusRegistry: PrometheusMeterRegistry) {
@RequestMapping(value = Array("/metrics"), method = Array(RequestMethod.GET))
def metricses(): String = {
prometheusRegistry.scrape()
}
}
是否足以改变我自己编写指标的方式?
我尝试添加 scrape(TextFormat.CONTENT_TYPE_004)
,但没有任何改变。
它与 HTTP 响应 header 有关系吗?
是否可以添加:
.putHeader(HttpHeaders.CONTENT_TYPE, TextFormat.CONTENT_TYPE_004)
.end(registry.scrape());
如果是这样,我该怎么做?
谢谢
Prometheus(或其他兼容后端)将向您发送一个您不应忽略的 Accept
header(请阅读内容协商),但如果您想忽略它:
@GetMapping(path = "/metrics", produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody String metrics() {
return registry.scrape();
}
如果您不想忽略它,TextFormat
有一个 chooseContentType
方法,您可以使用该方法根据 Accept
header 获取内容类型:
@GetMapping(path = "/metrics")
@ResponseBody ResponseEntity<String> metrics(@RequestHeader("accept") String accept) {
String contentType = TextFormat.chooseContentType(accept);
return ResponseEntity
.ok()
.contentType(MediaType.valueOf(contentType))
.body(registry.scrape(contentType));
}
或者您也可以set-up内容协商:https://www.baeldung.com/spring-mvc-content-negotiation-json-xml
所以我的指标都显示在我 end-point 的一行中,而不是每个指标换行。 我使用千分尺、spring、prometheus 和 scala。
我的控制器:
@RequestMapping(Array(""))
class MetricsController @Inject() (prometheusRegistry: PrometheusMeterRegistry) {
@RequestMapping(value = Array("/metrics"), method = Array(RequestMethod.GET))
def metricses(): String = {
prometheusRegistry.scrape()
}
}
是否足以改变我自己编写指标的方式?
我尝试添加 scrape(TextFormat.CONTENT_TYPE_004)
,但没有任何改变。
它与 HTTP 响应 header 有关系吗?
是否可以添加:
.putHeader(HttpHeaders.CONTENT_TYPE, TextFormat.CONTENT_TYPE_004)
.end(registry.scrape());
如果是这样,我该怎么做?
谢谢
Prometheus(或其他兼容后端)将向您发送一个您不应忽略的 Accept
header(请阅读内容协商),但如果您想忽略它:
@GetMapping(path = "/metrics", produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody String metrics() {
return registry.scrape();
}
如果您不想忽略它,TextFormat
有一个 chooseContentType
方法,您可以使用该方法根据 Accept
header 获取内容类型:
@GetMapping(path = "/metrics")
@ResponseBody ResponseEntity<String> metrics(@RequestHeader("accept") String accept) {
String contentType = TextFormat.chooseContentType(accept);
return ResponseEntity
.ok()
.contentType(MediaType.valueOf(contentType))
.body(registry.scrape(contentType));
}
或者您也可以set-up内容协商:https://www.baeldung.com/spring-mvc-content-negotiation-json-xml