kea-exporter
kea-exporter copied to clipboard
Evaluate shared networks
Found a patch on a downstream fork, let's check if it satisfies our understanding of shared networks and integrate it.
From ab7475a6dc1d93f479f0a827742bb5ce584f481a Mon Sep 17 00:00:00 2001
From: masem <[email protected]>
Date: Mon, 15 Jun 2020 16:05:51 +0200
Subject: [PATCH] Added shared_network label to exported prom subnet stats
---
kea_exporter/kea.py | 40 ++++++++++++++++++++++++++++------------
1 file changed, 28 insertions(+), 12 deletions(-)
diff --git a/kea_exporter/kea.py b/kea_exporter/kea.py
index 502544b..2485875 100644
--- a/kea_exporter/kea.py
+++ b/kea_exporter/kea.py
@@ -59,9 +59,23 @@ def reload(self):
if 'Dhcp4' in self.config:
self.dhcp_version = DHCPVersion.DHCP4
subnets = self.config['Dhcp4']['subnet4']
+ for shared_network in self.config['Dhcp4']['shared-networks']:
+ shared_network4 = []
+ for subnet4 in shared_network['subnet4']:
+ subnet4['shared_network'] = shared_network['name']
+ shared_network4.append(subnet4)
+ subnets += shared_network4
+
elif 'Dhcp6' in self.config:
self.dhcp_version = DHCPVersion.DHCP6
subnets = self.config['Dhcp6']['subnet6']
+ for shared_network in self.config['Dhcp6']['shared-networks']:
+ shared_network6 = []
+ for subnet6 in shared_network['subnet6']:
+ subnet6['shared_network'] = shared_network['name']
+ shared_network6.append(subnet6)
+ subnets += shared_network6
+
else:
click.echo(f'Socket {self.sock_path} has no supported configuration', file=sys.stderr)
sys.exit(1)
@@ -109,23 +123,23 @@ def setup_dhcp4_metrics(self):
'addresses_assigned_total': Gauge(
f'{self.prefix_dhcp4}_addresses_assigned_total',
'Assigned addresses',
- ['subnet']),
+ ['subnet', 'network']),
'addresses_declined_total': Gauge(
f'{self.prefix_dhcp4}_addresses_declined_total',
'Declined counts',
- ['subnet']),
+ ['subnet', 'network']),
'addresses_declined_reclaimed_total': Gauge(
f'{self.prefix_dhcp4}_addresses_declined_reclaimed_total',
'Declined addresses that were reclaimed',
- ['subnet']),
+ ['subnet', 'network']),
'addresses_reclaimed_total': Gauge(
f'{self.prefix_dhcp4}_addresses_reclaimed_total',
'Expired addresses that were reclaimed',
- ['subnet']),
+ ['subnet', 'network']),
'addresses_total': Gauge(
f'{self.prefix_dhcp4}_addresses_total',
'Size of subnet address pool',
- ['subnet']
+ ['subnet', 'network']
)
}
@@ -278,36 +292,36 @@ def setup_dhcp6_metrics(self):
'addresses_declined_total': Gauge(
f'{self.prefix_dhcp6}_addresses_declined_total',
'Declined addresses',
- ['subnet']),
+ ['subnet', 'network']),
'addresses_declined_reclaimed_total': Gauge(
f'{self.prefix_dhcp6}_addresses_declined_reclaimed_total',
'Declined addresses that were reclaimed',
- ['subnet']),
+ ['subnet', 'network']),
'addresses_reclaimed_total': Gauge(
f'{self.prefix_dhcp6}_addresses_reclaimed_total',
'Expired addresses that were reclaimed',
- ['subnet']),
+ ['subnet', 'network']),
# IA_NA
'na_assigned_total': Gauge(
f'{self.prefix_dhcp6}_na_assigned_total',
'Assigned non-temporary addresses (IA_NA)',
- ['subnet']),
+ ['subnet', 'network']),
'na_total': Gauge(
f'{self.prefix_dhcp6}_na_total',
'Size of non-temporary address pool',
- ['subnet']
+ ['subnet', 'network']
),
# IA_PD
'pd_assigned_total': Gauge(
f'{self.prefix_dhcp6}_pd_assigned_total',
'Assigned prefix delegations (IA_PD)',
- ['subnet']),
+ ['subnet', 'network']),
'pd_total': Gauge(
f'{self.prefix_dhcp6}_pd_total',
'Size of prefix delegation pool',
- ['subnet']
+ ['subnet', 'network']
),
}
@@ -494,6 +508,8 @@ def update(self):
)
continue
labels['subnet'] = subnet['subnet']
+ labels['network'] = subnet['shared_network']
+
else:
click.echo(f'subnet pattern failed for metric: {key}',
file=sys.stderr)
via https://github.com/masem/kea-exporter/commit/ab7475a6dc1d93f479f0a827742bb5ce584f481a
I updated it this way by managing the shared networks with id only.
diff --git a/kea_exporter/kea.py b/kea_exporter/kea.py
index 6821585..bad8fbc 100644
--- a/kea_exporter/kea.py
+++ b/kea_exporter/kea.py
@@ -58,10 +58,22 @@ class KeaSocket:
if 'Dhcp4' in self.config:
self.dhcp_version = DHCPVersion.DHCP4
- subnets = self.config['Dhcp4']['subnet4']
+ subnets = []
+ if "shared-networks" in self.config['Dhcp4']:
+ for j in range(len(self.config['Dhcp4']["shared-networks"])):
+ for k in range(len(self.config['Dhcp4']["shared-networks"][j]['subnet4'])):
+ subnets.append(self.config['Dhcp4']["shared-networks"][j]['subnet4'][k])
+ if len(self.config['Dhcp4']["subnet4"])>0:
+ subnets.append(self.config['Dhcp4']['subnet4'])
elif 'Dhcp6' in self.config:
self.dhcp_version = DHCPVersion.DHCP6
- subnets = self.config['Dhcp6']['subnet6']
+ subnets = []
+ if "shared-networks" in self.config['Dhcp6']:
+ for j in range(len(self.config['Dhcp6']["shared-networks"])):
+ for k in range(len(self.config['Dhcp6']["shared-networks"][j]['subnet6'])):
+ subnets.append(self.config['Dhcp6']["shared-networks"][j]['subnet6'][k])
+ if len(self.config['Dhcp6']["subnet6"])>0:
+ subnets.append(self.config['Dhcp6']['subnet6'])
else:
click.echo(f'Socket {self.sock_path} has no supported configuration', file=sys.stderr)
sys.exit(1)