Container insights を使用して Kubernetes クラスターのパフォーマンスを監視する

Container insights では、パフォーマンス グラフと正常性状態を使用して、Azure Kubernetes Service (AKS) や Azure Stack などの環境でホストされる Kubernetes クラスターのワークロードを 2 つの観点から監視できます。 クラスターから直接監視するか、Azure Monitor からサブスクリプション内のすべてのクラスターを表示することができます。 Azure Container Instances の表示は、特定の AKS クラスターを監視するときにも可能です。

この記事は、2 つの観点と、検出された問題をすばやく評価、調査、解決するうえで Azure Monitor がどのように役立つかを理解するのに役立ちます。

Container insights を有効にする方法の詳細については、「Container insights のオンボード」を参照してください。

Azure Monitor には、ご使用のサブスクリプション内のリソース グループにデプロイされ、Linux および Windows Server 2019 を実行しているすべての監視対象 Kubernetes クラスターの正常性状態が表示される複数クラスター ビューが用意されています。 ここでは、ソリューションによって監視されない、すべての環境にわたって検出されたクラスターが表示されます。 すぐにクラスターの正常性を把握することができ、ここからは、ノードとコントローラーのパフォーマンス ページにドリルダウンしたり、クラスターのパフォーマンス グラフを表示したりできます。 検出され、監視対象外として識別された AKS クラスターについては、いつでも監視を有効にできます。

Linux クラスターと比較した場合の Container insights を使用した Windows Server クラスターの監視の主な相違点については、概要の記事の Container insights の機能に関するページを参照してください。

Azure Monitor の複数クラスター ビュー

デプロイされているすべての Kubernetes クラスターの正常性状態を表示するには、Azure portal で左側のウィンドウから [モニター] を選択します。 [分析情報] セクションで [コンテナー] を選択します。

Azure Monitor multi-cluster dashboard example

グリッドに表示される結果のスコープを指定して、次のようなクラスターを表示できます。

  • Azure - Azure Kubernetes Service でホストされている AKS および AKS エンジン クラスター
  • Azure Stack (プレビュー) - Azure Stack でホストされている AKS エンジン クラスター
  • Azure 以外 (プレビュー) - オンプレミスでホストされている Kubernetes クラスター
  • すべて - Azure、Azure Stack、および Container insights にオンボードされたオンプレミスの環境でホストされているすべての Kubernetes クラスターを表示します。

特定の環境からクラスターを表示するには、ページの左上隅にある [環境] ピルから選択します。

Environment pill selector example

[監視対象クラスター] タブでは次のことがわかります。

  • 重大または異常な状態のクラスターの数と、正常なクラスターまたはレポートしていないクラスター (不明状態と呼ばれます) の数。
  • すべての Azure Kubernetes エンジン (AKS エンジン) のデプロイが正常かどうか。
  • クラスターごとの、デプロイされているノード、ユーザー ポッド、システム ポッドの数。
  • 使用できるディスク容量と、容量の問題があるかどうか。

含まれる正常性状態は次のとおりです。

  • 正常:VM では問題は検出されておらず、要求されたとおりに機能しています。
  • [高] :1 つまたは複数の重大な問題が検出されており、意図される正常な動作状態に戻すには対処する必要があります。
  • 警告:1 つまたは複数の問題が検出されており、対処する必要があります。対処しないと、正常性状態が重大になる可能性があります。
  • 不明:サービスがノードまたはポッドに接続できなかった場合、状態は不明に変わります。
  • 見つかりませんでした:ワークスペース、リソース グループ、またはこのソリューションのワークスペースを含むサブスクリプションのいずれかが削除されています。
  • 権限がありません:ユーザーはワークスペース内のデータを読み取るために必要なアクセス許可を持っていません。
  • Error: ワークスペースからデータを読み取るときにエラーが発生しました。
  • 間違った構成: 指定されたワークスペースで Container insights が正しく構成されませんでした。
  • データがありません:過去 30 分間にデータがワークスペースにレポートされていません。

