diff --git a/etc/telegraf.conf b/etc/telegraf.conf index f51e973df..38942adee 100644 --- a/etc/telegraf.conf +++ b/etc/telegraf.conf @@ -723,6 +723,10 @@ # ## Not used with telnet API. # httpBatchSize = 50 # +# ## URI Path for Http requests to OpenTSDB. +# ## Used in cases where OpenTSDB is located behind a reverse proxy. +# httpPath = "/api/put" +# # ## Debug true - Prints OpenTSDB communication # debug = false # diff --git a/plugins/outputs/opentsdb/opentsdb.go b/plugins/outputs/opentsdb/opentsdb.go index c38ad353b..96d022c19 100644 --- a/plugins/outputs/opentsdb/opentsdb.go +++ b/plugins/outputs/opentsdb/opentsdb.go @@ -22,6 +22,7 @@ var ( `%`, "-", "#", "-", "$", "-") + defaultHttpPath = "/api/put" defaultSeperator = "_" ) @@ -32,6 +33,7 @@ type OpenTSDB struct { Port int HttpBatchSize int + HttpPath string Debug bool @@ -54,6 +56,10 @@ var sampleConfig = ` ## Not used with telnet API. httpBatchSize = 50 + ## URI Path for Http requests to OpenTSDB. + ## Used in cases where OpenTSDB is located behind a reverse proxy. + httpPath = "/api/put" + ## Debug true - Prints OpenTSDB communication debug = false @@ -121,6 +127,7 @@ func (o *OpenTSDB) WriteHttp(metrics []telegraf.Metric, u *url.URL) error { Scheme: u.Scheme, User: u.User, BatchSize: o.HttpBatchSize, + Path: o.HttpPath, Debug: o.Debug, } @@ -260,6 +267,7 @@ func sanitize(value string) string { func init() { outputs.Add("opentsdb", func() telegraf.Output { return &OpenTSDB{ + HttpPath: defaultHttpPath, Separator: defaultSeperator, } }) diff --git a/plugins/outputs/opentsdb/opentsdb_http.go b/plugins/outputs/opentsdb/opentsdb_http.go index e74e74f03..4f971abb6 100644 --- a/plugins/outputs/opentsdb/opentsdb_http.go +++ b/plugins/outputs/opentsdb/opentsdb_http.go @@ -26,6 +26,7 @@ type openTSDBHttp struct { Scheme string User *url.Userinfo BatchSize int + Path string Debug bool metricCounter int @@ -123,7 +124,7 @@ func (o *openTSDBHttp) flush() error { Scheme: o.Scheme, User: o.User, Host: fmt.Sprintf("%s:%d", o.Host, o.Port), - Path: "/api/put", + Path: o.Path, } if o.Debug { diff --git a/plugins/outputs/opentsdb/opentsdb_test.go b/plugins/outputs/opentsdb/opentsdb_test.go index d5d7aa7e9..096337c5c 100644 --- a/plugins/outputs/opentsdb/opentsdb_test.go +++ b/plugins/outputs/opentsdb/opentsdb_test.go @@ -156,6 +156,7 @@ func BenchmarkHttpSend(b *testing.B) { Port: port, Prefix: "", HttpBatchSize: BatchSize, + HttpPath: "/api/put", } b.ResetTimer()