diff --git a/cmd/ssh-portal/serve.go b/cmd/ssh-portal/serve.go index f6a8c1ce..bc64ce4f 100644 --- a/cmd/ssh-portal/serve.go +++ b/cmd/ssh-portal/serve.go @@ -38,7 +38,14 @@ func (cmd *ServeCmd) Run(log *zap.Logger) error { nc, err := nats.Connect(cmd.NATSServer, // exit on connection close nats.ClosedHandler(func(_ *nats.Conn) { + log.Error("nats connection closed") stop() + }), + nats.DisconnectErrHandler(func(_ *nats.Conn, err error) { + log.Warn("nats disconnected", zap.Error(err)) + }), + nats.ReconnectHandler(func(nc *nats.Conn) { + log.Info("nats reconnected", zap.String("url", nc.ConnectedUrl())) })) if err != nil { return fmt.Errorf("couldn't connect to NATS server: %v", err) diff --git a/internal/sshportalapi/server.go b/internal/sshportalapi/server.go index 955d93c5..04a6150e 100644 --- a/internal/sshportalapi/server.go +++ b/internal/sshportalapi/server.go @@ -37,8 +37,15 @@ func ServeNATS(ctx context.Context, stop context.CancelFunc, log *zap.Logger, nc, err := nats.Connect(natsURL, // synchronise exiting ServeNATS() nats.ClosedHandler(func(_ *nats.Conn) { + log.Error("nats connection closed") stop() wg.Done() + }), + nats.DisconnectErrHandler(func(_ *nats.Conn, err error) { + log.Warn("nats disconnected", zap.Error(err)) + }), + nats.ReconnectHandler(func(nc *nats.Conn) { + log.Info("nats reconnected", zap.String("url", nc.ConnectedUrl())) })) if err != nil { return fmt.Errorf("couldn't connect to NATS server: %v", err)