Install one Helm chart. Cluster metrics flow in, and spans from pods in opted-in namespaces arrive tagged with their pod, node and namespace.
In motion
Install a Helm chart and cluster metrics start flowing. Opt a namespace in, and a slow request takes you straight to the pod that served it.
Cluster console
Filter down to one deployment, namespace or node, or watch a whole cluster live.
Aggregated pod metrics by Deployment, StatefulSet, and DaemonSet.
| Namespace | Workload | Kind | Ready | CPU | Memory | Node |
|---|---|---|---|---|---|---|
| default | api-gateway | Deployment | 3/3 | ip-10-0-1-12 | ||
| default | order-service | Deployment | 4/4 | ip-10-0-1-44 | ||
| default | checkout-worker | StatefulSet | 2/2 | ip-10-0-2-08 | ||
| observability | otel-collector | DaemonSet | 6/6 | per-node | ||
| default | payment-svc | Deployment | 2/3 ⟳ | ip-10-0-1-44 | ||
| default | inventory-svc | Deployment | 3/3 | ip-10-0-2-08 | ||
| kube-system | coredns | Deployment | 2/2 | ip-10-0-1-12 | ||
| ingress-nginx | nginx-ingress | DaemonSet | 3/3 | per-node |
Pods, nodes, workloads
Same filters everywhere. Click from a workload to its pods to the node running them.
Per-pod CPU and memory against requests and limits.
| Pod | CPU req | CPU lim | Mem lim |
|---|---|---|---|
| otel-gateway-5988fb47f… ns observability | 147% | 37% | 30% |
| prd-artifacts-api-6688… ns default | 0% | 52% | 10% |
| prd-warpstream-5bb84bb… ns warpstream | 42% | 42% | 35% |
| prd-enrichment-api-769… ns default | 0% | 34% | 21% |
Kubelet stats per node, with uptime and lifecycle.
| Node | Status | CPU | Last seen |
|---|---|---|---|
| i-0ef7f77feb3e0a3eb | Active | 3.00 | 14s ago |
| i-0293a9e7e2bac82a4 | Active | 2.65 | 30s ago |
| i-0a8c19f2d4e7b15c1 | Active | 1.84 | 22s ago |
Aggregated by Deployment, StatefulSet, DaemonSet.
| Workload | Pods | Avg CPU | NS |
|---|---|---|---|
| api-gateway | 3 | 47% | default |
| order-service | 4 | 71% | default |
| payment-svc | 2 | 86% | default |
| inventory-svc | 3 | 34% | default |
Span → pod
In opted-in namespaces, every span is tagged with its pod, node and namespace, so a slow trace already knows where it ran.
Waterfall
pod
payment-svc-78f4d6c89b-x7k2p
One Helm chart
Create the secret, install the chart, and metrics start arriving.
kubectl create namespace maple
kubectl -n maple create secret generic maple-ingest-key \
--from-literal=ingest-key=$MAPLE_INGEST_KEY helm upgrade --install maple-k8s-infra \
oci://ghcr.io/mapletechlabs/charts/maple-k8s-infra \
--namespace maple \
--set maple.ingestKey.existingSecret.name=maple-ingest-key \
--set maple.ingestKey.existingSecret.key=ingest-key \
--set global.clusterName=production kubectl -n maple rollout status daemonset/maple-k8s-infra-agent What it does
Keep going
One endpoint, one key. Traces, logs, metrics and sessions, linked from the first request.