Add option to set retain flag on messages in mqtt output (#4892)
This commit is contained in:
parent
c8832a28c4
commit
0084138bc6
|
@ -32,10 +32,14 @@ This plugin writes to a [MQTT Broker](http://http://mqtt.org/) acting as a mqtt
|
||||||
# tls_key = "/etc/telegraf/key.pem"
|
# tls_key = "/etc/telegraf/key.pem"
|
||||||
## Use TLS but skip chain & host verification
|
## Use TLS but skip chain & host verification
|
||||||
# insecure_skip_verify = false
|
# insecure_skip_verify = false
|
||||||
|
|
||||||
## When true, metrics will be sent in one MQTT message per flush. Otherwise,
|
## When true, metrics will be sent in one MQTT message per flush. Otherwise,
|
||||||
## metrics are written one metric per MQTT message.
|
## metrics are written one metric per MQTT message.
|
||||||
# batch = false
|
# batch = false
|
||||||
|
|
||||||
|
## When true, metric will have RETAIN flag set, making broker cache entries until someone
|
||||||
|
## actually reads it
|
||||||
|
# retain = flase
|
||||||
|
|
||||||
## Data format to output.
|
## Data format to output.
|
||||||
# data_format = "influx"
|
# data_format = "influx"
|
||||||
|
@ -56,4 +60,5 @@ This plugin writes to a [MQTT Broker](http://http://mqtt.org/) acting as a mqtt
|
||||||
* `tls_cert`: TLS CERT
|
* `tls_cert`: TLS CERT
|
||||||
* `tls_key`: TLS key
|
* `tls_key`: TLS key
|
||||||
* `insecure_skip_verify`: Use TLS but skip chain & host verification (default: false)
|
* `insecure_skip_verify`: Use TLS but skip chain & host verification (default: false)
|
||||||
|
* `retain`: Set `retain` flag when publishing, instructing server to cache metric until someone reads it (default: false)
|
||||||
* `data_format`: [About Telegraf data formats](https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md)
|
* `data_format`: [About Telegraf data formats](https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md)
|
||||||
|
|
|
@ -49,6 +49,10 @@ var sampleConfig = `
|
||||||
## When true, metrics will be sent in one MQTT message per flush. Otherwise,
|
## When true, metrics will be sent in one MQTT message per flush. Otherwise,
|
||||||
## metrics are written one metric per MQTT message.
|
## metrics are written one metric per MQTT message.
|
||||||
# batch = false
|
# batch = false
|
||||||
|
|
||||||
|
## When true, metric will have RETAIN flag set, making broker cache entries until someone
|
||||||
|
## actually reads it
|
||||||
|
# retain = flase
|
||||||
|
|
||||||
## Data format to output.
|
## Data format to output.
|
||||||
## Each data format has its own unique set of configuration options, read
|
## Each data format has its own unique set of configuration options, read
|
||||||
|
@ -68,6 +72,7 @@ type MQTT struct {
|
||||||
ClientID string `toml:"client_id"`
|
ClientID string `toml:"client_id"`
|
||||||
tls.ClientConfig
|
tls.ClientConfig
|
||||||
BatchMessage bool `toml:"batch"`
|
BatchMessage bool `toml:"batch"`
|
||||||
|
Retain bool
|
||||||
|
|
||||||
client paho.Client
|
client paho.Client
|
||||||
opts *paho.ClientOptions
|
opts *paho.ClientOptions
|
||||||
|
@ -174,7 +179,7 @@ func (m *MQTT) Write(metrics []telegraf.Metric) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MQTT) publish(topic string, body []byte) error {
|
func (m *MQTT) publish(topic string, body []byte) error {
|
||||||
token := m.client.Publish(topic, byte(m.QoS), false, body)
|
token := m.client.Publish(topic, byte(m.QoS), m.Retain, body)
|
||||||
token.WaitTimeout(m.Timeout.Duration)
|
token.WaitTimeout(m.Timeout.Duration)
|
||||||
if token.Error() != nil {
|
if token.Error() != nil {
|
||||||
return token.Error()
|
return token.Error()
|
||||||
|
|
Loading…
Reference in New Issue