EKS インフラストラクチャモニタリング
概要
Amazon EKS クラスターインフラストラクチャ(ノード、Pod、コントロールプレーン、クラスターネットワーキング)の正常性とパフォーマン スを、CloudWatch、Amazon Managed Service for Prometheus(AMP)、またはその両方にメトリクスを配信する 3 つの収集パスを使用してモニタリングします。
パスを選択してください:
| 状況 | パス |
|---|---|
| 最小限の設定で最速のデフォルトが必要 | パス 1 — OpenTelemetry 付き Container Insights |
| GPU、AWS Neuron(Trainium/Inferentia)、または EFA ワークロードを実行している | パス 1 — アクセラレーターメトリクスがそのまま収集されます |
| スクレイピングするメトリクスを正確に制御し、CloudWatch で PromQL アクセスが必要 | パス 2 — CloudWatch マネージド Prometheus コレクター |
| メトリクスストアとして既に Amazon Managed Service for Prometheus を使用している | パス 3 — AMP へのセルフマネージドコレクター |
3 つのパスすべてが OpenTelemetry ベースの収集を使用します。収集されるもの、データの到達先、および設定量が異なります。
前提条件
- Amazon EKS クラスター(v1.25 以降)
- 適切な権限で設定された AWS CLI v2
- クラスター用に設定された
kubectl - パス 1: EKS アドオンをインストールする権限(
eks:CreateAddon) - パス 2: CloudWatch マネージドコレクターを作成する権限(
cloudwatch:CreateCollector、aps:CreateScraper) - パス 3: AMP ワークスペース、コレクターサービスアカウント用の
aps:RemoteWriteを持つ IAM ロール、および AMP データソースが設定された Amazon Managed Grafana ワークスペース
アーキテクチャ
┌───────────────────────────────────────────────────────────────────────────────┐
│ EKS Cluster │
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌───────────┐ │
│ │ kubelet/cAdvisor│ │kube-state- │ │ Node Exporter │ │ API Server│ │
│ │ │ │metrics │ │ (DaemonSet) │ │ /metrics │ │
│ └───────┬────────┘ └───────┬────────┘ └───────┬────────┘ └─────┬─────┘ │
│ │ │ │ │ │
│ └────────────────────┼────────────────────┼──────────────────┘ │
│ │ │ │
│ ┌─ Path 1 ──────────────────┐│┌─ Path 2 ────────┐│┌─ Path 3 ──────────────┐ │
│ │ CloudWatch Agent │││ CW Managed │││ ADOT Collector │ │
│ │ (amazon-cloudwatch- │││ Prometheus │││ (DaemonSet) │ │
│ │ observability add-on) │││ Collector │││ │ │
│ └───────────┬───────────────┘│└────────┬─────────┘│└───────────┬───────────┘ │
│ │ │ │ │ │ │
└──────────────┼────────────────┼─────────┼──────────┼────────────┼─────────────┘
│ │ │ │ │
▼ │ ▼ │ ▼
┌───────────────────┐ │ ┌────────────────┐│ ┌──────────────────────┐
│ CloudWatch │ │ │ CloudWatch ││ │ Amazon Managed │
│ Container │ │ │ (PromQL API) ││ │ Prometheus (AMP) │
│ Insights │ │ └───────┬────────┘│ └──────────┬───────────┘
└───────────────────┘ │ │ │ │
│ ▼ │ ▼
│ ┌────────────────┐│ ┌──────────────────────┐
│ │ Grafana / ││ │ Amazon Managed │
│ │ CW Console ││ │ Grafana (AMG) │
│ └────────────────┘│ └──────────────────────┘
│ │
デプロイ
パス 1 — OpenTelemetry 付き Container Insights(推奨デフォルト)
拡張オブザーバビリティ付きの Container Insights は、ノード、Pod、コンテナ、およびコントロールプレーンのメトリクスをそのまま提供します。クラスター全体の可視性を最速で実現するパスであり、カスタムスクレイプ設定は不要です。
amazon-cloudwatch-observability EKS アドオンをインストールします。これにより、OpenTelemetry ベースの収集を備えた CloudWatch エージェントがデプロイされます:
aws eks create-addon \
--cluster-name <CLUSTER_NAME> \
--addon-name amazon-cloudwatch-observability \
--region <REGION>
アドオンはインフラストラクチャメトリクスを収集し、自動的に CloudWatch Container Insights に送信します。ダッシュボードは CloudWatch コンソールの Container Insights に表示されます。
アクセラレーテッドコンピューティング。 このパスは、アクセラレーターハードウェアのそのままのサポートを提供する唯一のパスです。EKS でトレーニングまたは推論を実行する場合に重要です:
- NVIDIA GPU メトリクス — GPU ごとの使用率、メモリ、温度、および電力
- AWS Neuron メトリクス(Trainium および Inferentia 用)。
neuron-monitorを介して収集され、NeuronCore の使用率およびデバイスメモリを含みます - Elastic Fabric Adapter(EFA) メトリクス — 分散トレーニングで使用される高スループットインターコネクト用
アドオンは、関連するデバイスプラグインが存在する場合、スクレイプ設定なしでこれらを自動的に検出して収集します。パス 2 および 3 では、DCGM および Neuron エク スポーターから同等のものを自分で構築する必要があります。Container Insights アクセラレーテッドコンピュートモニタリングを参照してください。
IAM ロール設定および Fargate サポートを含む完全なセットアップの詳細については、以下を参照してください:
パス 2 — CloudWatch マネージド Prometheus コレクター
Container Insights のデフォルトセットを受け入れるのではなく、スクレイピングする Prometheus メトリクスを選択したい場合にこのパスを使用します。メトリクスは CloudWatch に到達し、PromQL でクエリ可能です。
クラスター内の Prometheus エンドポイントを検出してスクレイピングするマネージドスクレイパーを作成します。スクレイパーは AWS サービスアカウントで実行され、メトリクスを CloudWatch に配信します:
aws amp create-scraper \
--source eksConfiguration="{clusterArn=arn:aws:eks:<REGION>:<ACCOUNT>:cluster/<CLUSTER>,securityGroupIds=[<SG_ID>],subnetIds=[<SUBNET_1>,<SUBNET_2>]}" \
--destination cloudWatchConfiguration="{}" \
--scrape-configuration configurationBlob="<BASE64_SCRAPE_CONFIG>"
スクレイプ設定は標準の Prometheus フォーマットを使用します。インフラストラクチャ全体をカバーするために、kubernetes-apiservers、kube-state-metrics、node-exporter、および kubelet cAdvisor エンドポイントのジョブを含めてください。
完全な設定リファレンスについ ては、マネージドスクレイパーのドキュメントを参照してください。
可視化 — オプション A:アーティファクトリポジトリからの Grafana ダッシュボード
EKS インフラストラクチャ用のビルド済み Grafana ダッシュボードをダウンロードします:
curl -o eks-cluster-dashboard.json \
https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/cloudwatch-otlp/cluster.json
curl -o eks-namespace-dashboard.json \
https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/cloudwatch-otlp/namespace.json
curl -o eks-node-dashboard.json \
https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/cloudwatch-otlp/node.json
Grafana で、SigV4 認証を使用し Service を monitoring に設定した CloudWatch PromQL エンドポイントを指す Prometheus データソースを追加します。これには Amazon Managed Service for Prometheus は不要です。PromQL API は OTLP で取り込まれたメトリクスに対する CloudWatch のクエリサーフェスです。インポート時にダッシュボードの datasource 変数でそのデータソースを選択します。
可視化 — オプション B:CloudWatch コンソール
CloudWatch → メトリクス → すべてのメトリクスに移動し、PromQL 構文を使用して直接クエリします。デフォルトの EKS インフラストラクチャダッシュボードは CloudWatch → ダッシュボード → 自動ダッシュボード → EKS で利用可能です。