From 38e371ebe3006fd42ec07892c439872581632b8f Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Thu, 16 Oct 2025 08:54:47 +0200 Subject: ... --- .../nftables-prometheus-exporter.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'overlays/nftables-prometheus-exporter/nftables-prometheus-exporter.py') diff --git a/overlays/nftables-prometheus-exporter/nftables-prometheus-exporter.py b/overlays/nftables-prometheus-exporter/nftables-prometheus-exporter.py index 484228c8..60ef4670 100644 --- a/overlays/nftables-prometheus-exporter/nftables-prometheus-exporter.py +++ b/overlays/nftables-prometheus-exporter/nftables-prometheus-exporter.py @@ -42,7 +42,7 @@ class NFTMetrics: cls._instance = cls.__new__(cls) cls._instance.attrs = None return cls._instance - + def __init__(self): raise RuntimeError('Call instance() instead') @@ -62,7 +62,7 @@ class NFTMetrics: raise RuntimeError(f'nftables json schema v{version} is not supported') queries[query_name] = data['nftables'][1:] - + def extract_query(query_name, type_name): return [ item[type_name] @@ -98,21 +98,21 @@ class NFTMetrics: metrics += _format_prom_metrics('nftables_counter_packets_count', 'counter', counter_packets) map_counts = [] - for meter in self.attrs['maps']: + for item in self.attrs['maps']: labels = { k: v for k, v in counter.items() if k not in set(['elem']) } - map_counts += [(labels, len(meter['elem']))] + map_counts += [(labels, len(item['elem']) if 'elem' in item else 0)] metrics += _format_prom_metrics('nftables_map_elem_count', 'gauge', map_counts) meter_counts = [] - for meter in self.attrs['meters']: + for item in self.attrs['meters']: labels = { k: v for k, v in counter.items() if k not in set(['elem']) } - meter_counts += [(labels, len(meter['elem']))] + item_counts += [(labels, len(item['elem']) if 'elem' in item else 0)] metrics += _format_prom_metrics('nftables_meter_elem_count', 'gauge', meter_counts) - + set_counts = [] - for meter in self.attrs['sets']: + for item in self.attrs['sets']: labels = { k: v for k, v in counter.items() if k not in set(['elem']) } - set_counts += [(labels, len(meter['elem']))] + set_counts += [(labels, len(item['elem']) if 'elem' in item else 0)] metrics += _format_prom_metrics('nftables_set_elem_count', 'gauge', set_counts) return metrics.encode('utf-8') @@ -120,7 +120,7 @@ class NFTMetrics: class NFTMetricsServer(BaseHTTPRequestHandler): def log_message(self, format, *args): pass - + def do_GET(self): nft_metrics = NFTMetrics.instance() nft_metrics.update() @@ -138,7 +138,7 @@ class NFTMetricsServer(BaseHTTPRequestHandler): self.send_response(200) self.send_header("Content-type", "text/plain") self.end_headers() - + self.wfile.write(nft_metrics.prometheus()) case _: self.send_response(404) -- cgit v1.2.3