Your cluster and your traces, together

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

The pod behind the slow span

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.

pod heatmap · 192 pods · cluster cpu 44% LIVE
PODS 192
RUNNING 184
DEGRADED 6
FAILING 2
HOT >78% 11
default default 72
observability obs 32
kube-system kube-sys 40
ingress-nginx ingress 24
data data 24
CPU
0% 100% degraded failing

Cluster console

Workloads, pods and nodes, one filter panel

Filter down to one deployment, namespace or node, or watch a whole cluster live.

cluster: prod-us-east-1 LIVE
infra › kubernetes › workloads
Last 12 hours Reload Live 10s
Nodes 12
Workloads 8
Cluster CPU 42%
Cluster memory 54%

Workloads

Aggregated pod metrics by Deployment, StatefulSet, and DaemonSet.

Deployment StatefulSet DaemonSet
Namespace Workload Kind Ready CPU Memory Node
default api-gateway Deployment 3/3
47%
62%
ip-10-0-1-12
default order-service Deployment 4/4
71%
51%
ip-10-0-1-44
default checkout-worker StatefulSet 2/2
23%
38%
ip-10-0-2-08
observability otel-collector DaemonSet 6/6
39%
48%
per-node
default payment-svc Deployment 2/3 ⟳
86%
67%
ip-10-0-1-44
default inventory-svc Deployment 3/3
34%
49%
ip-10-0-2-08
kube-system coredns Deployment 2/2
12%
21%
ip-10-0-1-12
ingress-nginx nginx-ingress DaemonSet 3/3
28%
33%
per-node

Pods, nodes, workloads

Pods, nodes, and workloads

Same filters everywhere. Click from a workload to its pods to the node running them.

/infra/kubernetes/pods 200 pods

Pods

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%
/infra/kubernetes/nodes 3 nodes

Nodes

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
 
/infra/kubernetes/workloads 21 workloads

Workloads

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

From a slow span to the exact pod

In opted-in namespaces, every span is tagged with its pod, node and namespace, so a slow trace already knows where it ran.

Trace: 7af1c204 1.18s

Waterfall

api-gateway
POST /checkout
1.18s
order-service
createOrder
425ms
payment-svc
processPayment
612ms
inventory-svc
reserveItems
98ms
Pod attribution Active

pod

payment-svc-78f4d6c89b-x7k2p

k8s.pod.name
payment-svc-78f4d6c89b-x7k2p
k8s.node.name
ip-10-0-1-44.ec2.internal
k8s.namespace.name
default

One Helm chart

Install in three commands

Create the secret, install the chart, and metrics start arriving.

helm install maple-k8s-infra 3 steps
1 Create the ingest-key secret
kubectl create namespace maple
kubectl -n maple create secret generic maple-ingest-key \
  --from-literal=ingest-key=$MAPLE_INGEST_KEY
2 Install the chart
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
3 Watch the rollout
kubectl -n maple rollout status daemonset/maple-k8s-infra-agent

What it does

Cluster and application, one pipeline

helm install
One Helm chart
A small chart you can read in full. Collects pod, node and cluster metrics, and receives OTLP from your apps.
k8s.pod.name
Pods linked to spans
Go from a slow trace to the pod and node that ran it.
k8s_cluster
Cluster-state metrics
Deployments, replicas and pod status, collected by the chart. No separate kube-state-metrics needed.
/infra/kubernetes
Workloads, pods, nodes and services
Four views that share the same filters, from a whole deployment down to one pod.
OTel Operator
OpenTelemetry Operator
Pods in an annotated namespace are configured automatically. Apps with an OTel SDK need no code changes.
one endpoint
Multi-cluster ingest
One endpoint for prod, staging and local clusters. Tell them apart by cluster name.

Keep going

Related features

Point OTLP at Maple.

One endpoint, one key. Traces, logs, metrics and sessions, linked from the first request.