From 182f282fd27931b78192b86e8aa9c034a5b2a438 Mon Sep 17 00:00:00 2001 From: Pieter Slabbert Date: Thu, 24 Nov 2016 17:11:24 +0200 Subject: [PATCH] Enable setting a clientID for MQTT Output closes #2079 closes #1910 --- CHANGELOG.md | 1 + plugins/outputs/mqtt/mqtt.go | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) 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)