From 2e86985fe4198e2cab0e7cc8a2d0fae00197c9c4 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Thu, 29 Jan 2026 02:58:17 -0300 Subject: [PATCH] atlasbot: expose pod cpu/mem top usage --- atlasbot/snapshot/builder.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/atlasbot/snapshot/builder.py b/atlasbot/snapshot/builder.py index c47a071..301e2f6 100644 --- a/atlasbot/snapshot/builder.py +++ b/atlasbot/snapshot/builder.py @@ -612,6 +612,34 @@ def _append_namespace_usage(lines: list[str], summary: dict[str, Any]) -> None: lines.append("namespace_mem_top: " + "; ".join(parts)) +def _append_pod_usage(lines: list[str], summary: dict[str, Any]) -> None: + metrics = summary.get("metrics") if isinstance(summary.get("metrics"), dict) else {} + cpu_top = metrics.get("pod_cpu_top") if isinstance(metrics.get("pod_cpu_top"), list) else [] + mem_top = metrics.get("pod_mem_top") if isinstance(metrics.get("pod_mem_top"), list) else [] + if cpu_top: + parts = [] + for entry in cpu_top: + metric = entry.get("metric") if isinstance(entry, dict) else {} + namespace = metric.get("namespace") + pod = metric.get("pod") + value = entry.get("value") + if namespace and pod and value is not None: + parts.append(f"{namespace}/{pod}={_format_float(value)}") + if parts: + lines.append("pod_cpu_top: " + "; ".join(parts)) + if mem_top: + parts = [] + for entry in mem_top: + metric = entry.get("metric") if isinstance(entry, dict) else {} + namespace = metric.get("namespace") + pod = metric.get("pod") + value = entry.get("value") + if namespace and pod and value is not None: + parts.append(f"{namespace}/{pod}={_format_bytes(value)}") + if parts: + lines.append("pod_mem_top: " + "; ".join(parts)) + + def _append_restarts(lines: list[str], summary: dict[str, Any]) -> None: metrics = summary.get("metrics") if isinstance(summary.get("metrics"), dict) else {} top_restarts = metrics.get("top_restarts_1h") or [] @@ -732,6 +760,7 @@ def summary_text(snapshot: dict[str, Any] | None) -> str: _append_events(lines, summary) _append_node_usage_stats(lines, summary) _append_namespace_usage(lines, summary) + _append_pod_usage(lines, summary) _append_restarts(lines, summary) _append_postgres(lines, summary) _append_hottest(lines, summary)