From 2cc5c635c9bc3d7bbbeeb3cf5b9a52b152de8e66 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 29 Jul 2020 17:17:20 +0000 Subject: [PATCH] Add 'encrypted' label to connections metric Extend tests to check it shows up. Tests assume that metrics are published with metrics in alphabetical order, which appears to be the case for now. --- prog/weaver/metrics.go | 17 ++++++++++++----- test/101_cross_hosts_2_test.sh | 2 +- test/110_sleeve_encryption_2_test.sh | 1 + test/111_fastdp_encryption_2_test.sh | 1 + test/115_optional_encryption_2_test.sh | 2 ++ 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/prog/weaver/metrics.go b/prog/weaver/metrics.go index bba7dd9c..ed00bb53 100644 --- a/prog/weaver/metrics.go +++ b/prog/weaver/metrics.go @@ -44,22 +44,29 @@ func uint64Counter(desc *prometheus.Desc, val uint64, labels ...string) promethe } var metrics = []metric{ - {desc("weave_connections", "Number of peer-to-peer connections.", "state", "type"), + {desc("weave_connections", "Number of peer-to-peer connections.", "state", "type", "encryption"), func(s WeaveStatus, desc *prometheus.Desc, ch chan<- prometheus.Metric) { - counts := make(map[ /*state*/ string]map[ /*type*/ string]int) + counts := make(map[ /*state*/ string]map[ /*type*/ string]struct{ encrypted, unencrypted int }) for _, state := range allConnectionStates { - counts[state] = make(map[string]int) + counts[state] = make(map[string]struct{ encrypted, unencrypted int }) } for _, conn := range s.Router.Connections { typeName := "unknown" if t, ok := conn.Attrs["name"]; ok { typeName = t.(string) } - counts[conn.State][typeName]++ + c := counts[conn.State][typeName] + if e, ok := conn.Attrs["encrypted"]; ok && e.(bool) { + c.encrypted++ + } else { + c.unencrypted++ + } + counts[conn.State][typeName] = c } for state, stateCounts := range counts { for connType, count := range stateCounts { - ch <- intGauge(desc, count, state, connType) + ch <- intGauge(desc, count.encrypted, state, connType, "yes") + ch <- intGauge(desc, count.unencrypted, state, connType, "") } } }}, diff --git a/test/101_cross_hosts_2_test.sh b/test/101_cross_hosts_2_test.sh index bc345eaa..a8cf580a 100755 --- a/test/101_cross_hosts_2_test.sh +++ b/test/101_cross_hosts_2_test.sh @@ -24,6 +24,6 @@ weave_on $HOST2 attach $C2/24 c2 wait_for_x network_tester_status "network tester status" assert "echo $status" "pass" -assert "connections_metric $HOST1 state=\\\"established\\\"" "1" +assert "connections_metric $HOST1 encryption=\\\"\\\",state=\\\"established\\\"" "1" end_suite diff --git a/test/110_sleeve_encryption_2_test.sh b/test/110_sleeve_encryption_2_test.sh index 13ebc161..05463fcd 100755 --- a/test/110_sleeve_encryption_2_test.sh +++ b/test/110_sleeve_encryption_2_test.sh @@ -16,5 +16,6 @@ assert_raises "exec_on $HOST1 c1 $PING $C2" assert_raises "weave_on $HOST1 status connections | grep -P 'encrypted *sleeve'" assert_raises "weave_on $HOST2 status connections | grep -P 'encrypted *sleeve'" +assert "connections_metric $HOST1 encryption=\\\"yes\\\"",state=\\\"established\\\" "1" end_suite diff --git a/test/111_fastdp_encryption_2_test.sh b/test/111_fastdp_encryption_2_test.sh index 4202af85..d56b7a4c 100755 --- a/test/111_fastdp_encryption_2_test.sh +++ b/test/111_fastdp_encryption_2_test.sh @@ -44,6 +44,7 @@ weave_on $HOST2 launch --password wfvAwt7sj $HOST1 assert_raises "weave_on $HOST1 status connections | grep -P 'encrypted *fastdp'" assert_raises "weave_on $HOST2 status connections | grep -P 'encrypted *fastdp'" +assert "connections_metric $HOST1 encryption=\\\"yes\\\"",state=\\\"established\\\" "1" PCAP1=$(mktemp) PCAP2=$(mktemp) diff --git a/test/115_optional_encryption_2_test.sh b/test/115_optional_encryption_2_test.sh index 89870b10..d7f47443 100755 --- a/test/115_optional_encryption_2_test.sh +++ b/test/115_optional_encryption_2_test.sh @@ -17,6 +17,7 @@ weave_on $HOST1 launch --password wfvAwt7sj --trusted-subnets $HOST2_CIDR weave_on $HOST2 launch --password wfvAwt7sj $HOST1 assert_raises "weave_on $HOST1 status connections | grep encrypted" assert_raises "weave_on $HOST2 status connections | grep encrypted" +assert "connections_metric $HOST1 encryption=\\\"yes\\\"",state=\\\"established\\\" "1" weave_on $HOST1 stop weave_on $HOST2 stop @@ -26,5 +27,6 @@ weave_on $HOST1 launch --password wfvAwt7sj --trusted-subnets $HOST2_CIDR weave_on $HOST2 launch --password wfvAwt7sj --trusted-subnets $HOST1_CIDR $HOST1 assert_raises "weave_on $HOST1 status connections | grep unencrypted" assert_raises "weave_on $HOST2 status connections | grep unencrypted" +assert "connections_metric $HOST1 encryption=\\\"\\\"",state=\\\"established\\\" "1" end_suite