diff --git a/plugins/inputs/mqtt_consumer/README.md b/plugins/inputs/mqtt_consumer/README.md index 5f3284970..5e9b5e782 100644 --- a/plugins/inputs/mqtt_consumer/README.md +++ b/plugins/inputs/mqtt_consumer/README.md @@ -100,6 +100,12 @@ to use them. ## Use TLS but skip chain & host verification # insecure_skip_verify = false + ## Client trace messages + ## When set to true, and debug mode enabled in the agent settings, the MQTT + ## client's messages are included in telegraf logs. These messages are very + ## noisey, but essential for debugging issues. + # client_trace = false + ## Data format to consume. ## Each data format has its own unique set of configuration options, read ## more about them here: diff --git a/plugins/inputs/mqtt_consumer/logger.go b/plugins/inputs/mqtt_consumer/logger.go new file mode 100644 index 000000000..94f4886d5 --- /dev/null +++ b/plugins/inputs/mqtt_consumer/logger.go @@ -0,0 +1,17 @@ +package mqtt_consumer + +import ( + "github.com/influxdata/telegraf" +) + +type mqttLogger struct { + telegraf.Logger +} + +func (l mqttLogger) Printf(fmt string, args ...interface{}) { + l.Logger.Debugf(fmt, args...) +} + +func (l mqttLogger) Println(args ...interface{}) { + l.Logger.Debug(args...) +} diff --git a/plugins/inputs/mqtt_consumer/mqtt_consumer.go b/plugins/inputs/mqtt_consumer/mqtt_consumer.go index 76c304040..b78de7ee7 100644 --- a/plugins/inputs/mqtt_consumer/mqtt_consumer.go +++ b/plugins/inputs/mqtt_consumer/mqtt_consumer.go @@ -70,6 +70,7 @@ type MQTTConsumer struct { Password config.Secret `toml:"password"` QoS int `toml:"qos"` ConnectionTimeout config.Duration `toml:"connection_timeout"` + ClientTrace bool `toml:"client_trace"` MaxUndeliveredMessages int `toml:"max_undelivered_messages"` parser telegraf.Parser @@ -104,6 +105,14 @@ func (m *MQTTConsumer) SetParser(parser telegraf.Parser) { m.parser = parser } func (m *MQTTConsumer) Init() error { + if m.ClientTrace { + log := &mqttLogger{m.Log} + mqtt.ERROR = log + mqtt.CRITICAL = log + mqtt.WARN = log + mqtt.DEBUG = log + } + m.state = Disconnected if m.PersistentSession && m.ClientID == "" { return errors.New("persistent_session requires client_id") diff --git a/plugins/inputs/mqtt_consumer/sample.conf b/plugins/inputs/mqtt_consumer/sample.conf index e7079ae48..9c1b804dc 100644 --- a/plugins/inputs/mqtt_consumer/sample.conf +++ b/plugins/inputs/mqtt_consumer/sample.conf @@ -63,6 +63,12 @@ ## Use TLS but skip chain & host verification # insecure_skip_verify = false + ## Client trace messages + ## When set to true, and debug mode enabled in the agent settings, the MQTT + ## client's messages are included in telegraf logs. These messages are very + ## noisey, but essential for debugging issues. + # client_trace = false + ## Data format to consume. ## Each data format has its own unique set of configuration options, read ## more about them here: