From 99fd06deff75db56fe76d47a108ec4ed9a579c19 Mon Sep 17 00:00:00 2001
From: hagen1778 <roman@victoriametrics.com>
Date: Thu, 24 Aug 2023 11:36:42 +0200
Subject: [PATCH] app/vmagent: follow-up after
 6788704152395567a2221d8ea8edeb98338e13d3

https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4884
Signed-off-by: hagen1778 <roman@victoriametrics.com>
---
 docs/CHANGELOG.md        |  1 +
 lib/promscrape/client.go | 10 ++++++----
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 743776de73..9d64e13020 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -26,6 +26,7 @@ The following `tip` changes can be tested by building VictoriaMetrics components
 
 
 * BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert.html): correctly re-use HTTP request object on `EOF` retries when querying the configured datasource. Previously, there was a small chance that query retry wouldn't succeed.
+* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): consistently set UserAgent header to `vm_promscrape` during scraping with enabled or disabled `promscrape.streamParse`. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4884) for details.
 
 ## [v1.93.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.93.1)
 
diff --git a/lib/promscrape/client.go b/lib/promscrape/client.go
index 06da770767..3cec692dca 100644
--- a/lib/promscrape/client.go
+++ b/lib/promscrape/client.go
@@ -79,6 +79,8 @@ func concatTwoStrings(x, y string) string {
 	return s
 }
 
+const scrapeUserAgent = "vm_promscrape"
+
 func newClient(ctx context.Context, sw *ScrapeWork) *client {
 	var u fasthttp.URI
 	u.Update(sw.ScrapeURL)
@@ -120,8 +122,9 @@ func newClient(ctx context.Context, sw *ScrapeWork) *client {
 		logger.Fatalf("cannot create dial func: %s", err)
 	}
 	hc := &fasthttp.HostClient{
-		Addr:                         dialAddr,
-		Name:                         "vm_promscrape",
+		Addr: dialAddr,
+		// Name used in User-Agent request header
+		Name:                         scrapeUserAgent,
 		Dial:                         dialFunc,
 		IsTLS:                        isTLS,
 		TLSConfig:                    tlsCfg,
@@ -201,8 +204,7 @@ func (c *client) GetStreamReader() (*streamReader, error) {
 	// Set X-Prometheus-Scrape-Timeout-Seconds like Prometheus does, since it is used by some exporters such as PushProx.
 	// See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1179#issuecomment-813117162
 	req.Header.Set("X-Prometheus-Scrape-Timeout-Seconds", c.scrapeTimeoutSecondsStr)
-	// Set same useragent as fasthttp.HostClient at c.hc uses for scraping
-	req.Header.Set("User-Agent", "vm_promscrape")
+	req.Header.Set("User-Agent", scrapeUserAgent)
 	c.setHeaders(req)
 	c.setProxyHeaders(req)
 	scrapeRequests.Inc()