Kubernetes 모니터링
Helm 차트 하나만 설치하세요. kubelet, 호스트, kube-state 메트릭이 OTLP로 흘러 들어옵니다. OpenTelemetry Operator가 모든 스팬에 pod 식별 정보를 주입하므로, 느린 요청에서 실제 처리한 레플리카로 바로 이동할 수 있습니다.
움직임
클러스터에 Helm 차트를 올리기만 하면 됩니다. kubelet·호스트·kube-state 메트릭이 OTLP로 흘러들고, OpenTelemetry Operator가 모든 스팬에 파드와 노드 식별자를 새깁니다.
클러스터 콘솔
플랫폼 팀이 실제로 사용하는 같은 뷰. 네임스페이스 안의 deployment, 특정 노드까지 좁히거나 클러스터 전체를 라이브로 모니터링.
deployment, statefulset, daemonset별로 집계된 Pod 메트릭.
| 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 |
세 가지 뷰
어디서나 같은 필터. 워크로드에서 그 Pod, 그 Pod를 실행하는 노드까지 클릭으로 이동.
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% |
노드별 kubelet 통계, 가동 시간, 라이프사이클.
| Node | Status | CPU | Last seen |
|---|---|---|---|
| i-0ef7f77feb3e0a3eb | 활성 | 3.00 | 14s ago |
| i-0293a9e7e2bac82a4 | 활성 | 2.65 | 30s ago |
| i-0a8c19f2d4e7b15c1 | 활성 | 1.84 | 22s ago |
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
OpenTelemetry Operator가 admission 단계에서 모든 span에 k8s.pod.name, k8s.node.name, k8s.namespace.name을 stamp. 느린 trace는 이미 어디서 실행됐는지 알고 있습니다.
Waterfall
pod
payment-svc-78f4d6c89b-x7k2p
하나의 Helm 차트
차트를 처음부터 끝까지 읽을 수 있습니다. 명령어 세 줄이면 kubelet, host, kube-state 메트릭이 OTLP로 흐르기 시작합니다.
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/makisuo/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 할 수 있는 일