クラスター全体の状態は、1 つの例外を除き、3 つの状態のうち "最悪のもの" として計算されます。 3 つの状態のいずれかが不明の場合は、クラスター全体の状態も [不明] と表示されます。

次の表では、複数クラスター ビューでの監視対象クラスターの正常性状態を制御する計算の詳細を示します。

監視対象のクラスター Status 可用性
ユーザー ポッド
Healthy 100%
警告 90 ~ 99%
Critical <90%
Unknown 過去 30 分以内に報告していない場合
システム ポッド
Healthy 100%
警告 該当なし
Critical <100%
Unknown 過去 30 分以内に報告していない場合
Node
Healthy >85%
警告 60 - 84%
Critical <60%
Unknown 過去 30 分以内に報告していない場合

クラスターの一覧からクラスターの名前を選択して、 [クラスター] ページにドリルダウンできます。 その後、その特定のクラスターの [ノード] 列でノードのロールアップを選択すると、 [ノード] パフォーマンス ページに移動します。 また、 [ユーザー ポッド] または [システム ポッド] 列のロールアップを選択して、 [コントローラー] パフォーマンス ページにドリルダウンすることもできます。

クラスターから直接、パフォーマンスを確認する

左側のペインで [Insights](分析情報)>[クラスター] を選択するか、マルチクラスター ビューからクラスターを選択すると、AKS クラスターから Container insights に直接アクセスできます。 実際のクラスターに関する情報は 4 つの観点にまとめられます。

  • クラスター
  • Nodes
  • コントローラー
  • Containers

Note

この記事の残りの部分で説明するエクスペリエンスでも、複数クラスタービューからの選択時に Azure Stack またはその他の環境でホストされる Kubernetes クラスターのパフォーマンスと正常性状態を表示できます。

既定のページが開き、クラスターの主要なパフォーマンス メトリックを示す 4 つのパフォーマンス折れ線グラフが表示されます。

Example performance charts on the Cluster tab

パフォーマンス グラフには、4 つのパフォーマンス メトリックが表示されます。

  • ノードの CPU 使用率: クラスター全体の CPU 使用率の集計されたパースペクティブ。 時間範囲ごとに結果をフィルター処理するには、グラフの上のパーセンタイル セレクターで [平均][最小][50][90][95] 、または [最大] を選択します。 フィルターは、個別に、または組み合わせて使用できます。
  • ノードのメモリ使用率: クラスター全体のメモリ使用率の集計されたパースペクティブ。 時間範囲ごとに結果をフィルター処理するには、グラフの上のパーセンタイル セレクターで [平均][最小][50][90][95] 、または [最大] を選択します。 フィルターは、個別に、または組み合わせて使用できます。
  • ノード数:Kubernetes からのノードの数と状態。 表示されるクラスター ノードの状態は、[合計]、[準備完了]、[準備ができていません] です。 グラフの上のセレクターで個別にまたは組み合わせてフィルター処理できます。
  • アクティブなポッド数:Kubernetes からのポッドの数と状態。 表示されるポッドの状態は、[合計]、[保留中]、[実行中]、[不明]、[成功]、または [失敗] です。 グラフの上のセレクターで個別にまたは組み合わせてフィルター処理できます。

左と右方向キーを使用すると、グラフ上の各データ ポイントに順番に移動します。 上と下方向キーを使用すると、パーセンタイル ラインに順番に移動します。 いずれかのグラフの右上隅にあるピン アイコンを選択すると、最後に表示した Azure ダッシュボードに選択したグラフがピン留めされます。 ダッシュ ボードで、グラフのサイズおよび位置を変更できます。 ダッシュボードからグラフを選択すると、Container insights にリダイレクトされ、適切なスコープとビューが読み込まれます。

Container insights では Azure Monitor のメトリックス エクスプローラーもサポートされており、独自のプロット グラフの作成、傾向の関連付けと調査、およびダッシュボードへのピン留めを行うことができます。 メトリックス エクスプローラーでは、メトリックベースの警告ルールの基準として、実際のメトリックを視覚化するために設定した条件を使用することもできます。

