15.3. 仮想リソースの Prometheus クエリー
OpenShift Virtualization は、仮想 CPU、ネットワーク、ストレージ、ゲストメモリースワッピングなどのクラスターインフラストラクチャーリソースの消費を監視するために使用できるメトリクスを提供します。メトリクスを使用して、ライブマイグレーションのステータスを照会することもできます。
15.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 
							仮想 CPU メトリクスを使用するには、
schedstats=enableカーネル引数をMachineConfigオブジェクトに適用する必要があります。このカーネル引数を使用すると、デバッグとパフォーマンスチューニングに使用されるスケジューラーの統計が有効になり、スケジューラーに小規模な負荷を追加できます。詳細は、ノードへのカーネル引数の追加 を参照してください。 - ゲストメモリースワップクエリーがデータを返すには、仮想ゲストでメモリースワップを有効にする必要があります。
 
15.3.2. OpenShift Container Platform Web コンソールを使用してすべてのプロジェクトのメトリクスをクエリーする リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform メトリクスクエリーブラウザーを使用して Prometheus Query Language (PromQL) クエリーを実行し、プロットに可視化されるメトリクスを検査できます。この機能により、クラスターの状態と、モニターしているユーザー定義のワークロードに関する情報が提供されます。
クラスター管理者またはすべてのプロジェクトの表示権限を持つユーザーとして、メトリクス UI ですべてのデフォルト OpenShift Container Platform およびユーザー定義プロジェクトのメトリクスにアクセスできます。
メトリクス UI には、すべてのプロジェクトの CPU、メモリー、帯域幅、ネットワークパケットなどの定義済みクエリーが含まれています。カスタムの Prometheus Query Language (PromQL) クエリーを実行することもできます。
前提条件
- 
							
cluster-adminクラスターロールまたはすべてのプロジェクトの表示権限を持つユーザーとしてクラスターにアクセスできる。 - 
							OpenShift CLI (
oc) がインストールされている。 
手順
- 
							OpenShift Container Platform Web コンソールで、Observe 
Metrics をクリックします。  1 つ以上のクエリーを追加するために、次のいずれかの操作を実行します。
Expand オプション 説明 既存のクエリーを選択する
Select query ドロップダウンリストから、既存のクエリーを選択します。
カスタムクエリーを作成する
Prometheus Query Language (PromQL) クエリーを Expression フィールドに追加します。
PromQL 式を入力すると、オートコンプリートの提案がドロップダウンリストに表示されます。これらの提案には、関数、メトリクス、ラベル、および時間トークンが含まれます。キーボードの矢印を使用して、提案された項目の中から 1 つを選択し、Enter キーを押して、その項目を式に追加します。提案された項目の上にマウスポインターを移動すると、その項目の簡単な説明が表示されます。
複数のクエリーを追加する
Add query をクリックします。
既存のクエリーを複製する
クエリーの横にあるオプションメニュー
											 をクリックし、Duplicate query を選択します。
										クエリーの実行を無効する
クエリーの横にあるオプションメニュー
											 をクリックし、Disable query を選択します。
										作成したクエリーを実行するために、Run queries をクリックします。クエリーからのメトリクスはプロットで可視化されます。クエリーが無効な場合は、UI にエラーメッセージが表示されます。
注記- 時系列グラフを描画する場合、大量のデータを操作するクエリーにより、タイムアウトが発生したり、ブラウザーに過負荷がかかったりする可能性があります。これを回避するには、Hide graph をクリックし、メトリクステーブルのみを使用してクエリーを調整してください。次に、使用できるクエリーを確認した後に、グラフを描画できるようにプロットを有効にします。
 - デフォルトでは、クエリーテーブルに、すべてのメトリクスとその現在の値をリスト表示する拡張ビューが表示されます。クエリーの拡張ビューを最小化するには、下矢印 (˅) をクリックします。
 
- オプション: このクエリーのセットを今後再度使用するには、ページの URL を保存します。
 視覚化されたメトリクスを調べます。最初に、有効な全クエリーの全メトリクスがプロットに表示されます。次のいずれかの操作を実行して、表示するメトリクスを選択します。
Expand オプション 説明 クエリーのすべてのメトリクスを非表示にする
クエリーのオプションメニュー
											 をクリックし、Hide all series をクリックします。
										特定のメトリクスを非表示にする
クエリーテーブルに移動し、メトリクス名の近くにある色付きの四角形をクリックします。
プロットを拡大し、時間範囲を変更する
次のいずれかの操作を実行します。
- プロットを水平にクリックし、ドラッグして、時間範囲を視覚的に選択します。
 - メニューを使用して時間範囲を選択します。
 
