From 87f8c728bf9a8dae78d461808efdad27c2d45718 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Wed, 8 Jul 2020 19:47:08 +0300 Subject: [PATCH] lib/promscrape: send `Accept` header similar to Prometheus when scraping targets This should fix scraping Spring Boot servers, which return incorrect response unless `Accept: text/plain` request header is set. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/608 --- lib/promscrape/client.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/promscrape/client.go b/lib/promscrape/client.go index 7c861d8557..388736370f 100644 --- a/lib/promscrape/client.go +++ b/lib/promscrape/client.go @@ -80,6 +80,12 @@ func (c *client) ReadData(dst []byte) ([]byte, error) { req := fasthttp.AcquireRequest() req.SetRequestURI(c.requestURI) req.SetHost(c.host) + // The following `Accept` header has been copied from Prometheus sources. + // See https://github.com/prometheus/prometheus/blob/f9d21f10ecd2a343a381044f131ea4e46381ce09/scrape/scrape.go#L532 . + // This is needed as a workaround for scraping stupid Java-based servers such as Spring Boot. + // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/608 for details. + // Do not bloat the `Accept` header with OpenMetrics shit, since it looks like dead standard now. + req.Header.Set("Accept", "text/plain;version=0.0.4;q=1,*/*;q=0.1") if !*disableCompression || c.disableCompression { req.Header.Set("Accept-Encoding", "gzip") }