メトリックス エクスプローラーでコンテナーのメトリックを表示する

メトリックス エクスプローラーで、Container insights からのノードとポッドの使用率のメトリックを集計して表示できます。 次の表は、メトリックのグラフを使用してコンテナーのメトリックを視覚化する方法の理解に役立つ詳細情報をまとめたものです。

名前空間 メトリック 説明
insights.container/nodes
cpuUsageMillicores クラスター全体で集計された CPU 使用率の測定値。 これは、CPU コアを 1,000 ユニット (ミリ = 1,000) に分割したものです。 多くのアプリケーションによって 1 つのコアが使用されている可能性があるコンテナーで、コアの使用状況を特定するために使用されます。
cpuUsagePercentage クラスター全体で集計された平均 CPU 使用率の測定値 (%)。
memoryRssBytes 使用中のコンテナー RSS メモリ (バイト数)。
memoryRssPercentage 使用中のコンテナー RSS メモリ (%)。
memoryWorkingSetBytes 使用中のコンテナーのワーキングセット メモリ。
memoryWorkingSetPercentage 使用中のコンテナーのワーキングセット メモリ (%)。
nodesCount Kubernetes からのノードの数。
insights.container/pods
PodCount Kubernetes からのポッドの数。

メトリックを分割してディメンションごとに表示したり、セグメント間の比較を視覚化したりできます。 ノードの場合は、"ホスト" ディメンションでグラフをセグメント化できます。 ポッドの場合は、次のディメンションでセグメント化できます。

  • コントローラー
  • Kubernetes 名前空間
  • Node
  • 段階

ノード、コントローラー、コンテナーの正常性を分析する

[ノード][コントローラー] 、および [コンテナー] タブに切り替えると、ページの右側に自動的にプロパティ ウィンドウが表示されます。 ここには選択された項目のプロパティが示され、Kubernetes オブジェクトを整理するために定義したラベルが含まれます。 Linux ノードを選択すると、 [Local Disk Capacity](ローカル ディスク容量) セクションに、ノードに対して表示される各ディスクの使用可能なディスク領域と使用割合も表示されます。 ウィンドウの表示と非表示を切り替えるには、ウィンドウの >> リンクを選択します。

階層内のオブジェクトを展開すると、選択されたオブジェクトに基づいて、プロパティ ウィンドウが更新されます。 ウィンドウから、ウィンドウの上部にある [ライブ データの表示 (プレビュー)] リンクを選択して、Kubernetes コンテナー ログ (stdout/stderror)、イベント、およびポッド メトリックを表示することもできます。 このデータを表示するためのアクセス権の付与および管理に必要な構成について詳しくは、ライブ データの設定 (プレビュー) に関する記事をご覧ください。 クラスター リソースの表示中は、コンテナーからこのデータをリアルタイムで確認できます。 この機能の詳細については、「Kubernetes ログ、イベント、およびポッド メトリックをリアルタイムで表示する方法」を参照してください。 事前に定義されたログ検索に基づいてワークスペースに格納されている Kubernetes ログ データを表示するには、 [View in analytics](分析で表示する) ドロップダウン リストから [コンテナー ログの表示] を選択します。 このトピックに関するその他の情報については、「Container insights のログのクエリを実行する方法」を参照してください。

ページ上部の [+ フィルターの追加] オプションを使用して、 [サービス][ノード][名前空間] 、または [ノード プール] でビューの結果をフィルター処理します。 フィルター スコープを選択した後は、 [Select value(s)](値の選択) フィールドに表示される値のいずれかを選択します。 構成したフィルターは、AKS クラスターのいずれかの観点を表示するときにグローバルに適用されます。 数式は、等号のみがサポートされています。 最初のフィルターの上に新しいフィルターを追加して、結果をさらに絞り込むことができます。 たとえば、ノードによるフィルターを指定した場合、2 番目のフィルターとしてはサービスまたは名前空間だけを選択できます。