時間範囲をリセットする
Reset zoom をクリックします。
特定の時点におけるすべてのクエリーの出力を表示する
プロット上の目的のポイントにマウスを移動します。クエリーの出力がポップアップボックスに表示されます。
プロットを非表示にする
Hide graph をクリックします。
15.3.3. OpenShift Container Platform Web コンソールを使用してユーザー定義プロジェクトのメトリクスをクエリーする リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform メトリクスクエリーブラウザーを使用して Prometheus Query Language (PromQL) クエリーを実行し、プロットに可視化されるメトリクスを検査できます。この機能により、モニタリングしているユーザー定義ワークロードに関する情報が提供されます。
開発者として、メトリクスのクエリー時にプロジェクト名を指定する必要があります。選択したプロジェクトのメトリクスを表示するには、必要な権限が必要です。
メトリクス UI には、CPU、メモリー、帯域幅、ネットワークパケットなどの定義済みクエリーが含まれています。これらのクエリーは、選択したプロジェクトに制限されています。プロジェクト用のカスタムの Prometheus クエリー言語 (PromQL) クエリーを実行することもできます。
前提条件
- 開発者として、またはメトリクスで表示しているプロジェクトの表示権限を持つユーザーとしてクラスターへのアクセスがある。
 - ユーザー定義プロジェクトのモニタリングが有効化されている。
 - ユーザー定義プロジェクトにサービスをデプロイしている。
 - 
							サービスのモニター方法を定義するために、サービスの 
ServiceMonitorカスタムリソース定義 (CRD) を作成している。 
手順
- 
							OpenShift Container Platform Web コンソールで、Observe 
Metrics をクリックします。  1 つ以上のクエリーを追加するために、次のいずれかの操作を実行します。
Expand オプション 説明 既存のクエリーを選択する
Select query ドロップダウンリストから、既存のクエリーを選択します。
カスタムクエリーを作成する
Prometheus Query Language (PromQL) クエリーを Expression フィールドに追加します。
PromQL 式を入力すると、オートコンプリートの提案がドロップダウンリストに表示されます。これらの提案には、関数、メトリクス、ラベル、および時間トークンが含まれます。キーボードの矢印を使用して、提案された項目の中から 1 つを選択し、Enter キーを押して、その項目を式に追加します。提案された項目の上にマウスポインターを移動すると、その項目の簡単な説明が表示されます。
複数のクエリーを追加する
Add query をクリックします。
既存のクエリーを複製する
クエリーの横にあるオプションメニュー
											 をクリックし、Duplicate query を選択します。
										クエリーの実行を無効する
クエリーの横にあるオプションメニュー
											 をクリックし、Disable query を選択します。
										作成したクエリーを実行するために、Run queries をクリックします。クエリーからのメトリクスはプロットで可視化されます。クエリーが無効な場合は、UI にエラーメッセージが表示されます。
注記- 時系列グラフを描画する場合、大量のデータを操作するクエリーにより、タイムアウトが発生したり、ブラウザーに過負荷がかかったりする可能性があります。これを回避するには、Hide graph をクリックし、メトリクステーブルのみを使用してクエリーを調整してください。次に、使用できるクエリーを確認した後に、グラフを描画できるようにプロットを有効にします。
 - デフォルトでは、クエリーテーブルに、すべてのメトリクスとその現在の値をリスト表示する拡張ビューが表示されます。クエリーの拡張ビューを最小化するには、下矢印 (˅) をクリックします。
 
- オプション: このクエリーのセットを今後再度使用するには、ページの URL を保存します。
 視覚化されたメトリクスを調べます。最初に、有効な全クエリーの全メトリクスがプロットに表示されます。次のいずれかの操作を実行して、表示するメトリクスを選択します。
Expand オプション 説明 クエリーのすべてのメトリクスを非表示にする
クエリーのオプションメニュー
											 をクリックし、Hide all series をクリックします。
										特定のメトリクスを非表示にする
クエリーテーブルに移動し、メトリクス名の近くにある色付きの四角形をクリックします。
プロットを拡大し、時間範囲を変更する
次のいずれかの操作を実行します。
- プロットを水平にクリックし、ドラッグして、時間範囲を視覚的に選択します。
 - メニューを使用して時間範囲を選択します。
 
時間範囲をリセットする
Reset zoom をクリックします。
特定の時点におけるすべてのクエリーの出力を表示する
プロット上の目的のポイントにマウスを移動します。クエリーの出力がポップアップボックスに表示されます。
プロットを非表示にする
Hide graph をクリックします。
// // * virt/support/virt-prometheus-queries.adoc
 //
// * virt/support/virt-prometheus-queries.adoc
15.3.4. 仮想化メトリクス リンクのコピーリンクがクリップボードにコピーされました!
以下のメトリクスの記述には、Prometheus Query Language (PromQL) クエリーのサンプルが含まれます。これらのメトリクスは API ではなく、バージョン間で変更される可能性があります。仮想化メトリクスの完全なリストは、KubeVirt components metrics を参照してください。
						以下の例では、期間を指定する topk クエリーを使用します。その期間中に仮想マシン (VM) が削除された場合でも、クエリーの出力に依然として表示されます。
					
