life-noc/checks/check_life_noc_probe.py

61 lines
2.2 KiB
Python

#!/usr/bin/env python3
import argparse
from datetime import datetime, timezone
def exit_with(code: int, text: str) -> None:
print(text)
raise SystemExit(code)
def parse_date(value: str) -> datetime:
return datetime.strptime(value, "%Y-%m-%d").replace(tzinfo=timezone.utc)
def main() -> int:
ap = argparse.ArgumentParser()
ap.add_argument("--probe-type", required=True)
ap.add_argument("--source-type", required=True)
ap.add_argument("--source-value", required=True)
ap.add_argument("--unit", required=True)
ap.add_argument("--unknown-lt", type=float)
ap.add_argument("--ok-gte", type=float)
ap.add_argument("--warning-gte", type=float)
ap.add_argument("--critical-gte", type=float)
ap.add_argument("--on-error", default="critical")
ap.add_argument("--label", default="life-noc")
args = ap.parse_args()
try:
if args.probe_type != "elapsed_time":
exit_with(2, f"CRITICAL - probe_type non supporté: {args.probe_type}")
if args.source_type != "manual_date":
exit_with(2, f"CRITICAL - source_type non supporté: {args.source_type}")
if args.unit != "days":
exit_with(2, f"CRITICAL - unité non supportée: {args.unit}")
dt = parse_date(args.source_value)
now = datetime.now(timezone.utc)
delta_days = (now - dt).total_seconds() / 86400.0
if args.critical_gte is not None and delta_days >= args.critical_gte:
exit_with(2, f"CRITICAL - {args.label}: {delta_days:.1f} jours")
if args.warning_gte is not None and delta_days >= args.warning_gte:
exit_with(1, f"WARNING - {args.label}: {delta_days:.1f} jours")
if args.ok_gte is not None and delta_days >= args.ok_gte:
exit_with(0, f"OK - {args.label}: {delta_days:.1f} jours")
if args.unknown_lt is not None and delta_days < args.unknown_lt:
exit_with(3, f"UNKNOWN - {args.label}: {delta_days:.1f} jours")
exit_with(2, f"CRITICAL - {args.label}: seuils incohérents")
except Exception as exc:
if args.on_error == "critical":
exit_with(2, f"CRITICAL - erreur sonde: {exc}")
exit_with(3, f"UNKNOWN - erreur sonde: {exc}")
if __name__ == "__main__":
raise SystemExit(main())