Kubernetes の監視とログ記録

Azure Kubernetes Service (AKS)
Azure Log Analytics
Azure Monitor

この記事では、Azure Kubernetes Service (AKS) の監視と Amazon Elastic Kubernetes Service (Amazon EKS) の比較について説明します。 この記事では、AKS クラスターとそのワークロードのログを監視および管理するためのさまざまなオプションについて説明します。

注意

この記事は、Amazon EKS に詳しいプロフェッショナルの方を対象に、AKS についてわかりやすく説明した連載記事の一部です。

Amazon EKS の監視とログ記録

Kubernetes サービスと同様に、EKS にはコントロール プレーンとワーカー ノードという 2 つの主要なコンポーネントがあります。 レイヤーごとに特定の機能があります。

Amazon EKS のコントロール プレーンとクラスターの監視

Amazon EKS は、Amazon CloudWatch Logs と統合して、Amazon EKS コントロール プレーンのログ記録と監視の機能を提供します。 この統合は既定では有効になっていませんが、構成すると、次のログが収集されます。

  • API サーバーと API 呼び出し。
  • 監査ログとユーザー操作。
  • 認証システムのログ。
  • スケジューラとコントローラーのログ。

Amazon EKS は、/metrics エンドポイントで Prometheus テキスト形式でコントロール プレーンのメトリックを公開します。 CloudWatch Container Insights で、Prometheus メトリックを収集して格納できます。 EKS クラスター上に Prometheus をデプロイして自己管理することも、Amazon Managed service for Prometheus を使用することもできます。

Amazon EKS をアマゾン ウェブ サービス (AWS) の CloudTrail と統合して、アクションと API 呼び出しを追跡することもできます。 詳細については、「AWS CloudTrail を使用した Amazon EKS API コールのログ記録」を参照してください。

Amazon EKS ワークロードの監視

CloudWatch Container Insights では、EKS にデプロイされたコンテナー化されたアプリケーションからメトリックとログを収集して集計できます。 CloudWatch エージェントのコンテナー化されたバージョンを使用するか、デーモンセットとして AWS Distro for OpenTelemetry を使用して、Amazon EKS に Container Insights を実装できます。 FluentBit を使用してログを送信できます。

AKS の監視とログ記録

AKS は、他の Azure リソースと同様に、プラットフォーム メトリックとリソース ログを生成します。これは、その基本的な正常性とパフォーマンスを監視するために使用できます。

Diagram showing AKS logging and monitoring.

このアーキテクチャの Visio ファイルをダウンロードします。

Azure Monitor

AKS は Azure Monitor とネイティブに統合されます。 Azure Monitor は、Log Analytics ワークスペースと呼ばれる中央の場所にメトリックとログを格納します。 このデータを処理および分析して、分析情報とアラートが提供されます。 詳細については、「Azure Monitor のコンテナー正常性機能を使用して Azure Kubernetes Service (AKS) を監視する」を参照してください。

Container Insights は、AKS クラスターによって生成されたデータの収集、インデックス作成、および格納を実行する Azure Monitor の機能です。 AKS やその他のクラスター構成でホストされているマネージド Kubernetes クラスターを監視するように Container Insights を構成できます。 Container Insights では、Kubernetes 環境に合わせた視覚化を使用して、AKS の正常性とパフォーマンスを監視できます。 EKS と同様に、AKS クラスターに対して Container Insights を有効にすると、Log Analytics エージェントのコンテナー化されたバージョンがデプロイされます。これは、Log Analytics ワークスペースへのデータ送信を担当します。

Microsoft Sentinel

Microsoft Sentinel は、インテリジェントなセキュリティ分析と脅威インテリジェンスを企業全体に提供します。 Microsoft Sentinel を使用すると、攻撃の検出、脅威の可視化、予防的ハンティング、脅威への対応のための単一ソリューションが得られます。

Microsoft Sentinel は AKS に接続されている必要があります。 このコネクタを使用すると、Azure Kubernetes Service (AKS) の診断ログを Microsoft Sentinel にストリーミングできます。これにより、すべてのインスタンスでのアクティビティを継続的に監視できます。

Microsoft Sentinel にデータ ソースを接続した後、Microsoft Sentinel と Azure Monitor ブックを使用してデータを視覚化および監視できます。これにより多様なカスタム ダッシュボードを作成できます。

AKS クラスターとワークロードの監視

AKS デプロイは、クラスター レベルのコンポーネント、マネージド AKS コンポーネント、Kubernetes オブジェクトとワークロード、アプリケーション、および外部リソースに分割できます。 AKS クラスターとワークロード アプリケーションを監視するための一般的な戦略を次の表に示します。 各レベルには、別個の監視要件があります。

