次の方法で共有


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

Container Insights を使用して、ワークブック、パフォーマンス チャート、および正常性のステータスを活用し、Azure Kubernetes Service (AKS)、Azure Stack、または他の環境でホストされている Kubernetes クラスターのワークロードを監視します。 この記事は、Azure Monitor を使用して、検出された問題をすばやく評価、調査、解決する方法を理解するのに役立ちます。

ブック

Workbooks では、テキスト、ログ クエリ、メトリック、パラメーターが、クラスターのパフォーマンスを分析するために使用できる内容豊富な対話型レポートに組み合わされます。 Container insights で利用可能なワークブックの説明およびそれらにアクセスする方法については、Container insights のワークブックに関する記事を参照してください。

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

Azure Monitor には、サブスクリプション内のリソース グループに展開されているすべての監視対象 Kubernetes クラスターの正常性状態が表示される複数クラスター ビューが用意されています。 このビューを使用して、すぐにクラスターの正常性を把握することができ、ノードとコントローラーのパフォーマンス ページにドリルダウンしたり、クラスターのパフォーマンス グラフを表示したりできます。 検出され、監視対象外として識別されたクラスターの場合は、ビューから監視を有効にすることができます。

注記

このビューでは、Azure Stack (プレビュー) と Azure 以外 (プレビュー) はサポートされなくなりました。

複数クラスター ビューにアクセスするには、Azure portal の左側のウィンドウで [モニター] を選択します。 [分析情報] セクションで [コンテナー] を選択します。

Azure Monitor の複数クラスター ダッシュボードの例を示すスクリーンショット。

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

  • 重大または異常な状態のクラスターの数と、正常またはレポートしていない (不明状態と呼ばれます) クラスターの数。
  • クラスターごとの、デプロイされているノード、ユーザー ポッド、システム ポッドの数。

含まれる健康状態は次のとおりです。

  • 重大 : 1つまたは複数のクリティカルな問題が検出されており、期待される正常な動作状態に戻すには対処する必要があります。
  • 警告:1 つまたは複数の問題が検出されており、対処する必要があります。対処しないと、正常性状態が重大になる可能性があります。
  • 未承認: ユーザーは、ワークスペースまたはデータ収集ルールのデータを読み取るために必要なアクセス許可を持っていません。
  • 見つかりません: ワークスペース、リソース グループ、またはワークスペースを含むサブスクリプションのいずれかが削除されました。
  • 記録ルールを有効にする: Prometheus 記録ルールを 有効にして、パフォーマンスの高いデータと Prometheus の視覚化のロックを解除します。
  • 正しく構成されていません:問題が発生しました。
  • Error: ワークスペースからデータを読み取るときにエラーが発生しました。
  • データがありません:過去 30 分間にデータがワークスペースにレポートされていません。
  • 不明:サービスがノードまたはポッドに接続できなかった場合、状態は不明に変わります。
  • 正常:VM では問題は検出されておらず、要求されたとおりに機能しています。
  • 保留中: Arc 対応クラスターの監視構成には通常、約 5 分かかります。 クラスターが Azure から切断されている場合、このプロセスが遅れる可能性があります。
  • X 時間待機中: Arc 対応クラスターの監視構成が予想以上に時間を要しています。
  • 失敗: Arc 対応クラスターの監視構成に失敗しました。

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

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

監視対象のクラスター ステータス 可用性
ユーザー ポッド 元気
警告
危うい
不明
100%
90 ~ 99%
<90%
過去 30 分以内に報告していない
システム ポッド 元気
警告
危うい
不明
100%
なし
100%
過去 30 分以内に報告していない
ノード 元気
警告
危うい
不明
>85%
60 - 84%
<60%
過去 30 分以内に報告していない

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

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

Container Insights へのアクセスは、左側のウィンドウで [モニター ] を選択するか、マルチクラスター ビューからクラスターを選択すると、AKS クラスターから直接使用できます。 Insights の詳細については、 Azure Monitor での Managed Prometheus の視覚化に関するページを参照してください。

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

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

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

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

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

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

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

階層内のオブジェクトを展開すると、選択されたオブジェクトに基づいて、プロパティ ウィンドウが更新されます。 ウィンドウから、ウィンドウの上部にある [ライブ イベント] タブを選択して、Kubernetes コンテナー ログ (stdout/stderror)、イベント、およびポッド メトリックを表示することもできます。 このデータを表示するためのアクセス権の付与および管理に必要な構成について詳しくは、ライブ データの設定に関する記事をご覧ください。

