From 5f39e500d212eda1be357dc0cc3027ec9038f696 Mon Sep 17 00:00:00 2001 From: Calle Pettersson Date: Fri, 19 Jun 2020 18:59:30 +0200 Subject: [PATCH] Set user agent on outgoing http requests Signed-off-by: Calle Pettersson --- pkg/canary/reader/reader.go | 3 +++ pkg/logcli/client/client.go | 6 ++++++ pkg/promtail/client/client.go | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/pkg/canary/reader/reader.go b/pkg/canary/reader/reader.go index b439e359b05a..ec6e9f03803a 100644 --- a/pkg/canary/reader/reader.go +++ b/pkg/canary/reader/reader.go @@ -18,6 +18,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" + "github.com/grafana/loki/pkg/build" loghttp "github.com/grafana/loki/pkg/loghttp/legacy" "github.com/grafana/loki/pkg/logproto" ) @@ -28,6 +29,7 @@ var ( Name: "ws_reconnects", Help: "counts every time the websocket connection has to reconnect", }) + userAgent = fmt.Sprintf("loki-canary/%s", build.Version) ) type LokiReader interface { @@ -115,6 +117,7 @@ func (r *Reader) Query(start time.Time, end time.Time) ([]time.Time, error) { } req.SetBasicAuth(r.user, r.pass) + req.Header.Set("User-Agent", userAgent) resp, err := http.DefaultClient.Do(req) if err != nil { diff --git a/pkg/logcli/client/client.go b/pkg/logcli/client/client.go index 6868591aa3f6..5dfd9a03ad5c 100644 --- a/pkg/logcli/client/client.go +++ b/pkg/logcli/client/client.go @@ -15,6 +15,7 @@ import ( json "github.com/json-iterator/go" "github.com/prometheus/common/config" + "github.com/grafana/loki/pkg/build" "github.com/grafana/loki/pkg/loghttp" "github.com/grafana/loki/pkg/logproto" "github.com/grafana/loki/pkg/util" @@ -29,6 +30,10 @@ const ( tailPath = "/loki/api/v1/tail" ) +var ( + userAgent = fmt.Sprintf("loki-logcli/%s", build.Version) +) + // Client contains fields necessary to query a Loki instance type Client struct { TLSConfig config.TLSConfig @@ -141,6 +146,7 @@ func (c *Client) doRequest(path, query string, quiet bool, out interface{}) erro } req.SetBasicAuth(c.Username, c.Password) + req.Header.Set("User-Agent", userAgent) if c.OrgID != "" { req.Header.Set("X-Scope-OrgID", c.OrgID) diff --git a/pkg/promtail/client/client.go b/pkg/promtail/client/client.go index 38fabac6165e..98c450b96c89 100644 --- a/pkg/promtail/client/client.go +++ b/pkg/promtail/client/client.go @@ -22,6 +22,7 @@ import ( "github.com/prometheus/common/config" "github.com/prometheus/common/model" + "github.com/grafana/loki/pkg/build" "github.com/grafana/loki/pkg/helpers" "github.com/grafana/loki/pkg/logproto" ) @@ -70,6 +71,8 @@ var ( countersWithHost = []*prometheus.CounterVec{ encodedBytes, sentBytes, droppedBytes, sentEntries, droppedEntries, } + + userAgent = fmt.Sprintf("promtail/%s", build.Version) ) func init() { @@ -259,6 +262,7 @@ func (c *client) send(ctx context.Context, tenantID string, buf []byte) (int, er } req = req.WithContext(ctx) req.Header.Set("Content-Type", contentType) + req.Header.Set("User-Agent", userAgent) // If the tenant ID is not empty promtail is running in multi-tenant mode, so // we should send it to Loki