diff --git a/monitor_quassel.go b/monitor_quassel.go index 8764b23883a02130fdfd975e71d0bdc77998606a..fa5bab98cb9a0dbc70f8a167e8a9925dc4a4b81c 100644 --- a/monitor_quassel.go +++ b/monitor_quassel.go @@ -1,6 +1,8 @@ package main import ( + "errors" + "fmt" "github.com/sirupsen/logrus" "time" ) @@ -20,6 +22,13 @@ func (m *QuasselMonitor) Config() *ConfigComponent { } func (m *QuasselMonitor) Measure() (Datapoint, error) { + var err error + defer func() { + if r := recover(); r != nil { + err = errors.New(fmt.Sprintf("Caught error: %v", r)) + } + }() + before := time.Now() conn := Connect(ConnectOptions{ ConnectionOptions: ConnectionOptions{ @@ -30,11 +39,15 @@ func (m *QuasselMonitor) Measure() (Datapoint, error) { Verify: !m.config.Quassel.Insecure, }) defer conn.Close() + after := time.Now() latency := int(after.Sub(before).Nanoseconds() / 1000000) + if err == nil { + err = conn.Error() + } - if conn.Error() != nil { - logrus.Infof("Monitor %s: %s", conn.Error()) + if err != nil { + logrus.Infof("Monitor %s: %s", err) return Datapoint{ Time: after, Up: false,