クラスター リソースのレビュー中は、コンテナーからこのデータをリアルタイムで確認できます。 この機能の詳細については、「Kubernetes ログ、イベント、およびポッド メトリックをリアルタイムで表示する方法」を参照してください。

事前に定義されたログ検索に基づいてワークスペースに格納されている Kubernetes ログ データを表示するには、[分析で表示する] ドロップダウン リストから [コンテナー ログの表示] を選択します。 詳細については、「Container insights のログのクエリを実行する方法」を参照してください。

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

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

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

パフォーマンス ビューの Kubernetes ノード階層の例を示すスクリーンショット。

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

Windows Server ノードが一覧表示されているノード階層の例を示すスクリーンショット。

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

Container Instances が一覧表示されているノード階層の例を示すスクリーンショット。

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

パフォーマンス ビューでノードからコントローラーにドリルダウンする様子を示すスクリーンショット。

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

コンテナー ノード パフォーマンス ビューを示すスクリーンショット。

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

  • 常駐メモリまたはメイン メモリは、クラスターのノードで使用可能なコンピューターのメモリの実際の容量です。
  • 仮想メモリは、メモリ不足時にオペレーティング システムがメモリからディスクにデータをスワップするために使用する予約済みハードディスク領域(キャッシュ)であり、必要に応じて再びメモリに取り込まれます。

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

データのフィルターのパーセンタイル選択を示すスクリーンショット。

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

トレンドバーチャートのホバーオーバーの例を示すスクリーンショット。

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

ノードあたりのコンテナーのロールアップの例を示すスクリーンショット。

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

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

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

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

  • 自己管理型もしくはマネージドのKubernetesにおける、コンテナ化されていないプロセス。
  • コンテナーの実行時プロセス。
  • Kubelet。
  • ノードで実行されているシステム プロセス。
  • ノード ハードウェアまたは VM 上で実行されている Kubernetes 以外の他のワークロード。

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

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

コントローラーの選択を示すスクリーンショット。

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

\<名前> コントローラーのパフォーマンス ビューを示すスクリーンショット。

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

Container Instances ポッドが一覧表示されている [コントローラー] 階層の例を示すスクリーンショット。

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

パフォーマンス ビューでのコントローラーからノードへのドリルダウンの例を示すスクリーンショット

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

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

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

アイコン ステータス
実行中 (準備完了) 状態アイコン。 ランニング
待機中または一時停止状態アイコン。 待機中または一時停止
最後に報告された実行中の状態アイコン。 最後にレポートされた実行中。ただし、30 分を超えても応答しない
成功ステータスアイコン。 正常に停止したか、停止に失敗した

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

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

コンテナーの選択を示すスクリーンショット。

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

\<名前> コンテナーのパフォーマンス ビューを示すスクリーンショット。

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

パフォーマンス ビューでのノードからコンテナーへのドリルダウンの例を示すスクリーンショット

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

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

その他のプロセス

[ノード] ビューの [その他のプロセス] エントリは、ノードのリソース使用率が高い根本原因を明確に理解するために役立ちます。 この情報は、コンテナー化されたプロセスとコンテナー化されていないプロセスの使用を区別するのに役立ちます。 これらは、ノードで実行されるコンテナー化されていないプロセスであり、次のものが含まれます。

  • 自己管理型 Kubernetes またはマネージド Kubernetes のコンテナー化されていないプロセス。
  • コンテナーの実行時プロセス。
  • Kubelet。
  • ノードで実行されているシステム プロセス。
  • ノード ハードウェアまたは VM 上で実行されている Kubernetes 以外の他のワークロード。

その他のプロセスの値は Total usage from CAdvisor - Usage from containerized process です。

ステータス

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

アイコン ステータス
実行中 (準備完了) 状態アイコン。
待機中または一時停止状態アイコン。 待機中または一時停止
最後に報告された実行中の状態アイコン。 最後に報告された実行中。ただし、30 分を超えても応答しない
終了した状態のアイコン。 正常に停止したか、停止に失敗した
失敗状態アイコン。 失敗の状態

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

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

次のステップ