/
selfstate.go
74 lines (65 loc) · 2.14 KB
/
selfstate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package redis
import (
"github.com/gomodule/redigo/redis"
"github.com/moira-alert/moira"
)
// UpdateMetricsHeartbeat increments redis counter
func (connector *DbConnector) UpdateMetricsHeartbeat() error {
c := connector.pool.Get()
defer c.Close()
err := c.Send("INCR", selfStateMetricsHeartbeatKey)
return err
}
// GetMetricsUpdatesCount return metrics count received by Moira-Filter
func (connector *DbConnector) GetMetricsUpdatesCount() (int64, error) {
c := connector.pool.Get()
defer c.Close()
ts, err := redis.Int64(c.Do("GET", selfStateMetricsHeartbeatKey))
if err == redis.ErrNil {
return 0, nil
}
return ts, err
}
// GetChecksUpdatesCount return checks count by Moira-Checker
func (connector *DbConnector) GetChecksUpdatesCount() (int64, error) {
c := connector.pool.Get()
defer c.Close()
ts, err := redis.Int64(c.Do("GET", selfStateChecksCounterKey))
if err == redis.ErrNil {
return 0, nil
}
return ts, err
}
// GetRemoteChecksUpdatesCount return remote checks count by Moira-Checker
func (connector *DbConnector) GetRemoteChecksUpdatesCount() (int64, error) {
c := connector.pool.Get()
defer c.Close()
ts, err := redis.Int64(c.Do("GET", selfStateRemoteChecksCounterKey))
if err == redis.ErrNil {
return 0, nil
}
return ts, err
}
// GetNotifierState return current notifier state: <OK|ERROR>
func (connector *DbConnector) GetNotifierState() (string, error) {
c := connector.pool.Get()
defer c.Close()
ts, err := redis.String(c.Do("GET", selfStateNotifierHealth))
if err == redis.ErrNil {
ts = moira.SelfStateOK
err = connector.SetNotifierState(ts)
} else if err != nil {
ts = moira.SelfStateERROR
}
return ts, err
}
// SetNotifierState update current notifier state: <OK|ERROR>
func (connector *DbConnector) SetNotifierState(health string) error {
c := connector.pool.Get()
defer c.Close()
return c.Send("SET", selfStateNotifierHealth, health)
}
var selfStateMetricsHeartbeatKey = "moira-selfstate:metrics-heartbeat"
var selfStateChecksCounterKey = "moira-selfstate:checks-counter"
var selfStateRemoteChecksCounterKey = "moira-selfstate:remote-checks-counter"
var selfStateNotifierHealth = "moira-selfstate:notifier-health"