Azure Kubernetes Service (AKS) コントロール プレーン メトリックの監視 (プレビュー)

Azure Kubernetes Service (AKS) コントロール プレーンの正常性は、クラスターのパフォーマンスと信頼性にとって重要です。 コントロール プレーン メトリック (プレビュー) では、可用性とパフォーマンスをより詳細に把握することで、全体的な可観測性を最大化し、オペレーショナル エクセレンスを維持できます。 これらのメトリックは Prometheus および Grafana と完全に互換性があり、必要と思われるもののみを保存するようにカスタマイズできます。 これらの新しいメトリックを使用すると、API サーバー、ETCD、Scheduler、Autoscaler、コントローラー マネージャーからすべてのメトリックを収集できます。

この記事は、この新機能と、その実装方法、収集されたテレメトリの観察方法を理解するのに役立ちます。

前提条件と制限事項

aks-preview Azure CLI 拡張機能をインストールまたは更新する

重要

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。

az extension add コマンドを使って Azure CLI 拡張機能 aks-preview をインストールします。

az extension add --name aks-preview

拡張機能のバージョンを更新する必要がある場合は、az extension update コマンドを使用してこれを行うことができます。

az extension update --name aks-preview

'AzureMonitorMetricsControlPlanePreview' 機能フラグを登録する

AzureMonitorMetricsControlPlanePreview 機能フラグは、次の例のとおり、AzureMonitorMetricsControlPlanePreview コマンドを使用して登録します。

az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

状態が [登録済み] と表示されるまでに数分かかります。 登録の状態は、az feature show コマンドで確認します。

az feature show --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

状態が Registered と表示されたら、az provider register コマンドを使用して Microsoft.ContainerService リソース プロバイダーの登録を最新の情報に更新します。

az provider register --namespace "Microsoft.ContainerService"

AKS クラスターでコントロール プレーン メトリックを有効にする

クラスターの作成時または既存のクラスターに対して、Azure Monitor の Prometheus 用マネージド サービス アドオンを使用してコントロール プレーン メトリックを有効にすることができます。 Kubernetes クラスターから Prometheus メトリックを収集するには、「Kubernetes クラスターの Prometheus と Grafana を有効にする」を参照 し、[CLI] タブの「AKS クラスター」の手順に従います。

ご利用のクラスターに Prometheus アドオンが既にデプロイされている場合は、az aks update を実行するだけで、コントロール プレーン メトリックの収集が開始されるようにクラスターを確実に更新できます。

az aks update --name <cluster-name> --resource-group <resource-group>

Note

クラスター ノードから収集されたメトリックとは異なり、コントロール プレーン メトリックは、ama-metrics アドオンの 一部ではないコンポーネントによって収集されます。 AzureMonitorMetricsControlPlanePreview 機能フラグとマネージド prometheus アドオンを有効にすると、コントロール プレーン メトリックが確実に収集されます。 メトリック収集を有効した後、データがワークスペースに表示されるまでに数分かかることがあります。

コントロール プレーン メトリックに対してクエリを実行する

コントロール プレーン メトリックは、クラスターのリージョンの Azure Monitor ワークスペースに保存されます。 クエリは、ワークスペースから直接、またはワークスペースに接続されている Azure Managed Grafana インスタンスを介して実行できます。 クラスターに関連付けられている Azure Monitor ワークスペースを見つけるには、選択した AKS クラスターの左側のウィンドウから [監視] セクションに移動し、[分析情報] を選択します。 クラスターの [コンテナー 分析情報] ページで、[監視の設定] を選択します。

Azure Monitor ワークスペースのスクリーンショット。

Azure Managed Grafana を使用してデータを視覚化している場合は、次のダッシュボードをインポートできます。 AKS には、コントロール プレーンのテレメトリ データをリアルタイムで表示および分析するのに役立つダッシュボード テンプレートが用意されています。

