Skip to content

Commit

Permalink
Issue #3911 Add telegraf version to User-Agent header for http requests
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinconaway committed Oct 10, 2018
1 parent 7bb2192 commit 707d63d
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 7 deletions.
1 change: 1 addition & 0 deletions plugins/outputs/http/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ func (h *HTTP) write(reqBody []byte) error {
req.SetBasicAuth(h.Username, h.Password)
}

req.Header.Set("User-Agent", "Telegraf "+internal.Version())
req.Header.Set("Content-Type", defaultContentType)
if h.ContentEncoding == "gzip" {
req.Header.Set("Content-Encoding", "gzip")
Expand Down
32 changes: 32 additions & 0 deletions plugins/outputs/http/http_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import (
"testing"
"time"

"github.com/influxdata/telegraf/internal"

"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/metric"
"github.com/influxdata/telegraf/plugins/serializers/influx"
Expand Down Expand Up @@ -422,3 +424,33 @@ func TestOAuthClientCredentialsGrant(t *testing.T) {
})
}
}

func TestDefaultUserAgent(t *testing.T) {
ts := httptest.NewServer(http.NotFoundHandler())
defer ts.Close()

u, err := url.Parse(fmt.Sprintf("http://%s", ts.Listener.Addr().String()))
require.NoError(t, err)

internal.SetVersion("1.2.3")

t.Run("default-user-agent", func(t *testing.T) {
ts.Config.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
require.Equal(t, "Telegraf 1.2.3", r.Header.Get("User-Agent"))
w.WriteHeader(http.StatusOK)
})

client := &HTTP{
URL: u.String(),
Method: defaultMethod,
}

serializer := influx.NewSerializer()
client.SetSerializer(serializer)
err = client.Connect()
require.NoError(t, err)

err = client.Write([]telegraf.Metric{getMetric()})
require.NoError(t, err)
})
}
8 changes: 3 additions & 5 deletions plugins/outputs/influxdb/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,8 @@ const (
)

const (
defaultRequestTimeout = time.Second * 5
defaultDatabase = "telegraf"
defaultUserAgent = "telegraf"

defaultRequestTimeout = time.Second * 5
defaultDatabase = "telegraf"
errStringDatabaseNotFound = "database not found"
errStringHintedHandoffNotEmpty = "hinted handoff queue not empty"
errStringPartialWrite = "partial write"
Expand Down Expand Up @@ -138,7 +136,7 @@ func NewHTTPClient(config *HTTPConfig) (*httpClient, error) {

userAgent := config.UserAgent
if userAgent == "" {
userAgent = defaultUserAgent
userAgent = "Telegraf " + internal.Version()
}

var headers = make(map[string]string, len(config.Headers)+1)
Expand Down
14 changes: 14 additions & 0 deletions plugins/outputs/influxdb/http_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"time"

"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/internal"
"github.com/influxdata/telegraf/metric"
"github.com/influxdata/telegraf/plugins/outputs/influxdb"
"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -246,6 +247,8 @@ func TestHTTP_Write(t *testing.T) {
u, err := url.Parse(fmt.Sprintf("http://%s", ts.Listener.Addr().String()))
require.NoError(t, err)

internal.SetVersion("1.2.3")

tests := []struct {
name string
config *influxdb.HTTPConfig
Expand Down Expand Up @@ -295,6 +298,17 @@ func TestHTTP_Write(t *testing.T) {
w.WriteHeader(http.StatusNoContent)
},
},
{
name: "default user agent",
config: &influxdb.HTTPConfig{
URL: u,
Database: "telegraf",
},
queryHandlerFunc: func(t *testing.T, w http.ResponseWriter, r *http.Request) {
require.Equal(t, r.Header.Get("User-Agent"), "Telegraf 1.2.3")
w.WriteHeader(http.StatusNoContent)
},
},
{
name: "default database",
config: &influxdb.HTTPConfig{
Expand Down
3 changes: 1 addition & 2 deletions plugins/outputs/influxdb_v2/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ const (
defaultRequestTimeout = time.Second * 5
defaultMaxWait = 10 // seconds
defaultDatabase = "telegraf"
defaultUserAgent = "telegraf"
)

type HTTPConfig struct {
Expand Down Expand Up @@ -82,7 +81,7 @@ func NewHTTPClient(config *HTTPConfig) (*httpClient, error) {

userAgent := config.UserAgent
if userAgent == "" {
userAgent = defaultUserAgent
userAgent = "Telegraf " + internal.Version()
}

var headers = make(map[string]string, len(config.Headers)+2)
Expand Down

0 comments on commit 707d63d

Please sign in to comment.