Skip to content
This repository has been archived by the owner on Apr 15, 2024. It is now read-only.

ISSUE-2161: When httpServerEnabled=true, Prometheus reports doesn't set content-type #104

Open
sijie opened this issue Jan 15, 2020 · 0 comments

Comments

@sijie
Copy link
Member

sijie commented Jan 15, 2020

Original Issue: apache#2161


BUG REPORT

Describe the bug

When running with httpServerEnabled set to true, /metrics endpoint stops sending a content-type header (this uses the MetricsService, see code here https://github.com/apache/bookkeeper/blob/28dee8464764b0edceeb31ce24424f0947b5789b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/http/service/MetricsService.java).
With the httpServerEnabled=false the PrometheusServlet is used, and it does set a content-type header (https://github.com/apache/bookkeeper/blob/28dee8464764b0edceeb31ce24424f0947b5789b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusServlet.java#L44)

The content-type header is expected by some prometheus tools to differentiate between plaintext and protobuf formatted metrics and no content-type is considered an error.

To Reproduce

Steps to reproduce the behavior:

  1. Set httpServerEnabled=false and enable prometheus reporter
  2. run curl localhost:8000/metrics and notice that a content-type header is set
  3. Set httpServerEnabled=true and enable prometheus reporter
  4. run curl localhost:8000/metrics -v notice that there is no content-type header set

Expected behavior

I expect a content-type header

It seems like the statsProvider interface should have a method for allowing to set headers on the response. Default to a given content type might cause problems with other providers.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant