Azure Monitor を使用して Kubernetes を監視するためのベスト プラクティス

この記事では、Azure Kubernetes Service (AKS)Azure Arc 対応 Kubernetes クラスターの正常性とパフォーマンスを監視するためのベスト プラクティスについて説明します。 このガイダンスは、Azure Well-Architected Framework で説明されているアーキテクチャ エクセレンスの 5 つの柱に基づいています。

[信頼性]

クラウドでは、障害が発生することを認識しています。 目標は、障害がまったく発生しないように努力することではなく、障害が発生した単一コンポーネントの影響を最小限に抑えることです。 Azure Monitor を最大限に活用して Kubernetes クラスターと監視環境の信頼性を確保するには、次の情報を使用します。

設計チェック リスト

  • クラスターに対して Prometheus メトリックのスクレイピングを有効にする。
  • クラスターからログとパフォーマンス データを収集するために Container Insights を有効にする。
  • 診断設定を作成して、AKS クラスターのコントロール プレーン ログを収集する。
  • 推奨される Prometheus アラートを有効にする。
  • Container Insights をサポートする Log Analytics ワークスペースの可用性を確保する。

構成に関する推奨事項

推奨 特長
クラスターに対して Prometheus メトリックのスクレイピングを有効にする。 Prometheus 環境がまだない場合は、Prometheus 用の Azure Monitor マネージド サービスを使用して、クラスターで Prometheus を有効にしますAzure Managed Grafana を使用して、収集された Prometheus データを分析します。 既定の構成を超えて追加のメトリックを収集する場合は、「Prometheus 用 Azure Monitor マネージド サービスで Prometheus メトリックのスクレイピングをカスタマイズする」を参照してください。
クラスターからログとパフォーマンス データを収集するために Container Insights を有効にする。 Container Insights では、クラスター内の各ノードから stdout/stderr ログ、パフォーマンス メトリック、および Kubernetes イベントが収集されます。 ノードやその他のコンポーネントの可用性など、このデータを分析するためのダッシュボードとレポートが提供されます。 Log Analytics を使用して、収集したログの可用性エラーを特定します。
診断設定を作成して、AKS クラスターのコントロール プレーン ログを収集する。 AKS では、Azure Monitor のリソース ログとしてコントロール プレーン ログが実装されます。 診断設定を作成して、これらのログを Log Analytics ワークスペースに送信し、ログ クエリを使って可用性に影響するエラーや問題を特定できるようにします。
推奨される Prometheus アラートを有効にする。 Azure Monitor のアラートにより、問題が検出されたときに事前に通知されます。 クラスターで最も一般的な可用性とパフォーマンスの問題を検出する一連の推奨される Prometheus アラート ルールから始めます。 Container Insights によって収集されたデータを使用して、ログ検索アラートを追加する可能性があります。
Container Insights をサポートする Log Analytics ワークスペースの可用性を確保する。 Container Insights は、Log Analytics ワークスペースに依存します。 ワークスペースの信頼性を確保するための推奨事項については、「Azure Monitor ログのベスト プラクティス」を参照してください。

Security

セキュリティは、あらゆるアーキテクチャの最も重要な側面の 1 つです。 Azure Monitor は、最小限の特権の原則と多層防御の両方を採用する機能を提供します。 Kubernetes クラスターを監視し、確実に許可されているユーザーのみが収集されたデータにアクセスできるようにするには、次の情報を使用します。

設計チェック リスト

  • クラスターのマネージド ID 認証を使用して、Container Insights に接続する。
  • クラスターの Azure プライベート リンクを使用し、プライベート エンドポイントを使って Azure Monitor ワークスペースに接続することを検討する。
  • トラフィック分析を使用して、クラスターとの間のネットワーク トラフィックを監視する。
  • ネットワーク監視を有効にする。
  • Container Insights をサポートする Log Analytics ワークスペースのセキュリティを確保する。

構成に関する推奨事項

推奨 特長
クラスターのマネージド ID 認証を使用して、Container Insights に接続する。 マネージド ID 認証は、新しいクラスターの既定値です。 レガシ認証を使用している場合は、マネージド ID に移行し、証明書ベースのローカル認証を削除する必要があります。
クラスターの Azure プライベート リンクを使用し、プライベート エンドポイントを使って Azure Monitor ワークスペースに接続することを検討する。 Prometheus 用の Azure マネージド サービスでは、既定でパブリック エンドポイントを使用する Azure Monitor ワークスペースにデータが格納されます。 パブリック エンドポイントへの接続は、エンドツーエンドの暗号化で保護されます。 プライベート エンドポイントが必要な場合は、Azure プライベート リンクを使用して、承認されたプライベート ネットワークを通じてクラスターをワークスペースに接続できるようにします。 プライベート リンクを使用して、ExpressRoute または VPN 経由でワークスペース データを強制的に取り込むこともできます。