あるタブで指定したフィルターは別のタブを選択しても引き続き適用されます。 指定されているフィルターの横にある [x] 記号を選択すると削除されます。

[ノード] タブに切り替えます。行階層は、実際のクラスター内のノードから始まる Kubernetes オブジェクト モデルに従っています。 ノードを展開すると、ノード上で実行されている 1 つまたは複数のポッドが表示されます。 複数のコンテナーがポッドにグループ化されている場合、階層内の最後の行として表示されます。 ホストでプロセッサまたはメモリが不足している場合、ホスト上で実行されている、ポッドに関連しないワークロードの数を確認することもできます。

Example of the Kubernetes Node hierarchy in the performance view

Windows Server 2019 OS を実行している Windows Server コンテナーは、一覧内のすべての Linux ベースのノードの後に表示されます。 Windows Server ノードを展開すると、そのノード上で実行されている 1 つ以上のポッドおよびコンテナーを表示できます。 ノードを選択すると、プロパティ ウィンドウにバージョン情報が表示されます。

Example Node hierarchy with Windows Server nodes listed

Linux OS を実行している Azure Container Instances 仮想ノードは、一覧内の最後の AKS クラスター ノードの後に表示されます。 Container Instances 仮想ノードを展開すると、そのノード上で実行されている 1 つ以上の Container Instances ポッドおよびコンテナーを表示できます。 メトリックは、ノードではなく、ポッドについてのみ収集およびレポートされます。

Example Node hierarchy with Container Instances listed

展開されたノードでは、ノード上で実行されているポッドまたはコンテナーからコントローラーにドリルダウンして、そのコントローラーでフィルター処理されたパフォーマンス データを見ることができます。 特定のノードの [コントローラー] 列の値を選択します。

Screenshot shows the drill-down from node to controller in the performance view

ページ上部のコントローラーまたはコンテナーを選択し、それらのオブジェクトの状態やリソース使用率を確認します。 メモリ使用率を確認するには、 [メトリック] ドロップダウン リストで [メモリ RSS] または [メモリ ワーキング セット] を選択します。 [Memory RSS](使用メモリ (RSS)) は、Kubernetes 1.8 以降でのみサポートされています。 それ以外では、Min % の値が、未定義または表示できない値を示す数値データ型である、NaN % として示されます。

Container nodes performance view

メモリ ワーキング セットは、含まれている常駐メモリと仮想メモリ (キャッシュ) の両方を示し、アプリケーションが使用している合計になります。 メモリ RSS は、メイン メモリ (つまり常駐メモリ) だけを示します。 このメトリックは、使用可能なメモリの実際の容量を示します。 常駐メモリと仮想メモリにはどのような違いがあるのでしょうか。

  • 常駐メモリまたはメイン メモリは、クラスターのノードで使用可能なコンピューターのメモリの実際の容量です。

  • 仮想メモリは、メモリ不足時にメモリからディスクにデータをスワップするためにオペレーティング システムによって使用される予約済みハードディスク領域 (キャッシュ) であり、必要に応じてメモリにフェッチされます。

既定では、パフォーマンス データは、過去 6 時間のものですが、左上にある [時間範囲] オプションを使用して時間枠を変更できます。 パーセンタイル セレクターで [最小][平均][50][90][95][最大] を選択して、時間範囲内の結果をフィルター処理することもできます。

Percentile selection for data filtering

[傾向] 列の棒グラフ上にポインターを置くと、選択したメトリックに応じて、15 分のサンプル期間内の CPU またはメモリ使用率が各棒に表示されます。 キーボードからトレンド グラフを選択した後は、Alt + PageUp キーまたは Alt + PageDown キーを使用すると、それぞれの棒に個別に移動します。 棒の上にポインターを移動した場合と同じ詳細が表示されます。

Trend bar chart hover-over example

次の例では、一覧の先頭にあるノード aks-nodepool1- は、 [コンテナー] の値が 9 です。 この値はデプロイされているコンテナーの合計数のロールアップです。

Rollup of containers-per-node example

この情報は、実際のクラスター内にあるノード間のコンテナーのバランスが適切かどうかをすばやく識別するのに役立ちます。

次の表では、 [ノード] タブを表示した場合に示される情報について説明します。

説明
名前 ホストの名前。
Status ノードの状態の Kubernetes ビュー。
Min % ((%) 最小)、Avg % ((%) 平均)、50th % ((%) 50)、90th % ((%) 90)、95th % ((%) 95)、Max % ((%) 最大) 選択した期間中の、パーセンタイルに基づいたノードの平均率。
最小、平均、50、90、95、最大 選択した期間中の、パーセンタイルに基づいたノードの実際の平均値。 平均値は、ノードに設定されている CPU とメモリの制限から測定されます。 ポッドとコンテナーの場合は、ホストによってレポートされた平均値です。
Containers コンテナーの数。
Uptime ノードが起動または再起動されてから経過した時間を示します。
コントローラー コンテナーとポッド限定。 どのコントローラーに存在しているかが示されます。 コントローラーにないポッドもあるため、一部は N/A と表示される可能性があります。
Trend Min % (傾向 (%) 最小)、Avg % (傾向 (%) 平均)、50th % (傾向 (%) 50)、90th % (傾向 (%) 90)、95th % (傾向 (%) 95)、Max % (傾向 (%) 最大) 棒グラフの傾向は、コントローラーの平均パーセンタイル メトリック率を表しています。

[他のプロセス] という名前のノードを展開した後、ワークロードに気付くこともあります。 これはノード上で実行されるコンテナー化されていないプロセスを表し、次のものが含まれます。

  • 自己管理型またはマネージド Kubernetes のコンテナー化されていないプロセス

  • コンテナーの実行時プロセス

  • kubelet

  • ノードで実行されているシステム プロセス

  • ノード ハードウェアまたは VM 上で実行されている Kubernetes 以外の他のワークロード

次の方法で計算されます。cAdvisor からの使用量 - コンテナー化されたプロセスからの合計使用量

セレクターで、 [コントローラー] を選択します。

Select Controllers view

ここでは、ご使用のコントローラー、およびコントローラーに接続されていない Container Instances 仮想ノード コントローラーまたは仮想ノード ポッドのパフォーマンスの正常性を確認できます。

<Name> controllers performance view

行階層はコントローラーから始まります。 コントローラーを展開すると、1 つまたは複数のポッドが表示されます。 ポッドを展開すると、ポッドにグループ化されているコンテナーが最後の行に表示されます。 展開されたコントローラーからは、それが実行されているノードにドリルダウンして、そのノードでフィルター処理されたパフォーマンス データを見ることができます。 コントローラーに接続されていない Container Instances ポッドは一覧の最後に表示されます。

Example Controllers hierarchy with Container Instances pods listed

特定のコントローラーの [ノード] 列の値を選択します。

Example drill-down from controller to node in the performance view

次の表では、コントローラーを表示した場合に示される情報について説明します。

説明
名前 コントローラーの名前。
Status [OK][終了][失敗][停止][一時停止] など、実行完了後のコンテナーのロールアップ状態。 コンテナーが実行されているのに状態が正しく表示されない、またはエージェントによって状態が認識されず、30 分を超えても応答しない場合は、 [不明] 状態になります。 状態アイコンのその他の詳細については、次の表を参照してください。
Min % ((%) 最小)、Avg % ((%) 平均)、50th % ((%) 50)、90th % ((%) 90)、95th % ((%) 95)、Max % ((%) 最大) 各エンティティの選択されたメトリックとパーセンタイルの平均率のロールアップ平均。
最小、平均、50、90、95、最大 選択されたパーセンタイルのコンテナーの平均 CPU ミリコアまたはメモリ パフォーマンスのロールアップ。 平均値は、ポッドに設定されている CPU/メモリ制限から測定されます。
Containers コントローラーまたはポッドのコンテナーの合計数。
Restarts コンテナーの再起動数のロールアップ。
Uptime コンテナーが起動されてからの経過時間を表します。
Node コンテナーとポッド限定。 どのコントローラーに存在しているかが示されます。
Trend Min % (傾向 (%) 最小)、Avg % (傾向 (%) 平均)、50th % (傾向 (%) 50)、90th % (傾向 (%) 90)、95th % (傾向 (%) 95)、Max % (傾向 (%) 最大) 棒グラフの傾向は、コントローラーの平均パーセンタイル メトリックを表しています。

