feat: show suffix-matched metric coverage in host info threshold table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-10 09:18:49 -04:00
parent b64a2a9313
commit 9e389736f8
3 changed files with 72 additions and 2 deletions
+20
View File
@@ -143,6 +143,25 @@ def _build_host_info(host, threshold_checker=None) -> dict:
thresholds = None
if threshold_checker is not None:
raw = threshold_checker.get_thresholds_for_host(host.name)
# Build reverse coverage: which metric paths suffix-match to each threshold.
# Mirrors the logic in ThresholdChecker._find_threshold.
coverage: dict = {}
for plugin_name, samples in host.plugin_data.items():
if not samples:
continue
_, pdata = samples[-1]
for field_name in pdata:
full_path = f"{plugin_name}.{field_name}"
if full_path in raw:
continue # exact match — the threshold IS this metric
parts = field_name.split("_")
for i in range(1, len(parts)):
candidate = f"{plugin_name}." + "_".join(parts[i:])
if candidate in raw:
coverage.setdefault(candidate, []).append(full_path)
break
thresholds = sorted(
[
{
@@ -150,6 +169,7 @@ def _build_host_info(host, threshold_checker=None) -> dict:
"warning": tc.warning,
"critical": tc.critical,
"operator": tc.operator.value,
"covers": sorted(coverage.get(tc.metric_path, [])),
}
for tc in raw.values()
],