コントロール プレーン メトリックをカスタマイズする

既定では、AK には、コンポーネントごとに収集・保存されるメトリックの事前構成済みセットが含まれています。 API serveretcd は既定で有効になっています。 このリストは、ama-settings-configmap を使用してカスタマイズできます。 minimal-ingestion プロファイル メトリックの一覧については、こちらをご覧ください

既定のターゲットの一覧を次に示します。

controlplane-apiserver = true
controlplane-cluster-autoscaler = false
controlplane-kube-scheduler = false
controlplane-kube-controller-manager = false
controlplane-etcd = true

さまざまなオプションは、こちらに記載されている Azure マネージド Prometheus に似ています。

すべての ConfigMap を、任意のクラスターの kube-system 名前空間に対して適用する必要があります。

既定のターゲットに対し最小メトリックのみを取り込む

これは、設定 default-targets-metrics-keep-list.minimalIngestionProfile="true" の既定の動作です。 この記事で後述するメトリックのみが、既定のターゲットごとに取り込まれます。この場合では controlplane-apiservercontrolplane-etcd になります。

すべてのターゲットからすべてのメトリックを取り込む

クラスター上のすべてのターゲットからすべてのメトリックを収集するには、次の手順を実行します。

  1. ConfigMap ファイル ama-metrics-settings-configmap.yaml をダウンロードし、名前を configmap-controlplane.yaml に変更します。

  2. minimalingestionprofile = false を設定し、default-scrape-settings-enabled にあるスクレーピングするターゲットが true に設定されているかを確認します。 指定できるターゲットは、controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd のみです。

  3. kubectl apply コマンドを実行して ConfigMap を適用します。

    kubectl apply -f configmap-controlplane.yaml
    

    構成を適用した後、コントロール プレーンから取得した指定されたターゲットのメトリックが Azure Monitor ワークスペースに表示されるまでに数分かかります。

最小限のメトリックに加えて、他のいくつかのメトリックを取り込む

Minimal ingestion profile では、既定のダッシュボードで使用されるメトリック、既定の記録ルール、既定のアラートのみが収集されるため、メトリックのインジェスト量を減らすのに役立つ設定です。 この動作をカスタマイズするには、次の手順を実行します。

  1. ConfigMap ファイル ama-metrics-settings-configmap をダウンロードし、名前を configmap-controlplane.yaml に変更します。

  2. minimalingestionprofile = true を設定し、default-scrape-settings-enabled にあるスクレーピングするターゲットが true に設定されているかを確認します。 指定できるターゲットは、controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd のみです。

  3. default-targets-metrics-keep-list の下で、true ターゲットのメトリックの一覧を指定します。 たとえば、 にします。

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • kubectl apply コマンドを実行して ConfigMap を適用します。

    kubectl apply -f configmap-controlplane.yaml
    

    構成を適用した後、コントロール プレーンから取得した指定されたターゲットのメトリックが Azure Monitor ワークスペースに表示されるまでに数分かかります。

一部のターゲットから特定のメトリックのみを取り込む

  1. ConfigMap ファイル ama-metrics-settings-configmap をダウンロードし、名前を configmap-controlplane.yaml に変更します。

  2. minimalingestionprofile = false を設定し、default-scrape-settings-enabled にあるスクレーピングするターゲットが true に設定されているかを確認します。 ここで指定できるターゲットは、controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd のみです。

  3. default-targets-metrics-keep-list の下で、true ターゲットのメトリックの一覧を指定します。 たとえば、 にします。

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • kubectl apply コマンドを実行して ConfigMap を適用します。

    kubectl apply -f configmap-controlplane.yaml
    

    構成を適用した後、コントロール プレーンから取得した指定されたターゲットのメトリックが Azure Monitor ワークスペースに表示されるまでに数分かかります。

コントロール プレーン メトリックに関する問題のトラブルシューティング