状態フィールドのアイコンは、コンテナーのオンライン状態を示します。

アイコン Status
Ready running status icon 実行中 (準備完了)
Waiting or Paused status icon 待機中または一時停止
Last reported running status icon 最後にレポートされた実行中。ただし、30 分を超えても応答しない
Successful status icon 正常に停止したか、停止に失敗した

状態アイコンには、ポッドでの指定内容に基づいた数が示されます。 最も良くない 2 つの状態を示し、状態の上にマウス ポインターを移動すると、コンテナー内のすべてのポッドのロールアップ状態を示します。 準備完了の状態がない場合、状態の値は (0) と表示されます。

セレクターで、 [コンテナー] を選択します。

Select Containers view

ここでは、Azure Kubernetes および Azure Container Instances コンテナーのパフォーマンスの正常性を確認できます。

<Name> containers performance view

コンテナーからは、ポッドまたはノードにドリルダウンして、そのオブジェクトでフィルター処理されたパフォーマンス データを見ることができます。 特定のコンテナーの [ポッド] または [ノード] 列の値を選択します。

Example drill-down from node to containers in the performance view

次の表では、コンテナーを表示した場合に示される情報について説明します。

説明
名前 コントローラーの名前。
Status 存在する場合、コンテナーの状態です。 状態アイコンのその他の詳細については、次の表を参照してください。
Min % ((%) 最小)、Avg % ((%) 平均)、50th % ((%) 50)、90th % ((%) 90)、95th % ((%) 95)、Max % ((%) 最大) 各エンティティの選択されたメトリックとパーセンタイルの平均率のロールアップ。
最小、平均、50、90、95、最大 選択されたパーセンタイルのコンテナーの平均 CPU ミリコアまたはメモリ パフォーマンスのロールアップ。 平均値は、ポッドに設定されている CPU/メモリ制限から測定されます。
Pod ポッドが存在するコンテナーです。
Node  コンテナーが存在するノードです。
Restarts コンテナーが起動されてからの経過時間を表します。
Uptime コンテナーが起動または再起動されてからの経過時間を表します。
Trend Min % (傾向 (%) 最小)、Avg % (傾向 (%) 平均)、50th % (傾向 (%) 50)、90th % (傾向 (%) 90)、95th % (傾向 (%) 95)、Max % (傾向 (%) 最大) 棒グラフの傾向は、コンテナーの平均パーセンタイル メトリック率を表しています。

状態フィールドのアイコンは、次の表の説明のとおり、ポッドのオンライン状態を示します。

アイコン Status
Ready running status icon 実行中 (準備完了)
Waiting or Paused status icon 待機中または一時停止
Last reported running status icon 最後に報告された実行中。ただし、30 分を超えても応答しない
Terminated status icon 正常に停止したか、停止に失敗した
Failed status icon 失敗の状態

ネットワーク構成の監視と視覚化

Azure ネットワーク ポリシー マネージャーには、お客様のネットワーク構成を監視して理解を深めることができる有益な Prometheus メトリックが含まれています。 Azure portal または Grafana Labs に組み込まれている視覚化を提供します。 詳細については、「Azure NPM を使用したネットワーク構成の監視と視覚化」を参照してください。

Workbooks

Workbooks では、テキスト、ログ クエリ、メトリック、パラメーターが、クラスターのパフォーマンスを分析できる内容豊富な対話型レポートに組み合わされます。 Container insights で使用できるブックの説明については、「Container insights のブック」を参照してください。

次のステップ