Kubernetes監視
Helmチャートを1つインストールするだけ。kubelet、ホスト、kube-stateメトリクスがOTLPで流れ込みます。OpenTelemetry Operatorがアプリのスパンにpod情報を注入するため、遅いリクエストから実際に処理したレプリカへ直接到達できます。
動き
クラスタにHelmチャートを導入するだけ。kubelet、ホスト、kube-stateのメトリクスがOTLPで流れ込み、OpenTelemetry Operatorが全スパンにPodとノードのIDを刻みます。
クラスターコンソール
プラットフォームチームが日々使うのと同じビュー。namespace内のdeploymentから特定nodeまで絞り込み、クラスター全体をライブで監視。
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 |
3つのビュー
どこでも同じフィルター。ワークロードからそのPod、そのPodを実行するノードへとクリックスルー。
Podごとのリクエスト・リミット比CPU・メモリ。
| 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をスタンプ。遅いトレースは既にどこで実行されたかを知っています。
Waterfall
pod
payment-svc-78f4d6c89b-x7k2p
1つのHelmチャート
チャートを端から端まで読める。3つのコマンドで、kubelet、ホスト、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 できること