機能フラグ AzureMonitorMetricsControlPlanePreview が有効になっており、 ama-metrics ポッドが実行されていることを確認します。

Note

Azure の Prometheus 用マネージド サービスのトラブルシューティング方法は、コントロール プレーンをスクレイピングするコンポーネントがマネージド prometheus アドオンには存在しないため、ここでは直接適用できません。

ConfigMap の書式設定またはエラー

ConfigMap の書式設定を再確認し、フィールドに意図した値が正しく設定されているかどうかを確認してください。 具体的には、 default-targets-metrics-keep-listminimal-ingestion-profile、および default-scrape-settings-enabled を確認します。

データ プレーンの問題からコントロール プレーンを分離する

まず、ノード関連のメトリックの一部を true に設定して、メトリックがワークスペースに転送されていることを確認します。 これは、問題がコントロール プレーン メトリックのスクレイピングに固有のものかどうかを判断するのに役立ちます。

取り込まれたイベント

変更を適用したら、「Azure Monitor の概要」ページ、または選択したクラスターの [監視] セクションからメトリック ス エクスプローラーを開くことができます。 Azure portal で [メトリック] を選択します。 1 分あたりに取り込まれるイベントの数の増減を確認します。 これは、特定のメトリックが欠落しているか、すべてのメトリックが欠落しているかどうかを判断するのに役立ちます。

特定のメトリックが公開されない

メトリックが文書化されていても、ターゲットから公開されておらず、Azure Monitor ワークスペースに転送されない場合がありました。 この場合は、他のメトリックがワークスペースに転送されていることを確認する必要があります。

Azure Monitor ワークスペースにアクセスできない

アドオンを有効にした際に、アクセス権のない既存のワークスペースが指定された可能性があります。 その場合、メトリックが収集および転送されていないように見える場合があります。 アドオンを有効にする際、またはクラスターの作成時に、新しいワークスペースが作成されたことを確認します。

AKS クラスターでコントロール プレーン メトリックを無効にする

機能フラグを無効にするか、マネージド Prometheus を無効にするか、AKS クラスターを削除することで、いつでもコントロール プレーン メトリックを無効にすることができます。

Managed Prometheus のセットアップ後にプレビュー フラグが有効にされている

既存の Managed Prometheus クラスター上でプレビュー フラグ (AzureMonitorMetricsControlPlanePreview) が有効にされている場合は、コントロール プレーン メトリックを出力するようにクラスターを強制的に更新する必要があります

az aks update を実行すれば、コントロール プレーン メトリックの収集が開始されるようにクラスターを確実に更新できます。

az aks update -n <cluster-name> -g <resource-group>

Note

このアクションでは、Azure Monitor ワークスペースに格納されている既存のデータは削除されません。

次のコマンドを実行して、Prometheus メトリックをスクレイピングするメトリック アドオンを削除します。

az aks update --disable-azure-monitor-metrics -n <cluster-name> -g <cluster-resource-group>

az feature unregister コマンドを使用して AzureMonitorMetricsControlPlanePreview 機能フラグの登録を解除して、AKS クラスター上のコントロール プレーン メトリックのスクレイピングを無効にするには、次のコマンドを実行します。

az feature unregister "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

よく寄せられる質問

  • これらのメトリックはセルフ ホステッドの Prometheus でスクレイピングできますか?

    • コントロール プレーン メトリックは現在、セルフホステッドの Prometheus ではスクレイピングできません。 セルフ ホステッドの Prometheus は、ロード バランサーによっては、1 つのインスタンスをスクレイピングできます。 多くの場合、Managed Prometheus でのみ表示されるコントロール プレーン メトリックの複数のレプリカがあるため、これらのメトリックは一般的ではありません。
  • ユーザー エージェントがコントロール プレーン メトリックで使用できないのはなぜですか?

次のステップ

このプレビュー機能を評価したら、フィードバックを共有してください。 ぜひご意見をお聞かせください。