15.3.4.1. 仮想 CPU メトリクス リンクのコピーリンクがクリップボードにコピーされました!
以下のクエリーは、入出力 I/O) を待機している仮想マシンを特定します。
kubevirt_vmi_vcpu_wait_seconds_total- 仮想マシンの仮想 CPU の I/O の待機時間 (秒単位) を返します。タイプ: カウンター。
 
'0' より大きい値は、仮想 CPU は実行する用意ができているが、ホストスケジューラーがこれをまだ実行できないことを意味します。実行できない場合には I/O に問題があることを示しています。
							仮想 CPU メトリクスをクエリーするには、最初に schedstats=enable カーネル引数を MachineConfig オブジェクトに適用する必要があります。このカーネル引数を使用すると、デバッグとパフォーマンスチューニングに使用されるスケジューラーの統計が有効になり、スケジューラーに小規模な負荷を追加できます。
						
kubevirt_vmi_vcpu_delay_seconds_total- 仮想 CPU がホストスケジューラーによってキューに入れられたが、すぐに実行できなかった累積時間 (秒単位) を返します。この遅延は、仮想マシンには スチールタイム と表示されます。これは、ホストが他のワークロードを実行している間に失われた CPU 時間です。スチールタイムは、パフォーマンスに影響を与える可能性があり、多くの場合、ホスト上の CPU のオーバーコミットメントまたは競合を示します。タイプ: カウンター。
 
仮想 CPU 遅延クエリーの例
irate(kubevirt_vmi_vcpu_delay_seconds_total[5m]) > 0.05
irate(kubevirt_vmi_vcpu_delay_seconds_total[5m]) > 0.05 
- 1
 - このクエリーは、5 分間の 1 秒あたりの平均遅延を返します。値が高い場合は、ノード上で CPU のオーバーコミットまたは競合が発生している可能性があります。
 
仮想 CPU 待機時間クエリーの例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_vcpu_wait_seconds_total[6m]))) > 0
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_vcpu_wait_seconds_total[6m]))) > 0 
- 1
 - このクエリーは、6 分間の任意の全タイミングで I/O を待機する上位 3 の仮想マシンを返します。
 
15.3.4.2. ネットワークメトリクス リンクのコピーリンクがクリップボードにコピーされました!
以下のクエリーは、ネットワークを飽和状態にしている仮想マシンを特定できます。
kubevirt_vmi_network_receive_bytes_total- 仮想マシンのネットワークで受信したトラフィックの合計量 (バイト単位) を返します。タイプ: カウンター。
 kubevirt_vmi_network_transmit_bytes_total- 仮想マシンのネットワーク上で送信されるトラフィックの合計量 (バイト単位) を返します。タイプ: カウンター。
 
ネットワークトラフィッククエリーの例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_network_receive_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_network_transmit_bytes_total[6m]))) > 0
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_network_receive_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_network_transmit_bytes_total[6m]))) > 0 
- 1
 - このクエリーは、6 分間の任意のタイミングで最大のネットワークトラフィックを送信する上位 3 の仮想マシンを返します。
 
15.3.4.3. ストレージメトリクス リンクのコピーリンクがクリップボードにコピーされました!
15.3.4.3.1. ストレージ関連のトラフィック リンクのコピーリンクがクリップボードにコピーされました!
以下のクエリーは、大量のデータを書き込んでいる仮想マシンを特定できます。
kubevirt_vmi_storage_read_traffic_bytes_total- 仮想マシンのストレージ関連トラフィックの合計量 (バイト単位) を返します。タイプ: カウンター。
 kubevirt_vmi_storage_write_traffic_bytes_total- 仮想マシンのストレージ関連トラフィックのストレージ書き込みの合計量 (バイト単位) を返します。タイプ: カウンター。
 
ストレージ関連のトラフィッククエリーの例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_read_traffic_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_storage_write_traffic_bytes_total[6m]))) > 0
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_read_traffic_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_storage_write_traffic_bytes_total[6m]))) > 0 
- 1
 - 上記のクエリーは、6 分間の任意のタイミングで最も大きなストレージトラフィックを送信する上位 3 の仮想マシンを返します。
 
15.3.4.3.2. ストレージスナップショットデータ リンクのコピーリンクがクリップボードにコピーされました!
kubevirt_vmsnapshot_disks_restored_from_source- ソース仮想マシンから復元された仮想マシンディスクの総数を返します。タイプ: ゲージ。
 kubevirt_vmsnapshot_disks_restored_from_source_bytes- ソース仮想マシンから復元された容量をバイト単位で返します。タイプ: ゲージ。
 
