diff --git a/lib/promscrape/client.go b/lib/promscrape/client.go index d809bbaab5..e379a24b02 100644 --- a/lib/promscrape/client.go +++ b/lib/promscrape/client.go @@ -322,6 +322,11 @@ func (c *client) ReadData(dst []byte) ([]byte, error) { } else if !swapResponseBodies { dst = append(dst, resp.Body()...) } + if len(dst) > c.hc.MaxResponseBodySize { + maxScrapeSizeExceeded.Inc() + return dst, fmt.Errorf("the response from %q exceeds -promscrape.maxScrapeSize=%d; "+ + "either reduce the response size for the target or increase -promscrape.maxScrapeSize", c.scrapeURL, maxScrapeSize.N) + } fasthttp.ReleaseResponse(resp) if statusCode != fasthttp.StatusOK { metrics.GetOrCreateCounter(fmt.Sprintf(`vm_promscrape_scrapes_total{status_code="%d"}`, statusCode)).Inc()