클러스터, 워크로드, 스팬을 한 화면에서

Helm 차트 하나만 설치하세요. kubelet, 호스트, 클러스터 상태 메트릭이 OTLP로 흘러 들어옵니다. 계측된 pod의 스팬은 pod, node, namespace 태그를 달고 도착하며, pod 뷰와 node 뷰는 그것들이 설명하는 트레이스 바로 옆에 있습니다.

움직임

느린 스팬 아래에 있는 파드.

클러스터에 Helm 차트를 올리기만 하면 됩니다. kubelet, 호스트, 클러스터 상태 메트릭이 흘러들기 시작합니다. 계측된 파드의 스팬은 파드, 노드, namespace를 담고 도착하므로, 느린 요청에서 그것을 처리한 바로 그 레플리카에 닿을 수 있습니다.

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

클러스터 콘솔

워크로드, Pod, 노드, 하나의 필터 사이드바

플랫폼 팀이 실제로 사용하는 같은 뷰. 네임스페이스 안의 deployment, 특정 노드까지 좁히거나 클러스터 전체를 라이브로 모니터링.

cluster: prod-us-east-1 LIVE
infra › kubernetes › workloads
지난 12시간 새로고침 라이브 10s
Nodes 12
Workloads 8
클러스터 CPU 42%
클러스터 메모리 54%

워크로드

Deployment, StatefulSet, DaemonSet별로 집계된 Pod 메트릭.

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

Pod, 노드, 워크로드

Pod, 노드, 워크로드

어디서나 같은 필터. 워크로드에서 그 Pod, 그 Pod를 실행하는 노드까지 클릭으로 이동. 서비스에는 네 번째 전용 뷰가 있습니다.

/infra/kubernetes/pods 200 pods

Pods

Pod별 CPU/메모리, request 및 limit 대비.

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 통계, 가동 시간, 라이프사이클.

Node Status CPU Last seen
i-0ef7f77feb3e0a3eb 활성 3.00 14s ago
i-0293a9e7e2bac82a4 활성 2.65 30s ago
i-0a8c19f2d4e7b15c1 활성 1.84 22s ago
 
/infra/kubernetes/workloads 21 workloads

Workloads

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

느린 span에서 정확한 Pod까지

옵트인한 Pod는 admission 단계에서 모든 span에 k8s.pod.name, k8s.node.name, k8s.namespace.name이 stamp됩니다. 느린 trace는 이미 어디서 실행됐는지 알고 있습니다.

Trace: 7af1c204 1.18s

Waterfall

api-gateway
POST /checkout
1.18s
order-service
createOrder
425ms
payment-svc
processPayment
612ms
inventory-svc
reserveItems
98ms
Pod 어트리뷰션 활성

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

하나의 Helm 차트

클러스터에 한 번에 배포

차트를 처음부터 끝까지 읽을 수 있습니다. 명령어 세 줄이면 클러스터가 kubelet, 호스트, 클러스터 상태 메트릭을 OTLP로 보고하기 시작합니다.

helm install maple-k8s-infra 3 steps
1 인제스트 키 시크릿 생성
kubectl create namespace maple
kubectl -n maple create secret generic maple-ingest-key \
  --from-literal=ingest-key=$MAPLE_INGEST_KEY
2 차트 설치
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 롤아웃 확인
kubectl -n maple rollout status daemonset/maple-k8s-infra-agent

할 수 있는 일

클러스터와 애플리케이션을 하나의 파이프라인으로

helm install
처음부터 끝까지 읽을 수 있는 Helm 차트
maple-k8s-infra는 처음부터 끝까지 읽을 수 있는 작은 Helm 차트입니다. pod별 kubelet 통계, node별 호스트 메트릭, 클러스터 전체의 클러스터 상태 메트릭, 각 node에 앱용 OTLP 리시버.
k8s.pod.name
pod와 스팬을 결합
느린 트레이스에서 그것을 실행한 pod와 node로, pod 뷰와 node 뷰가 쓰는 것과 같은 필터로 드릴다운.
k8s_cluster
클러스터 상태 메트릭
Deployment, StatefulSet, DaemonSet, 레플리카 수, pod 단계. 차트의 클러스터 컬렉터가 OpenTelemetry k8s_cluster 리시버를 통해 수집합니다. 별도의 kube-state-metrics 배포가 필요 없습니다.
/infra/kubernetes
워크로드, pod, node, 서비스
대시보드에 4개의 인프라 뷰: 워크로드, pod, node, 서비스. Deployment, 단일 pod, 단일 node를 어디서든 동일한 필터로 조사할 수 있습니다.
OTel Operator
OpenTelemetry Operator
어노테이션이 붙은 namespace의 pod에는 admission 단계에서 OTEL_EXPORTER_OTLP_ENDPOINT와 pod/node 식별 정보가 주입됩니다. 이미 OTel SDK를 로드하는 앱은 코드 변경 없이 이를 받아들입니다.
one endpoint
멀티 클러스터 수집
조직당 하나의 수집 엔드포인트. prod, staging, 개발자의 kind 클러스터에서 보내고 cluster-name 리소스 속성으로 분리.

다음은

이 데이터를 공유하는 화면

OTLP를 Maple로 보내세요.

엔드포인트 하나, 키 하나. 트레이스·로그·메트릭·세션이 첫 요청부터 같은 트레이스 ID로 모입니다.