Level 説明 要件の監視
クラスター レベルのコンポーネント AKS ノードとノード プールとして抽象化された仮想マシン スケール セット ノードの状態と、CPU、メモリ、ディスク、ネットワークなどのリソースの使用状況
マネージド AKS コンポーネント API サーバー、クラウド コントローラー、kubelet などの AKS コントロール プレーン コンポーネント kube-system 名前空間のコントロール プレーンのログとメトリック
Kubernetes オブジェクトとワークロード デプロイ、コンテナー、レプリカ セットなどの Kubernetes オブジェクト リソースの使用状況とエラー
アプリケーション AKS クラスターで実行されているアプリケーション ワークロード アーキテクチャに固有の監視 (ただし、アプリケーション ログとサービス トランザクションを含む)
外部 AKS の一部ではないが、クラスターのスケーラビリティと管理に必要な外部リソース 各コンポーネントに固有
  • クラスター レベルのコンポーネント: 既存の Container Insights ビューとレポートを使用してクラスター レベルのコンポーネントを監視し、それらの正常性、準備状態、パフォーマンス、CPU とメモリのリソースの使用状況、および傾向を把握できます。

  • マネージド AKS コンポーネント: メトリックス エクスプローラーを使用して、配信要求カウンターを表示できます。 このビューには、要求の待機時間と作業キューの処理時間が含まれます。

  • Kubernetes オブジェクトとワークロード: 既存の Container Insights ビューとレポートを使用して、デプロイ、コントローラー、ポッド、コンテナーを監視できます。 ノードコントローラーのビューを使用して、ノードとコントローラーで実行されているポッドの正常性とパフォーマンス、および CPU とメモリの観点でのそれらのリソース消費量を表示します。

    Container Insights のコンテナー ビューで、コンテナーの正常性とパフォーマンスを表示したり、個々のコンテナーを選択してそのイベントとログをリアルタイムで監視したりできます。 このビューの使用、およびコンテナーの正常性とパフォーマンスの分析の詳細については、「Container insights を使用して Kubernetes クラスターのパフォーマンスを監視する」を参照してください。

  • アプリケーション:Application Insights を使用して、AKS やその他の環境で実行されているアプリケーションを監視できます。 Application Insights は、多くのプログラミング言語をサポートするアプリケーション パフォーマンス管理ツールです。 ニーズに応じて、アプリケーション コードをインストルメント化して、要求、トレース、ログ、例外、カスタム メトリック、エンド ツー エンド トランザクションをキャプチャし、このデータを Application Insights に送信できます。 Java アプリケーションがある場合は、コードをインストルメント化せずに監視機能を提供できます。 詳細については、「Kubernetes に対するゼロ インストルメンテーション アプリケーション監視」を参照してください。

  • 外部コンポーネント: Prometheus や Grafana などのツールを使用して、サービス メッシュ、イングレス、エグレスなどの外部コンポーネントを監視できます。 Azure Monitor 機能を使用して、ワークロード アプリケーションが使用するサービスとしてのプラットフォーム (PaaS) (データベースやその他の Azure リソースなど) を監視できます。

サードパーティの監視ソリューション

AKS ノード プールに Grafana や Prometheus などのサードパーティの監視ソリューションを設定できます。

  • Grafana の場合、Grafana Labs に重要な API サーバー メトリックのビューを含むダッシュボードが用意されています。 このダッシュボードは、既存の Grafana サーバーで使用することも、Azure で新しい Grafana サーバーを設定することもできます。 詳細については、「Grafana での Azure サービスの監視」を参照してください。

  • Prometheus は、Cloud Native Compute Foundation による、一般的なオープン ソースのメトリック監視ソリューションです。 Prometheus を Azure Monitor と統合できるため、Prometheus サーバーをストアで設定して管理する必要はありません。

    Container Insights には、Prometheus メトリックを収集するためのシームレスなオンボード エクスペリエンスが用意されています。 エクスポーターまたはポッド アプリケーションを使用して Prometheus メトリック エンドポイントを公開できます。これにより、Container Insights 用のコンテナー化されたエージェントがメトリックをスクレイピングできます。 Container Insights は、ログ収集を含め、エンド ツー エンドの AKS の監視機能を補完して完備します。これは、スタンドアロン ツールである Prometheus からは提供されません。 詳細については、「Container insights で Prometheus メトリックのスクレイピングを構成する」を参照してください。

AKS の監視コスト

Azure Monitor の価格モデルは、主に、Log Analytics ワークスペースに 1 日あたりに取り込まれるデータ量に基づきます。 コストは、選択するプランと保有期間によって異なります。

Container Insights を有効にする前に、コストを見積もり、データ インジェストとそのコストを制御する方法を確認しましょう。 詳細なガイダンスについては、「AKS クラスターを監視するためのコストの見積もり」を参照してください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

その他の共同作成者:

  • Chad Kittel | プリンシパル ソフトウェア エンジニア
  • Ed Price | シニア コンテンツ プログラム マネージャー
  • Theano Petersen | テクニカル ライター

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