Amazon Web Services ブログ

Amazon EKS on EC2 向けにオブザーバビリティが拡張された Container Insights を発表

この記事は Announcing Container Insights with Enhanced Observability for Amazon EKS on EC2 (記事公開日: 2023 年 11 月 7 日) を翻訳したものです。

Container Insights は、Amazon のフルマネージドなモニタリングおよびオブザーバビリティサービスであり、DevOps エンジニア、開発者、SRE、IT マネージャーに、コンテナ化されたアプリケーションとマイクロサービス環境に対するすぐに使える可視性を提供します。Container Insights を使用すると、Kubernetes クラスターの問題の監視、切り分け、診断を最小限の労力で実施できます。これは、クラスター、サービス、Pod の CPU、メモリ、ネットワーク、ディスク使用量などのインフラストラクチャテレメトリを、CloudWatch コンソールで簡単に視覚化できるメトリクスとログの形で提供します。また、お客様は CloudWatch アラームを追加して、プロアクティブなアクションのために異常を通知させることができます。本日、これをさらに一歩進める「Amazon EKS のオブザーバビリティが拡張された Container Insights」を発表できることを嬉しく思います。これは、API サーバーや etcd のような Kubernetes コントロールプレーンコンポーネントからの追加テレメトリを提供します。また、より迅速な問題の切り分けとトラブルシューティングのために、Pod ごと、コンテナごと、そして Kube State メトリクス (訳注: kube-state-merics に相当するメトリクスの一部) を含む、コンテナレベルまでの詳細な健全性とパフォーマンスメトリクスも含まれています。

Kube State メトリクスを使用すると、Kubernetes クラスターのコアコンポーネントと全体的な健全性を包括的に可視化できるため、ユーザーはリアルタイムの状態をモニタリングし、問題やボトルネックを迅速に検出できます。詳細なコンテナレベルのメトリクスを使用することで、さまざまなクラスターレイヤーにわたって視覚的にドリルダウンおよびドリルアップして、個々のコンテナのメモリリークなどの問題を簡単に特定し、解決までの平均時間を短縮できます。もう 1 つの重要な利点は、アラームがまだ設定されていない場合でも、リスクを特定しプロアクティブなアクションを取ることができることです。モニタリングされていないコンポーネントにアラームを設定したり、より多くのリソースを割り当てたりして、先手を打ってリスクを軽減し、エンドユーザーエクスペリエンスの低下を回避することができます。最終的には、拡張されたオブザーバビリティ機能により、お客様のアクションに依存することなく、早期のリスク特定とプロアクティブな緩和が容易になり、エンドユーザーエクスペリエンスに悪影響を及ぼす可能性のある問題の予防に役立ちます。

Amazon EKS の拡張されたオブザーバビリティを有効にするにはどうすればよいですか?
Amazon CloudWatch Observability EKS アドオンを使用することで、Amazon EKS クラスターで拡張されたオブザーバビリティを得ることができます。Amazon EKS アドオンは、Amazon EKS クラスターで拡張されたオブザーバビリティを有効にする簡単な方法を提供します。このアドオンは CloudWatch エージェントと Fluent Bit をインストールし、インフラストラクチャとコンテナのログに関するインサイトを提供します。CloudWatch エージェントは、クラスターノードから CloudWatch に主要なインフラストラクチャメトリクスを送信します。これにより、CPU、ネットワーク、ディスク、およびその他の低レベルのノードメトリクスをモニタリングできます。Fluent Bit はコンテナログをクラスターから CloudWatch Logs に送信します。これにより、コンテナからのアプリケーションログとシステムログについてのインサイトが得られます。Amazon EKS アドオンを使用するには、クラスター内のワーカーノードが使用する IAM ロールに必要な IAM アクセス許可を設定します。

aws iam attach-role-policy --role-name my-worker-node-role \
  --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

次に、以下のようにアドオンをインストールします。「my-cluster-name」はクラスターの名前に置き換えてください。

aws eks create-addon --cluster-name my-cluster-name \
  --addon-name amazon-cloudwatch-observability

