def test_no_metadata(self): families = text_string_to_metric_families("""a 1 # EOF """) metric_family = Metric("a", "", "untyped") metric_family.add_sample("a", {}, 1) self.assertEqual([metric_family], list(families))
def collect(self): while True: try: all_releases = self.tiller.list_releases() break except Exception as e: print(e) continue metric = Metric('helm_chart_info', 'Helm chart information', 'gauge') chart_count = Counter([ (release.chart.metadata.name, release.name, release.chart.metadata.version, release.chart.metadata.appVersion, release.namespace, _STATUS_CODE.values_by_number[release.info.status.code].name) for release in all_releases ]) for chart in chart_count: metric.add_sample('helm_chart_info', value=chart_count[chart], labels={ "chart": chart[0], "release": chart[1], "version": chart[2], "appVersion": chart[3], "namespace": chart[4], "status": chart[5] }) yield metric
def test_restricted_registry(self): registry = CollectorRegistry() Counter('c_total', 'help', registry=registry) Summary('s', 'help', registry=registry).observe(7) m = Metric('s', 'help', 'summary') m.samples = [Sample('s_sum', {}, 7)] self.assertEqual([m], registry.restricted_registry(['s_sum']).collect())
def test_restricted_registry_does_not_call_extra(self): from unittest.mock import MagicMock registry = CollectorRegistry() mock_collector = MagicMock() mock_collector.describe.return_value = [Metric('foo', 'help', 'summary')] registry.register(mock_collector) Summary('s', 'help', registry=registry).observe(7) m = Metric('s', 'help', 'summary') m.samples = [Sample('s_sum', {}, 7)] self.assertEqual([m], list(registry.restricted_registry(['s_sum']).collect())) mock_collector.collect.assert_not_called()
def test_untyped(self): # https://github.com/prometheus/client_python/issues/79 families = text_string_to_metric_families("""# HELP redis_connected_clients Redis connected clients # TYPE redis_connected_clients untyped redis_connected_clients{instance="rough-snowflake-web",port="6380"} 10.0 redis_connected_clients{instance="rough-snowflake-web",port="6381"} 12.0 """) m = Metric("redis_connected_clients", "Redis connected clients", "untyped") m.samples = [ ("redis_connected_clients", {"instance": "rough-snowflake-web", "port": "6380"}, 10), ("redis_connected_clients", {"instance": "rough-snowflake-web", "port": "6381"}, 12), ] self.assertEqual([m], list(families))
def test_empty_metadata(self): families = text_string_to_metric_families("""# HELP a # UNIT a # EOF """) metric_family = Metric("a", "", "untyped") self.assertEqual([metric_family], list(families))
def collect(self): while True: try: all_releases = self.tiller.list_releases() break except Exception as e: print(e) continue metric = Metric('helm_chart_info', 'Helm chart information', 'gauge') for release in all_releases: name = release.chart.metadata.name version = release.chart.metadata.version metric.add_sample('helm_chart_info', value=1, labels={ "name": name, "version": version }) yield metric
def collect(self): while True: try: all_releases = self.tiller.list_releases() break except Exception as e: print(e) continue metric = Metric('helm_chart_info', 'Helm chart information', 'gauge') chart_count = Counter([ (release.chart.metadata.name, release.chart.metadata.version, release.namespace) for release in all_releases ]) for chart in chart_count: metric.add_sample('helm_chart_info', value=chart_count[chart], labels={ "name": chart[0], "version": chart[1], "namespace": chart[2] }) yield metric
def collect(self): '''Collect Prometheus Metrics''' linky_frame = self.teleinfo() labels = {'job': LINKY_EXPORTER_NAME} metrics = [] # Filter Metrics & Labels for key, value in linky_frame.items(): description = [i['description'] for i in LINKY_FRAME if key == i['name']][0] metric_type = [i['type'] for i in LINKY_FRAME if key == i['name']][0] if metric_type in ['counter', 'gauge', 'histogram', 'summary']: metrics.append({'name': f'linky_{key.lower()}', 'value': int(value), 'description': description, 'type': metric_type}) else: labels[key.lower()] = value # Return Prometheus Metrics for metric in metrics: prometheus_metric = Metric(metric['name'], metric['description'], metric['type']) prometheus_metric.add_sample(metric['name'], value=metric['value'], labels=labels) yield prometheus_metric
def test_target_info_restricted_registry(self): registry = CollectorRegistry(target_info={'foo': 'bar'}) Summary('s', 'help', registry=registry).observe(7) m = Metric('s', 'help', 'summary') m.samples = [Sample('s_sum', {}, 7)] self.assertEqual([m], registry.restricted_registry(['s_sum']).collect()) m = Metric('target', 'Target metadata', 'info') m.samples = [Sample('target_info', {'foo': 'bar'}, 1)] self.assertEqual([m], registry.restricted_registry(['target_info']).collect())
def test_restricted_registry_does_not_yield_while_locked(self): registry = CollectorRegistry(target_info={'foo': 'bar'}) Summary('s', 'help', registry=registry).observe(7) m = Metric('s', 'help', 'summary') m.samples = [Sample('s_sum', {}, 7)] self.assertEqual([m], list(registry.restricted_registry(['s_sum']).collect())) m = Metric('target', 'Target metadata', 'info') m.samples = [Sample('target_info', {'foo': 'bar'}, 1)] for _ in registry.restricted_registry(['target_info', 's_sum']).collect(): self.assertFalse(registry._lock.locked())