|
15 | 15 | from mktxp.cli.config.config import MKTXPConfigKeys |
16 | 16 | from mktxp.collector.base_collector import BaseCollector |
17 | 17 | from mktxp.datasource.route_ds import RouteMetricsDataSource |
18 | | -from mktxp.utils.utils import str2bool |
19 | 18 |
|
20 | 19 |
|
21 | 20 | class RouteCollector(BaseCollector): |
22 | 21 | ''' IP Route Metrics collector |
23 | | - ''' |
| 22 | + ''' |
24 | 23 | @staticmethod |
25 | 24 | def collect(router_entry): |
26 | 25 | route_labels = ['connect', 'dynamic', 'static', 'bgp', 'ospf'] |
27 | 26 |
|
28 | | - # ~*~*~*~*~*~ IPv4 ~*~*~*~*~*~ |
29 | | - if router_entry.config_entry.route: |
30 | | - route_records = RouteMetricsDataSource.metric_records(router_entry, metric_labels = route_labels) |
31 | | - if route_records: |
| 27 | + # ~*~*~*~*~*~ IPv4 ~*~*~*~*~*~ |
| 28 | + if router_entry.config_entry.route: |
| 29 | + route_counts = RouteMetricsDataSource.metric_records(router_entry, metric_labels=route_labels) |
| 30 | + if route_counts: |
32 | 31 | # compile total routes records |
33 | | - total_routes = len(route_records) |
34 | | - total_routes_records = [{ MKTXPConfigKeys.ROUTERBOARD_NAME: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_NAME], |
35 | | - MKTXPConfigKeys.ROUTERBOARD_ADDRESS: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_ADDRESS], |
36 | | - 'count': total_routes |
37 | | - }] |
| 32 | + total_routes_records = [{ |
| 33 | + MKTXPConfigKeys.ROUTERBOARD_NAME: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_NAME], |
| 34 | + MKTXPConfigKeys.ROUTERBOARD_ADDRESS: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_ADDRESS], |
| 35 | + 'count': route_counts['total_routes'] |
| 36 | + }] |
38 | 37 | total_routes_metrics = BaseCollector.gauge_collector('routes_total_routes', 'Overall number of routes in RIB', total_routes_records, 'count') |
39 | 38 | yield total_routes_metrics |
40 | 39 |
|
41 | | - |
42 | | - # init routes per protocol (with 0) |
43 | | - routes_per_protocol = {route_label: 0 for route_label in route_labels} |
44 | | - for route_record in route_records: |
45 | | - for route_label in route_labels: |
46 | | - if str2bool(route_record.get(route_label)): |
47 | | - routes_per_protocol[route_label] += 1 |
48 | | - |
49 | 40 | # compile route-per-protocol records |
50 | | - route_per_protocol_records = [{ MKTXPConfigKeys.ROUTERBOARD_NAME: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_NAME], |
51 | | - MKTXPConfigKeys.ROUTERBOARD_ADDRESS: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_ADDRESS], |
52 | | - 'protocol': key, 'count': value} for key, value in routes_per_protocol.items()] |
53 | | - |
| 41 | + route_per_protocol_records = [{ |
| 42 | + MKTXPConfigKeys.ROUTERBOARD_NAME: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_NAME], |
| 43 | + MKTXPConfigKeys.ROUTERBOARD_ADDRESS: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_ADDRESS], |
| 44 | + 'protocol': key, 'count': value |
| 45 | + } for key, value in route_counts['routes_per_protocol'].items()] |
| 46 | + |
54 | 47 | # yield route-per-protocol metrics |
55 | 48 | route_per_protocol_metrics = BaseCollector.gauge_collector('routes_protocol_count', 'Number of routes per protocol in RIB', route_per_protocol_records, 'count', ['protocol']) |
56 | 49 | yield route_per_protocol_metrics |
57 | 50 |
|
58 | 51 | # ~*~*~*~*~*~ IPv6 ~*~*~*~*~*~ |
59 | 52 | if router_entry.config_entry.ipv6_route: |
60 | | - # ~*~*~*~*~*~ IPv4 ~*~*~*~*~*~ |
61 | | - route_records = RouteMetricsDataSource.metric_records(router_entry, metric_labels = route_labels, ipv6 = True) |
62 | | - if route_records: |
| 53 | + route_counts = RouteMetricsDataSource.metric_records(router_entry, metric_labels=route_labels, ipv6=True) |
| 54 | + if route_counts: |
63 | 55 | # compile total routes records |
64 | | - total_routes = len(route_records) |
65 | | - total_routes_records = [{ MKTXPConfigKeys.ROUTERBOARD_NAME: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_NAME], |
66 | | - MKTXPConfigKeys.ROUTERBOARD_ADDRESS: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_ADDRESS], |
67 | | - 'count': total_routes |
68 | | - }] |
| 56 | + total_routes_records = [{ |
| 57 | + MKTXPConfigKeys.ROUTERBOARD_NAME: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_NAME], |
| 58 | + MKTXPConfigKeys.ROUTERBOARD_ADDRESS: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_ADDRESS], |
| 59 | + 'count': route_counts['total_routes'] |
| 60 | + }] |
69 | 61 | total_routes_metrics = BaseCollector.gauge_collector('routes_total_routes_ipv6', 'Overall number of routes in RIB (IPv6)', total_routes_records, 'count') |
70 | 62 | yield total_routes_metrics |
71 | 63 |
|
72 | | - |
73 | | - # init routes per protocol (with 0) |
74 | | - routes_per_protocol = {route_label: 0 for route_label in route_labels} |
75 | | - for route_record in route_records: |
76 | | - for route_label in route_labels: |
77 | | - if route_record.get(route_label): |
78 | | - routes_per_protocol[route_label] += 1 |
79 | | - |
80 | 64 | # compile route-per-protocol records |
81 | | - route_per_protocol_records = [{ MKTXPConfigKeys.ROUTERBOARD_NAME: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_NAME], |
82 | | - MKTXPConfigKeys.ROUTERBOARD_ADDRESS: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_ADDRESS], |
83 | | - 'protocol': key, 'count': value} for key, value in routes_per_protocol.items()] |
84 | | - |
| 65 | + route_per_protocol_records = [{ |
| 66 | + MKTXPConfigKeys.ROUTERBOARD_NAME: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_NAME], |
| 67 | + MKTXPConfigKeys.ROUTERBOARD_ADDRESS: router_entry.router_id[MKTXPConfigKeys.ROUTERBOARD_ADDRESS], |
| 68 | + 'protocol': key, 'count': value |
| 69 | + } for key, value in route_counts['routes_per_protocol'].items()] |
| 70 | + |
85 | 71 | # yield route-per-protocol metrics |
86 | 72 | route_per_protocol_metrics = BaseCollector.gauge_collector('routes_protocol_count_ipv6', 'Number of routes per protocol in RIB (IPv6)', route_per_protocol_records, 'count', ['protocol']) |
87 | 73 | yield route_per_protocol_metrics |
|
0 commit comments