以上です!これで EKS クラスターで Container Insights が有効になります。簡単なオンボーディングを可能にするために、EKS コンソールのクラスター情報ビューからアクセスできるアドオンタブからも同じアドオンを利用可能です。 これにより、CloudWatch コンソールで拡張されたメトリクスとログが表示されるようになります。EKS アドオンは、EKS クラスターにオブザーバビリティを導入する簡単な方法を提供します。いくつかのコマンドを実行するだけで、AWS 上の Kubernetes ワークロードの豊富なモニタリングとトラブルシューティングを有効にすることができます。完了すると、以下のように Amazon EKS の拡張されたオブザーバビリティ機能が有効になります。

kubeclt の出力

kubeclt の出力

有効にすると、AWS マネジメントコンソールでは以下のような拡張された Container Insights のページが表示できます。クラスター、Kube State、コントロールプレーンメトリクスのハイレベルな概要が表示されます。Container Insights ダッシュボードには、クラスターのステータスとアラームが表示されます。CPU とメモリの事前定義されたしきい値を使用して、消費量が多いリソースを迅速に特定し、パフォーマンスへの影響を回避するためのプロアクティブなアクションを可能にします。

Container Insights ダッシュボード

Container Insights ダッシュボード

また、以下のようにクラスター、ノード、Pod、ワークロード、コンテナのレベル別にトップ 10 リストを表示するオプションもあります。これらは、リソースの消費量に基づいて、使用量が 100% に達する前に、アラームがなくてもリスクのあるコンポーネントを特定するために使用できる重要なチャートです。

トップ 10 リスト

トップ 10 リスト

以下に示すクラスターの概要セクションでは、重要性に基づいてクラスターを一覧表示します。アラーム状態にあるクラスターは最初に表示されます。次にリソース消費量の多いクラスターが表示されます。ユーザーはこのリスト表示を使用して、必要に応じてクラスターをフィルタリングすることもできます。

クラスターの概要

クラスターの概要

上記のビューによると、「prodcatalog」クラスターの使用率が 50% を超えているようです。クラスター名をクリックすると「パフォーマンスのモニタリング」ダッシュボードが開き、さらに詳細を確認できます。このモニタリングダッシュボードには、パフォーマンスを分析するための以下のようなさまざまなビューが用意されています。

  • クラスター全体のパフォーマンスダッシュボードビュー – クラスター全体のリソース使用率の概要を提供します。
  • ノードパフォーマンスビュー – 個々のノードレベルのメトリクスを可視化します。
  • Pod パフォーマンスビュー – CPU、メモリ、ネットワークなどの Pod レベルのメトリクスに焦点を当てます。
  • コンテナパフォーマンスビュー – 個々のコンテナの使用率メトリクスにドリルダウンします。

例えば、クラスター全体のパフォーマンスダッシュボードビューから始めて、ハイレベルな概要を把握することができます。さまざまなビューを使用することで、クラスターからノード、Pod、コンテナまで、系統的に絞り込んで根本原因を見つけることができます。

クラスターのパフォーマンスモニタリング

クラスターのパフォーマンスモニタリング

以下にチャートによると、ノードレベルの CPU とメモリの使用率が最大で 60% 近くまで急上昇しているようです。

ノードレベルの CPU とメモリの使用率

ノードレベルの CPU とメモリの使用率

Container Insights ダッシュボードでは、より詳細なビューにドリルダウンして、さらなるインサイトを得ることができます。例えば、コンテナビューには、Pod の制限に対する CPU とメモリの使用率が表示されます。このビューから、fluent-bit コンテナの使用率が 77% でピークに達していることがわかりました。これらのさまざまなビューを詳しく調べることで、問題の根本原因をより簡単に特定できます。ダッシュボードは、テレメトリデータをさまざまな角度から分析するためのさまざまなビューを提供します。コンテナレベルの詳細にドリルダウンすると、そのコンテナの関連コンポーネントがフィルターに自動的に入力されます。これにより、ユーザーは、障害の発生したコンテナがどのノード上にあるのかを迅速に特定し、そのノード上の他の隣接するコンポーネントに対する潜在的なリスクを調査することができます。ネストされたビューと自動フィルタリングを活用することで、根本原因の分析が非常に効率的になります。これにより、ハイレベルのモニタリングから Pod やコンテナのメトリクスに至るまで、コンテナ化されたワークロードを可視化できます。この可視性は、トラブルシューティングとコンテナのパフォーマンスの最適化に役立ちます。

コンテナのパフォーマンスモニタリング

コンテナのパフォーマンスモニタリング

