Skip to content

Commit

Permalink
applying node states as different labels rather than different gauges
Browse files Browse the repository at this point in the history
  • Loading branch information
jmurret committed Aug 30, 2022
1 parent 12ff49e commit f4dc332
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 13 deletions.
2 changes: 1 addition & 1 deletion memberlist_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ func TestCreate_checkBroadcastQueueMetrics(t *testing.T) {
time.Sleep(3 * time.Second)

sampleName := "consul.usage.test.memberlist.queue.broadcasts"
verifySampleExists(t, sampleName, sink)
verifySamplesExists(t, []string{sampleName}, sink)
}

func TestCreate_keyringOnly(t *testing.T) {
Expand Down
4 changes: 3 additions & 1 deletion net.go
Original file line number Diff line number Diff line change
Expand Up @@ -1034,7 +1034,9 @@ func (m *Memberlist) sendLocalState(conn net.Conn, join bool, streamLabel string
}

for nodeState, cnt := range nodeStateCounts {
metrics.SetGaugeWithLabels([]string{"memberlist", "nodes", nodeState}, float32(cnt), m.metricLabels)
metrics.SetGaugeWithLabels([]string{"memberlist", "node", "instances"},
float32(cnt),
append(m.metricLabels, metrics.Label{Name: "node_state", Value: nodeState}))
}

// Get the delegate state
Expand Down
28 changes: 17 additions & 11 deletions state_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2273,11 +2273,13 @@ func TestMemberlist_PushPull(t *testing.T) {
failf("expected 2 messages from pushPull")
}

verifyGaugeExists(t, "consul.usage.test.memberlist.size.local", sink)
verifyGaugeExists(t, "consul.usage.test.memberlist.nodes.alive", sink)
verifyGaugeExists(t, "consul.usage.test.memberlist.nodes.suspect", sink)
verifyGaugeExists(t, "consul.usage.test.memberlist.nodes.left", sink)
verifyGaugeExists(t, "consul.usage.test.memberlist.nodes.dead", sink)
instancesMetricName := "consul.usage.test.memberlist.node.instances"
verifyGaugesExists(t, []string{"consul.usage.test.memberlist.size.local",
fmt.Sprintf("%s;node_state=%s", instancesMetricName, nodeStateAlive),
fmt.Sprintf("%s;node_state=%s", instancesMetricName, nodeStateDead),
fmt.Sprintf("%s;node_state=%s", instancesMetricName, nodeStateLeft),
fmt.Sprintf("%s;node_state=%s", instancesMetricName, nodeStateSuspect)},
sink)
})
}

Expand Down Expand Up @@ -2421,20 +2423,24 @@ func getIntervalMetrics(t *testing.T, sink *metrics.InmemSink) *metrics.Interval
return intv
}

func verifyGaugeExists(t *testing.T, name string, sink *metrics.InmemSink) {
func verifyGaugesExists(t *testing.T, names []string, sink *metrics.InmemSink) {
interval := getIntervalMetrics(t, sink)
interval.RLock()
defer interval.RUnlock()
if _, ok := interval.Gauges[name]; !ok {
t.Fatalf("%s gauge not emmited", name)
for _, name := range names {
if _, ok := interval.Gauges[name]; !ok {
t.Fatalf("%s gauge not emmited", name)
}
}
}

func verifySampleExists(t *testing.T, name string, sink *metrics.InmemSink) {
func verifySamplesExists(t *testing.T, names []string, sink *metrics.InmemSink) {
interval := getIntervalMetrics(t, sink)
interval.RLock()
defer interval.RUnlock()
if _, ok := interval.Samples[name]; !ok {
t.Fatalf("%s sample not emmited", name)
for _, name := range names {
if _, ok := interval.Samples[name]; !ok {
t.Fatalf("%s sample not emmited", name)
}
}
}

0 comments on commit f4dc332

Please sign in to comment.