def test_telemetry_from_udp(self): mock_server = self._build_mock_udp_server() self.plugin.udp_server = mock_server self.plugin.enable_server = True actual_records = self.plugin._fetch_telemetry_metrics() expected_records = [] expected_records.append( consul_plugin.MetricRecord('consul.memberlist.udp.received', 'gauge', 181, self.plugin.global_dimensions)) expected_records.append( consul_plugin.MetricRecord( 'consul.server-3.dc1.consul.runtime.alloc_bytes', 'gauge', 4815376.0, self.plugin.global_dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.memberlist.gossip.min', 'gauge', 0.006504, self.plugin.global_dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.raft.rpc.appendEntries.max', 'gauge', 0.014557, self.plugin.global_dimensions)) expected_records.append( consul_plugin.MetricRecord( 'consul.server-3.dc1.consul.runtime.sys_bytes', 'gauge', 13576440.0, self.plugin.global_dimensions)) self.plugin.udp_server.read_complete.set.assert_called_once() self.assertEquals(len(expected_records), len(actual_records)) actual_records.sort(key=lambda x: x.name) expected_records.sort(key=lambda x: x.name) for (idx, record) in enumerate(actual_records): self._validate_single_record(expected_records[idx], record)
def test_fetch_peers(self): expected_dim = self.plugin.global_dimensions expected_metric = consul_plugin.MetricRecord('consul.peers', 'gauge', 3, expected_dim) actual_metric = self.plugin._fetch_peers() self.assertEquals(1, len(actual_metric)) self._validate_single_record(expected_metric, actual_metric[0])
def test_fetch_server_state_leader(self): expected_dim = {'consul_server_state': 'leader'} expected_dim.update(self.plugin.global_dimensions) expected_metric = consul_plugin.MetricRecord('consul.is_leader', 'gauge', 1, expected_dim) actual_metric = self.plugin._fetch_server_state_leader() self.assertEquals(1, len(actual_metric)) self._validate_single_record(expected_metric, actual_metric[0])
def test_fetch_server_state(self): dimensions = {'consul_server_state': 'follower'} dimensions.update(self.plugin.global_dimensions) expected_record = consul_plugin.MetricRecord('consul.is_leader', 'gauge', 0, dimensions) actual_records = self.plugin._fetch_server_state() self._validate_single_record(expected_record, actual_records[0])
def test_fetch_health_ckecks(self): expected_records = [] dimensions = self.plugin.global_dimensions expected_records.append( consul_plugin.MetricRecord('consul.health.services.critical', 'gauge', 0, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.health.services.warning', 'gauge', 0, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.health.services.passing', 'gauge', 0, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.health.nodes.critical', 'gauge', 0, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.health.nodes.warning', 'gauge', 0, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.health.nodes.passing', 'gauge', 4, dimensions)) actual_records = self.plugin._fetch_health_ckecks() self.assertEquals(len(expected_records), len(actual_records)) for (idx, record) in enumerate(actual_records): self._validate_single_record(expected_records[idx], record)
def test_fetch_node_network_metrics(self): expected_records = [] dimensions = self.plugin.global_dimensions expected_records.append( consul_plugin.MetricRecord('consul.network.node.latency.avg', 'gauge', 0.47051138518296787, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.network.node.latency.min', 'gauge', 0.4154354798133847, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.network.node.latency.max', 'gauge', 0.5571355904035926, dimensions)) actual_records = self.plugin._fetch_node_network_metrics() self.assertEquals(len(expected_records), len(actual_records)) for (idx, record) in enumerate(actual_records): self._validate_single_record(expected_records[idx], record)
def test_fetch_dc_network_metrics(self): expected_records = [] dimensions = {'destination_dc': 'dc2'} dimensions.update(self.plugin.global_dimensions) expected_records.append( consul_plugin.MetricRecord('consul.network.dc.latency.avg', 'gauge', 0.41374872289293463, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.network.dc.latency.min', 'gauge', 0.02, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.network.dc.latency.max', 'gauge', 0.5702953069636298, dimensions)) actual_records = self.plugin._fetch_dc_network_metrics() self.assertEquals(len(expected_records), len(actual_records)) for (idx, record) in enumerate(actual_records): self._validate_single_record(expected_records[idx], record)
def test_fetch_telemetry_metrics(self): expected_records = [] dimensions = self.plugin.global_dimensions expected_records.append( consul_plugin.MetricRecord( 'consul.ip-10-2-2-84.ec2.internal.runtime.alloc_bytes', 'gauge', 4117728, dimensions)) actual_records = self.plugin._fetch_telemetry_metrics() actual_records.sort(key=lambda x: x.name) expected_records.sort(key=lambda x: x.name) for (idx, record) in enumerate(actual_records): self._validate_single_record(expected_records[idx], record)
def test_fetch_telemetry_enhanced_metrics_with_exclude(self): expected_records = [] dimensions = self.plugin.global_dimensions expected_records.append( consul_plugin.MetricRecord( 'consul.consul.fsm.coordinate.batch-update.avg', 'gauge', 0.05109499953687191, dimensions)) expected_records.append( consul_plugin.MetricRecord( 'consul.consul.fsm.coordinate.batch-update.max', 'gauge', 0.05452900007367134, dimensions)) expected_records.append( consul_plugin.MetricRecord( 'consul.consul.fsm.coordinate.batch-update.min', 'gauge', 0.04766099900007248, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.memberlist.gossip.avg', 'gauge', 0.007076957123354077, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.memberlist.gossip.max', 'gauge', 0.015080999583005905, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.memberlist.gossip.min', 'gauge', 0.0043750000186264515, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.raft.fsm.apply.avg', 'gauge', 0.10995149984955788, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.raft.fsm.apply.max', 'gauge', 0.11391499638557434, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.raft.fsm.apply.min', 'gauge', 0.10598800331354141, dimensions)) expected_records.append( consul_plugin.MetricRecord( 'consul.ip-10-2-2-84.ec2.internal.consul.session_ttl.active', 'gauge', 0, dimensions)) expected_records.append( consul_plugin.MetricRecord( 'consul.ip-10-2-2-84.ec2.internal.runtime.alloc_bytes', 'gauge', 4117728, dimensions)) expected_records.append( consul_plugin.MetricRecord( 'consul.ip-10-2-2-84.ec2.internal.runtime.free_count', 'gauge', 124627230, dimensions)) expected_records.append( consul_plugin.MetricRecord('consul.memberlist.udp.received', 'gauge', 2174, dimensions)) self.plugin.enhanced_metrics = True exclude = [ 'consul.memberlist.udp.sent', 'consul.memberlist.tcp', 'consul.consul.http.GET', 'consul.fsm.coordinate.batch-update.' ] self.plugin.exclude_regex = re.compile('|'.join( '(?:{0})'.format(re.escape(x)) for x in exclude)) actual_records = self.plugin._fetch_telemetry_metrics() actual_records.sort(key=lambda x: x.name) expected_records.sort(key=lambda x: x.name) for (idx, record) in enumerate(actual_records): self._validate_single_record(expected_records[idx], record)