From 52b39bc5bb25778df0e49f856d9d1d7c30c9f060 Mon Sep 17 00:00:00 2001 From: patrick Date: Wed, 6 Aug 2025 00:54:05 +0200 Subject: [PATCH] =?UTF-8?q?check-auto-snapshot-metrik.py.py=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check-auto-snapshot-metrik.py.py | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 check-auto-snapshot-metrik.py.py diff --git a/check-auto-snapshot-metrik.py.py b/check-auto-snapshot-metrik.py.py new file mode 100644 index 0000000..a2b8c62 --- /dev/null +++ b/check-auto-snapshot-metrik.py.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +import glob +import re + +result = {} +perf_data = [] + +# Cron-Dateien finden +cron_paths = glob.glob("/etc/cron*/*-auto-snapshot") + +for path in cron_paths: + try: + with open(path, 'r') as f: + content = f.read() + label_match = re.search(r'--label=([a-zA-Z]+)', content) + keep_match = re.search(r'--keep=(\d+)', content) + if label_match and keep_match: + label = label_match.group(1) + keep = int(keep_match.group(1)) + result[label] = keep + except Exception: + continue + +# Wenn leer → CRIT +if not result: + print("2 auto_snapshots - No auto-snapshot cron jobs found") +else: + status_line = " ".join([f"{k}={v}" for k, v in sorted(result.items())]) + + # Performance-Daten mit Beispiel-Warn-/Krit-Grenzen + for label, keep in sorted(result.items()): + if label == "hourly": + perf_data.append(f"{label}={keep};80;60;0;150") + elif label == "daily": + perf_data.append(f"{label}={keep};10;7;0;30") + elif label == "weekly": + perf_data.append(f"{label}={keep};4;2;0;10") + elif label == "monthly": + perf_data.append(f"{label}={keep};2;1;0;5") + elif label == "frequent": + perf_data.append(f"{label}={keep};10;5;0;30") + else: + perf_data.append(f"{label}={keep};;;") # Ohne Schwellen + + print(f"0 auto_snapshots - {status_line} | {' '.join(perf_data)}")