ストレージスナップショットデータクエリーの例
kubevirt_vmsnapshot_disks_restored_from_source{vm_name="simple-vm", vm_namespace="default"} 
kubevirt_vmsnapshot_disks_restored_from_source{vm_name="simple-vm", vm_namespace="default"} 
- 1
 - このクエリーは、ソース仮想マシンから復元された仮想マシンディスクの総数を返します。
 
kubevirt_vmsnapshot_disks_restored_from_source_bytes{vm_name="simple-vm", vm_namespace="default"} 
kubevirt_vmsnapshot_disks_restored_from_source_bytes{vm_name="simple-vm", vm_namespace="default"} 
- 1
 - このクエリーは、ソース仮想マシンから復元された容量をバイト単位で返します。
 
15.3.4.3.3. I/O パフォーマンス リンクのコピーリンクがクリップボードにコピーされました!
以下のクエリーで、ストレージデバイスの I/O パフォーマンスを判別できます。
kubevirt_vmi_storage_iops_read_total- 仮想マシンが実行している 1 秒あたりの書き込み I/O 操作の量を返します。タイプ: カウンター。
 kubevirt_vmi_storage_iops_write_total- 仮想マシンが実行している 1 秒あたりの読み取り I/O 操作の量を返します。タイプ: カウンター。
 
I/O パフォーマンスクエリーの例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_read_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_write_total[6m]))) > 0
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_read_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_write_total[6m]))) > 0 
- 1
 - 上記のクエリーは、6 分間の任意のタイミングで最も大きな I/O 操作を実行している上位 3 の仮想マシンを返します。
 
15.3.4.4. ゲストメモリーのスワップメトリクス リンクのコピーリンクがクリップボードにコピーされました!
以下のクエリーにより、メモリースワップを最も多く実行しているスワップ対応ゲストを特定できます。
kubevirt_vmi_memory_swap_in_traffic_bytes- 仮想ゲストがスワップされているメモリーの合計量 (バイト単位) を返します。タイプ: ゲージ。
 kubevirt_vmi_memory_swap_out_traffic_bytes- 仮想ゲストがスワップアウトされているメモリーの合計量 (バイト単位) を返します。タイプ: ゲージ。
 
メモリースワップクエリーの例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_in_traffic_bytes[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_out_traffic_bytes[6m]))) > 0 +
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_in_traffic_bytes[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_out_traffic_bytes[6m]))) > 0 
+
- 1
 - 上記のクエリーは、6 分間の任意のタイミングでゲストが最も大きなメモリースワップを実行している上位 3 の仮想マシンを返します。
 
メモリースワップは、仮想マシンがメモリー不足の状態にあることを示します。仮想マシンのメモリー割り当てを増やすと、この問題を軽減できます。
15.3.4.5. AAQ Operator メトリクスの監視 リンクのコピーリンクがクリップボードにコピーされました!
リソースクォータを監視するために、Application Aware Quota (AAQ) コントローラーによって次のメトリクスが公開されます。
kube_application_aware_resourcequota- AAQ Operator リソースによって適用されている現在のクォータ使用量と CPU およびメモリーの制限を返します。タイプ: ゲージ。
 kube_application_aware_resourcequota_creation_timestamp- AAQ Operator リソースが作成された時刻を UNIX タイムスタンプ形式で返します。タイプ: ゲージ。
 
15.3.4.6. ライブマイグレーションのメトリクス リンクのコピーリンクがクリップボードにコピーされました!
次のメトリクスをクエリーして、ライブマイグレーションのステータスを表示できます。
kubevirt_vmi_migration_data_processed_bytes- 新しい仮想マシン (VM) に移行されたゲストオペレーティングシステムデータの量。タイプ: ゲージ。
 kubevirt_vmi_migration_data_remaining_bytes- 移行されていないゲストオペレーティングシステムデータの量。タイプ: ゲージ。
 kubevirt_vmi_migration_memory_transfer_rate_bytes- ゲストオペレーティングシステムでメモリーがダーティーになる速度。ダーティメモリーとは、変更されたがまだディスクに書き込まれていないデータです。タイプ: ゲージ。
 kubevirt_vmi_migrations_in_pending_phase- 保留中の移行の数。タイプ: ゲージ。
 kubevirt_vmi_migrations_in_scheduling_phase- スケジュール移行の数。タイプ: ゲージ。
 kubevirt_vmi_migrations_in_running_phase- 実行中の移行の数。タイプ: ゲージ。
 kubevirt_vmi_migration_succeeded- 正常に完了した移行の数。タイプ: ゲージ。
 kubevirt_vmi_migration_failed- 失敗した移行の数。タイプ: ゲージ。