ノードのパフォーマンスダッシュボードビューには、ノードごとに実行中の Pod、CPU とメモリの使用率などが含まれます。特定のインスタンスの詳細を知りたい場合は、フィルターを使用して同じことを実現できます。

ノードのパフォーマンスモニタリング

ノードのパフォーマンスモニタリング

Container Insights のサービスダッシュボードビューは、Kubernetes Service の Pod の CPU、メモリ、ネットワークパフォーマンスのメトリクスを提供します。これらのインサイトにより、リソースの利用をより最適化し、コンテナ化されたサービスの問題をトラブルシューティングできます。

サービスのパフォーマンスモニタリング

サービスのパフォーマンスモニタリング

加えて、以下に示すように、Java、HAproxy などの一般的なワークロードのためのダッシュボードビューもあります。

一般的なワークロードのためのダッシュボードビュー

一般的なワークロードのためのダッシュボードビュー

また、Container Insights でシステムやアプリケーションのログを分析することもできます。メトリクスの横にある 3 つの点をクリックして「View logs」を選択するだけで、関連するログにアクセスできます。Logs Insights には、事前に入力されたクエリが付属しているため、簡単にログデータを分析し、インサイトを得ることができます。

便利なグラフを、Container Insights から直接ダッシュボードに追加することもできます。価値のあるデータを含むグラフを見つけたら、その横にある 3 つの点をクリックして「Add to dashboard」を選択すると、ダッシュボードに自動的に追加され、簡単にモニタリングできるようになります。これらのビューからアラームを作成するのも簡単です。例えば、「CPU Utilization Over Pod Limit」のアラームを作成するには、3 つの点をクリックして「View in metrics」を選択します。これにより、そのメトリックのしきい値に基づいてアラームを設定することができます。Container Insights のこれらのビルトインオプションを活用すると、コンテナ化されたアプリケーションの監視、分析、アラートの作成が簡単になります。

アラーム作成 - View in metrics

アラーム作成 – View in metrics

これにより、以下のようなメトリクスビューが表示されます。ここで「ベル」のアイコンをクリックすることで、このメトリクスのアラームを作成できます。

アラーム作成 - メトリクスビュー

アラーム作成 – メトリクスビュー

これにより、「Create Alarm」ウィザードが開き、ステップバイステップガイドで値をカスタマイズしてアラームを作成できます。アラームを作成すると、アラームダッシュボードにもアラームが表示されます。

アラーム作成ウィザード

アラーム作成ウィザード

すべての新しいメトリクスは、CloudWatch メトリクスセクションの「ContainerInsights」メトリクス名前空間の下に整理されます。

ContainerInsights メトリクス名前空間

ContainerInsights メトリクス名前空間

「ContainerInsights」にアクセスすると、以下のようなさまざまなメトリクスが表示されるはずです。

拡張された Container Insights のさまざまなメトリクス

拡張された Container Insights のさまざまなメトリクス

AWS は Amazon EKS の Container Insights に新しい統一された料金モデルを導入し、メトリクス数とログの取り込みにかかるコストを単一の Observation (観測数) 単位の低コストな料金にバンドルします。この競争力のある価格設定により、クラスターを完全にモニタリングする追加メトリクスを収集するための追加コストなしで、デフォルトで拡張されたオブザーバビリティを提供することができます。

このブログ記事では、Amazon EKS のオブザーバビリティが拡張された Container Insights の一部として導入されたさまざまな機能を紹介しました。Container Insights は、AWS 上のコンテナワークロードのオブザーバビリティを得るための簡単な方法を提供し、組織がコンテナ化されたアプリケーションやマイクロサービスをモニタリング、トラブルシューティング、最適化するのに役立ちます。Amazon EKS のオブザーバビリティが拡張された Container Insights の提供開始により、AWS はテレメトリ収集を拡張し、包括的なステータスダッシュボードを提供することで、このサービスを強化しました。AWS 上でコンテナを実行している組織は、オブザーバビリティが拡張された Container Insights を有効にして、Amazon EKS 上の Kubernetes 環境の可視性の向上と迅速なトラブルシューティングを実現することができます。これにより、コンテナの健全性とパフォーマンスをモニタリングする際に推測に頼る必要がなくなります。

Amazon EKS の新しい改善されたオブザーバビリティの詳細については、こちらのドキュメントをご参照ください。

翻訳はプロフェッショナルサービスの杉田が担当しました。原文はこちらです。