diff --git a/zfs_replication_exporter.go b/zfs_replication_exporter.go index 7ec835a..3558961 100644 --- a/zfs_replication_exporter.go +++ b/zfs_replication_exporter.go @@ -151,16 +151,23 @@ func main() { Auth: ams, // TODO(wathiede); use FixedHostKey? HostKeyCallback: ssh.InsecureIgnoreHostKey(), - } - c, err := ssh.Dial("tcp", *host, config) - if err != nil { - glog.Exitf("Error dialing %q: %v", *host, err) + Timeout: 5 * time.Second, } go func() { for { + var c *ssh.Client + if c == nil { + var err error + c, err = ssh.Dial("tcp", *host, config) + if err != nil { + glog.Errorf("Error dialing %q: %v", *host, err) + } + } if err := updateMetrics(c); err != nil { glog.Errorf("Failed to update metrics: %v", err) + c.Close() + c = nil } time.Sleep(*refreshInterval) }