diff --git a/CHANGELOG.md b/CHANGELOG.md index efea23f16..dfa79ebd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ continue sending logs to /var/log/telegraf/telegraf.log. ### Bugfixes +- [#1955](https://github.com/influxdata/telegraf/issues/1955): Fix NATS plug-ins reconnection logic. - [#1926](https://github.com/influxdata/telegraf/issues/1926): Fix toml unmarshal panic in Duration objects. - [#1746](https://github.com/influxdata/telegraf/issues/1746): Fix handling of non-string values for JSON keys listed in tag_keys. - [#1628](https://github.com/influxdata/telegraf/issues/1628): Fix mongodb input panic on version 2.2. diff --git a/plugins/inputs/nats_consumer/nats_consumer.go b/plugins/inputs/nats_consumer/nats_consumer.go index a760d0362..6d59cce28 100644 --- a/plugins/inputs/nats_consumer/nats_consumer.go +++ b/plugins/inputs/nats_consumer/nats_consumer.go @@ -91,8 +91,15 @@ func (n *natsConsumer) Start(acc telegraf.Accumulator) error { var connectErr error + // set default NATS connection options opts := nats.DefaultOptions + + // override max reconnection tries + opts.MaxReconnect = -1 + + // override servers if any were specified opts.Servers = n.Servers + opts.Secure = n.Secure if n.Conn == nil || n.Conn.IsClosed() { diff --git a/plugins/outputs/nats/nats.go b/plugins/outputs/nats/nats.go index 5008937d9..68911be38 100644 --- a/plugins/outputs/nats/nats.go +++ b/plugins/outputs/nats/nats.go @@ -62,14 +62,23 @@ func (n *NATS) SetSerializer(serializer serializers.Serializer) { func (n *NATS) Connect() error { var err error - // set NATS connection options + + // set default NATS connection options opts := nats_client.DefaultOptions + + // override max reconnection tries + opts.MaxReconnect = -1 + + // override servers, if any were specified opts.Servers = n.Servers + + // override authentication, if any was specified if n.Username != "" { opts.User = n.Username opts.Password = n.Password } + // override TLS, if it was specified tlsConfig, err := internal.GetTLSConfig( n.SSLCert, n.SSLKey, n.SSLCA, n.InsecureSkipVerify) if err != nil {