プライベート リンク用にクラスターを構成する方法の詳細については、「マネージド Prometheus と Azure Monitor ワークスペースのデータ インジェストのためのプライベート リンク」を参照してください。 プライベート リンクを使用したデータのクエリの詳細については、「マネージド Prometheus と Azure Monitor ワークスペースにプライベート エンドポイントを使用する」を参照してください。
トラフィック分析を使用して、クラスターとの間のネットワーク トラフィックを監視する。 トラフィック分析では、Azure Network Watcher NSG のフロー ログを分析して、Azure クラウドでのトラフィック フローに関する分析情報を提供します。 このツールを使用して、クラスターのデータ流出がないことを確かめ、不要なパブリック IP が公開されているかどうかを検出します。
ネットワーク監視を有効にする。 AKS のNetwork Observability アドオンでは、Kubernetes ネットワーク スタック内の複数のレイヤーにわたって監視することができます。 クラスター内のサービス間のアクセス (東西トラフィック) を監視および観察します。
Container Insights をサポートする Log Analytics ワークスペースのセキュリティを確保する。 Container Insights は、Log Analytics ワークスペースに依存します。 ワークスペースのセキュリティを確保するための推奨事項については、「Azure Monitor ログのベスト プラクティス」を参照してください。

コストの最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法のことです。 さまざまな構成オプションと、収集するデータの量を減らす機会を理解することで、Azure Monitor のコストを大幅に削減できます。 「Azure Monitor のコストと使用量」を参照して、Azure Monitor が請求するさまざまな方法と、毎月の請求書を表示する方法を理解しておいてください。

注意

Azure Monitor のすべての機能にわたるコスト最適化の推奨事項については、「Azure Monitor でコストを最適化する」を参照してください。

設計チェック リスト

  • Prometheus メトリックの Container Insights コレクションを有効にしない。
  • Container Insights でデータ収集を変更するようにエージェント収集を構成する。
  • Container Insights によるメトリック データの収集の設定を変更する。
  • Azure portal で Container Insights エクスペリエンスを使用しない場合は、メトリック データの Container Insights 収集を無効にする。
  • コンテナー ログ テーブルに対して定期的にクエリを実行しない場合、またはアラートに使用しない場合は、基本ログとして構成する。
  • 必要のないリソース ログの収集を制限する。
  • AKS リソース ログにはリソース固有のログを使用し、テーブルを基本ログとして構成する。
  • OpenCost を使用して、Kubernetes のコストに関する詳細を収集する。

構成に関する推奨事項

推奨 特長
Prometheus でメトリックのスクレイピングを有効にしている場合は、Log Analytics ワークスペースで Prometheus メトリックの Container Insights 収集を有効にしない。 Prometheus 用 Azure Monitor マネージド サービスを使用してクラスターから Prometheus メトリックをスクレイピングするだけでなく、Log Analytics ワークスペースで Prometheus メトリックを収集するように Container Insights を構成できます。 これはマネージド Prometheus のデータと重複しており、追加コストが発生します。
Container Insights でデータ収集を変更するようにエージェントを構成する。 コスト削減のためにインジェスト制御をする」で説明されているように、コンテナーの分析情報によって収集されたデータを分析し、不要なデータの収集を停止するように構成を調整します。
Container Insights によるメトリック データの収集の設定を変更する。 メトリック データが収集される頻度と Container Insights によって収集される名前空間の両方を変更する方法の詳細については、「コスト最適化設定を有効にする」を参照してください。
Azure portal で Container Insights エクスペリエンスを使用しない場合は、メトリック データの Container Insights 収集を無効にする。 Container Insights では、マネージド Prometheus と同じメトリック値の多くが収集されます。 これらのメトリックの収集を無効にするには、「Container insights でコスト最適化設定を有効にする」の説明に従って、ログとイベントのみを収集するようにコンテナー分析情報を構成します。 この構成により、Azure portal でのコンテナー分析情報のエクスペリエンスは無効になりますが、Grafana を使用して Prometheus メトリックを視覚化し、Log Analytics を使用してコンテナー分析情報によって収集されたログ データを分析できます。
コンテナー ログ テーブルに対して定期的にクエリを実行しない場合、またはアラートに使用しない場合は、基本ログとして構成する。 Container Insights スキーマを ContainerLogV2 に変換します。これは基本ログと互換性があり、「コスト削減のためにインジェスト制御をする」で説明されているように、大幅なコスト削減を実現できます。
必要のないリソース ログの収集を制限する。 AKS クラスターのコントロール プレーンのログは、Azure Monitor のリソース ログとして実装されています。 このデータを Log Analytics ワークスペースに送信するには、診断設定を作成します。 収集する必要があるカテゴリに関する推奨事項については、「AKS クラスターのコントロール プレーン ログを収集する」を参照してください。
AKS リソース ログにはリソース固有のログを使用し、テーブルを基本ログとして構成する。 AKS では、リソース ログに対して Azure 診断モードまたはリソース固有モードがサポートされています。 リソース ログを指定し、基本ログのテーブルを構成するオプションを有効にします。これにより、場合によってはクエリを実行するだけでアラートに使用しないログのインジェスト料金が削減されます。
OpenCost を使用して、Kubernetes のコストに関する詳細を収集する。 OpenCost は、Kubernetes のコストを理解し、AKS のコストを可視化する機能をサポートするための、ベンダーに依存しないオープンソースの CNCF サンドボックス プロジェクトです。 顧客固有の Azure 価格に加えて、詳細なコスト計算データを Azure Storage にエクスポートして、クラスター管理者がコストを分析および分類するのを支援します。

