diff --git a/ariadne/services/cluster_state.py b/ariadne/services/cluster_state.py index 5293cb8..33802e0 100644 --- a/ariadne/services/cluster_state.py +++ b/ariadne/services/cluster_state.py @@ -1157,6 +1157,16 @@ def _summarize_metrics(errors: list[str]) -> dict[str, Any]: "topk(5, sum by (namespace) (kube_pod_container_resource_requests_memory_bytes))" ) ) + metrics["namespace_net_top"] = _filter_namespace_vector( + _vm_vector( + f"topk(5, sum by (namespace) (rate(container_network_receive_bytes_total{{namespace!=\"\"}}[{_RATE_WINDOW}]) + rate(container_network_transmit_bytes_total{{namespace!=\"\"}}[{_RATE_WINDOW}])))" + ) + ) + metrics["namespace_io_top"] = _filter_namespace_vector( + _vm_vector( + f"topk(5, sum by (namespace) (rate(container_fs_reads_bytes_total{{namespace!=\"\"}}[{_RATE_WINDOW}]) + rate(container_fs_writes_bytes_total{{namespace!=\"\"}}[{_RATE_WINDOW}])))" + ) + ) except Exception as exc: errors.append(f"namespace_usage: {exc}") metrics["pvc_usage_top"] = _pvc_usage(errors) @@ -1174,6 +1184,8 @@ def _summarize_metrics(errors: list[str]) -> dict[str, Any]: "namespace_mem": "bytes", "namespace_cpu_requests": "cores", "namespace_mem_requests": "bytes", + "namespace_net": "bytes_per_sec", + "namespace_io": "bytes_per_sec", "pvc_used_percent": "percent", "capacity_cpu": "cores", "allocatable_cpu": "cores", diff --git a/tests/test_cluster_state.py b/tests/test_cluster_state.py index 8553dd8..c814281 100644 --- a/tests/test_cluster_state.py +++ b/tests/test_cluster_state.py @@ -137,6 +137,8 @@ def test_collect_cluster_state(monkeypatch) -> None: assert snapshot["metrics"]["namespace_mem_top"] == [] assert snapshot["metrics"]["namespace_cpu_requests_top"] == [] assert snapshot["metrics"]["namespace_mem_requests_top"] == [] + assert snapshot["metrics"]["namespace_net_top"] == [] + assert snapshot["metrics"]["namespace_io_top"] == [] assert snapshot["metrics"]["pod_cpu_top"] == [] assert snapshot["metrics"]["pod_mem_top"] == [] assert snapshot["metrics"]["job_failures_24h"] == []