diff --git a/CHANGELOG.md b/CHANGELOG.md index c745d462f..d5c08c3b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ in their config file. - [#1937](https://github.com/influxdata/telegraf/pull/1937): HAProxy session limit metric. - [#2068](https://github.com/influxdata/telegraf/issues/2068): Accept strings for StatsD sets. - [#1893](https://github.com/influxdata/telegraf/issues/1893): Change StatsD default "reset" behavior. +- [#2079](https://github.com/influxdata/telegraf/pull/2079): Enable setting ClientID in MQTT output. ### Bugfixes diff --git a/plugins/outputs/mqtt/mqtt.go b/plugins/outputs/mqtt/mqtt.go index 45f2c91c8..b1d94f87c 100644 --- a/plugins/outputs/mqtt/mqtt.go +++ b/plugins/outputs/mqtt/mqtt.go @@ -25,6 +25,9 @@ var sampleConfig = ` # username = "telegraf" # password = "metricsmetricsmetricsmetrics" + ## client ID, if not set a random ID is generated + # client_id = "" + ## Optional SSL Config # ssl_ca = "/etc/telegraf/ca.pem" # ssl_cert = "/etc/telegraf/cert.pem" @@ -46,7 +49,8 @@ type MQTT struct { Database string Timeout internal.Duration TopicPrefix string - QoS int `toml:"qos"` + QoS int `toml:"qos"` + ClientID string `toml:"client_id"` // Path to CA file SSLCA string `toml:"ssl_ca"` @@ -155,7 +159,11 @@ func (m *MQTT) publish(topic string, body []byte) error { func (m *MQTT) createOpts() (*paho.ClientOptions, error) { opts := paho.NewClientOptions() - opts.SetClientID("Telegraf-Output-" + internal.RandomString(5)) + if m.ClientID != "" { + opts.SetClientID(m.ClientID) + } else { + opts.SetClientID("Telegraf-Output-" + internal.RandomString(5)) + } tlsCfg, err := internal.GetTLSConfig( m.SSLCert, m.SSLKey, m.SSLCA, m.InsecureSkipVerify)