オペレーショナル エクセレンス

オペレーショナル エクセレンスとは、運用環境でサービスを確実に実行するために必要な運用プロセスを指します。 Kubernetes クラスターを監視するための運用要件を最小限に抑えるには、次の情報を使用します。

設計チェック リスト

  • Kubernetes 環境のすべてのレイヤーを監視するためのガイダンスを確認する。
  • Azure Arc 対応 Kubernetes を使用して、Azure 外部のクラスターを監視する。
  • クラウド ネイティブ ツールには Azure マネージド サービスを使用する。
  • AKS クラスターを既存の監視ツールに統合する。
  • Azure Policy を使用して、Kubernetes クラスターからのデータ収集を有効にする。

構成に関する推奨事項

推奨 特長
Kubernetes 環境のすべてのレイヤーを監視するためのガイダンスを確認する。 Container insights を使用して Kubernetes クラスターのパフォーマンスを監視する」には、ネットワーク、クラスター、アプリケーション レイヤーから Kubernetes 環境全体を監視するためのガイダンスとベスト プラクティスが含まれています。
Azure Arc 対応 Kubernetes を使用して、Azure 外部のクラスターを監視する。 Azure Arc 対応 Kubernetes を使用すると、他のクラウドで実行されている Kubernetes クラスターを、Container Insights や Prometheus 用 Azure Monitor マネージド サービスなど、AKS クラスターと同じツールを使用して監視できます。
クラウド ネイティブ ツールには Azure マネージド サービスを使用する。 Prometheus 用の Azure Monitor マネージド サービスAzure マネージド Grafanaでは、基になるインフラストラクチャを運用しなくても、クラウド ネイティブ ツール Prometheus と Grafana のすべての機能がサポートされます。 これらのツールをすばやくプロビジョニングし、最小限のオーバーヘッドで Kubernetes クラスターをオンボードできます。 これらのサービスを使用すると、コミュニティ ルールとダッシュボードの広範なライブラリにアクセスして、Kubernetes 環境を監視できます。
AKS クラスターを既存の監視ツールに統合する。 Prometheus と Grafana に既に投資している場合は、「Azure サービスとクラウド ネイティブ ツールを使用して Kubernetes クラスターを監視する」のガイダンスを使用して、AKS クラスターと Azure マネージド サービスを既存の環境に統合します。
Azure Policy を使用して、Kubernetes クラスターからのデータ収集を有効にする。 Azure Policy を使用して、Prometheus メトリックContainer Insights診断設定を有効にするためのデータ収集を有効にします。 これにより、新しいクラスターが自動的に監視され、その監視構成が適用されます。

パフォーマンス効率

パフォーマンス効率とは、ユーザーによって行われた要求に合わせて効率的な方法でワークロードをスケーリングできることです。 次の情報を使用して、Kubernetes クラスターのパフォーマンスを監視し、パフォーマンスを最大限に高めるために構成されていることを確かめます。

設計チェック リスト

  • クラスターの Prometheus メトリックの収集を有効にする。
  • Container Insights を有効にして、クラスターのパフォーマンスを追跡する。
  • 推奨される Prometheus アラートを有効にする。

構成に関する推奨事項

推奨 特長
クラスターの Prometheus メトリックの収集を有効にする。 Prometheus は、Cloud Native Compute Foundation のクラウドネイティブ メトリック ソリューションで、Kubernetes クラスターからメトリック データを収集して分析するために使用される最も一般的なツールです。 Prometheus 環境がまだない場合は、Prometheus 用の Azure Monitor マネージド サービスを使用して、クラスターで Prometheus を有効にしますAzure Managed Grafana を使用して、収集された Prometheus データを分析します。

既定の構成を超えて追加のメトリックを収集する場合は、「Prometheus 用 Azure Monitor マネージド サービスで Prometheus メトリックのスクレイピングをカスタマイズする」を参照してください。
Container Insights を有効にして、クラスターのパフォーマンスを追跡する。 Kubernetes クラスターに対して Container Insights を有効にした場合、ビューブックを使用して、クラスターのコンポーネントのパフォーマンスを追跡できます。 このデータは、Prometheus によって収集されたデータと重複する可能性があります。 コストに関する推奨事項については、「コストの最適化」を参照してください。
推奨される Prometheus アラートを有効にする。 Azure Monitor のアラートにより、問題が検出されたときに事前に通知されます。 クラスターで最も一般的な可用性とパフォーマンスの問題を検出する一連の推奨される Prometheus アラート ルールから始めます。 Container Insights によって収集されたデータを使用して、ログ検索アラートを追加する可能性があります。

次のステップ