Skip to content

Commit

Permalink
Only report client members per segment
Browse files Browse the repository at this point in the history
  • Loading branch information
pcewing committed Jun 3, 2021
1 parent 7d0a17f commit 111bf58
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 40 deletions.
48 changes: 16 additions & 32 deletions agent/consul/usagemetrics/usagemetrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,70 +151,54 @@ func (u *UsageMetricsReporter) runOnce() {

u.emitServiceUsage(serviceUsage)

segmentMembers := u.memberUsage()
u.emitMemberUsage(segmentMembers)
servers, clients := u.memberUsage()
u.emitMemberUsage(servers, clients)
}

type members struct {
clients int
servers int
}

func (u *UsageMetricsReporter) memberUsage() map[string]members {
func (u *UsageMetricsReporter) memberUsage() (int, map[string]int) {
if u.getMembersFunc == nil {
return nil
return 0, nil
}

mems := u.getMembersFunc()
if len(mems) <= 0 {
u.logger.Warn("cluster reported zero members")
return nil
return 0, nil
}

segmentMembers := make(map[string]members)
servers := 0
clients := make(map[string]int)

for _, m := range mems {
if m.Status != serf.StatusAlive {
continue
}

segment := m.Tags["segment"]
sm := segmentMembers[segment]

switch m.Tags["role"] {
case "node":
sm.clients++
clients[m.Tags["segment"]]++
case "consul":
sm.servers++
servers++
}

segmentMembers[segment] = sm
}

return segmentMembers
return servers, clients
}

func (u *UsageMetricsReporter) emitMemberUsage(segmentMembers map[string]members) {
func (u *UsageMetricsReporter) emitMemberUsage(servers int, clients map[string]int) {
totalClients := 0
totalServers := 0

for seg, mem := range segmentMembers {
for seg, c := range clients {
segmentLabel := metrics.Label{Name: "segment", Value: seg}
labels := append([]metrics.Label{segmentLabel}, u.metricLabels...)

metrics.SetGaugeWithLabels(
[]string{"consul", "members", "clients"},
float32(mem.clients),
labels,
)

metrics.SetGaugeWithLabels(
[]string{"consul", "members", "servers"},
float32(mem.servers),
float32(c),
labels,
)

totalClients += mem.clients
totalServers += mem.servers
totalClients += c
}

metrics.SetGaugeWithLabels(
Expand All @@ -225,7 +209,7 @@ func (u *UsageMetricsReporter) emitMemberUsage(segmentMembers map[string]members

metrics.SetGaugeWithLabels(
[]string{"consul", "members", "servers"},
float32(totalServers),
float32(servers),
u.metricLabels,
)
}
8 changes: 0 additions & 8 deletions agent/consul/usagemetrics/usagemetrics_oss_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,6 @@ func TestUsageReporter_emitServiceUsage_OSS(t *testing.T) {
{Name: "datacenter", Value: "dc1"},
},
},
"consul.usage.test.consul.members.servers;segment=;datacenter=dc1": {
Name: "consul.usage.test.consul.members.servers",
Value: 2,
Labels: []metrics.Label{
{Name: "segment", Value: ""},
{Name: "datacenter", Value: "dc1"},
},
},
},
},
}
Expand Down

0 comments on commit 111bf58

Please sign in to comment.