13.2. 仮想リソースの Prometheus クエリー
Red Hat OpenShift Service on AWS モニタリングダッシュボードを使用して、仮想化メトリクスをクエリーします。OpenShift Virtualization は、ネットワーク、ストレージ、ゲストメモリースワッピングなどのクラスターインフラストラクチャーリソースの消費を監視するために使用できるメトリクスを提供します。メトリクスを使用して、ライブマイグレーションのステータスを照会することもできます。
13.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- ゲストメモリースワップクエリーがデータを返すには、仮想ゲストでメモリースワップを有効にする必要があります。
13.2.2. Red Hat OpenShift Service on AWS Web コンソールを使用してすべてのプロジェクトのメトリクスを取得する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS メトリクスクエリーブラウザーを使用して Prometheus Query Language (PromQL) でクエリーを実行し、グラフでメトリクスを可視化して検証できます。この機能により、クラスターの状態と、モニターしているユーザー定義のワークロードに関する情報が提供されます。
クラスター管理者またはすべてのプロジェクトの表示権限を持つユーザーは、メトリクス UI で Red Hat OpenShift Service on AWS とユーザー定義プロジェクトのメトリクスにアクセスできます。
メトリクス UI には、すべてのプロジェクトの CPU、メモリー、帯域幅、ネットワークパケットなどの定義済みクエリーが含まれています。カスタムの Prometheus Query Language (PromQL) クエリーを実行することもできます。
前提条件
-
cluster-admin
クラスターロールまたはすべてのプロジェクトの表示権限を持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
-
Red Hat OpenShift Service on AWS 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 をクリックします。
13.2.3. Red Hat OpenShift Service on AWS Web コンソールを使用してユーザー定義プロジェクトのメトリクスを取得する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS メトリクスクエリーブラウザーを使用して Prometheus Query Language (PromQL) でクエリーを実行し、グラフでメトリクスを可視化して検証できます。この機能により、モニタリングしているユーザー定義ワークロードに関する情報が提供されます。
開発者として、メトリクスのクエリー時にプロジェクト名を指定する必要があります。選択したプロジェクトのメトリクスを表示するには、必要な権限が必要です。
メトリクス UI には、CPU、メモリー、帯域幅、ネットワークパケットなどの定義済みクエリーが含まれています。これらのクエリーは、選択したプロジェクトに制限されています。プロジェクト用のカスタムの Prometheus クエリー言語 (PromQL) クエリーを実行することもできます。
前提条件
- 開発者として、またはメトリクスで表示しているプロジェクトの表示権限を持つユーザーとしてクラスターへのアクセスがある。
- ユーザー定義プロジェクトのモニタリングが有効化されている。
- ユーザー定義プロジェクトにサービスをデプロイしている。
-
サービスのモニター方法を定義するために、サービスの
ServiceMonitor
カスタムリソース定義 (CRD) を作成している。
手順
-
Red Hat OpenShift Service on AWS 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 をクリックします。
13.2.4. 仮想化メトリクス リンクのコピーリンクがクリップボードにコピーされました!
以下のメトリクスの記述には、Prometheus Query Language (PromQL) クエリーのサンプルが含まれます。これらのメトリクスは API ではなく、バージョン間で変更される可能性があります。仮想化メトリクスの完全なリストは、KubeVirt components metrics を参照してください。
以下の例では、期間を指定する topk
クエリーを使用します。その期間中に仮想マシンが削除された場合でも、クエリーの出力に依然として表示されます。
13.2.4.1. 仮想 CPU メトリクス リンクのコピーリンクがクリップボードにコピーされました!
以下のクエリーは、入出力 I/O) を待機している仮想マシンを特定します。
kubevirt_vmi_vcpu_wait_seconds_total
- 仮想マシンの仮想 CPU の I/O の待機時間 (秒単位) を返します。タイプ: カウンター。
'0' より大きい値は、仮想 CPU は実行する用意ができているが、ホストスケジューラーがこれをまだ実行できないことを意味します。実行できない場合には I/O に問題があることを示しています。
仮想 CPU メトリクスをクエリーするには、最初に schedstats=enable
カーネル引数を MachineConfig
オブジェクトに適用する必要があります。このカーネル引数を使用すると、デバッグとパフォーマンスチューニングに使用されるスケジューラーの統計が有効になり、スケジューラーに小規模な負荷を追加できます。
仮想 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 の仮想マシンを返します。
13.2.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 の仮想マシンを返します。
13.2.4.3. ストレージメトリクス リンクのコピーリンクがクリップボードにコピーされました!
13.2.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 の仮想マシンを返します。
13.2.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
- このクエリーは、ソース仮想マシンから復元された容量をバイト単位で返します。
13.2.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 の仮想マシンを返します。
13.2.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 の仮想マシンを返します。
メモリースワップは、仮想マシンがメモリー不足の状態にあることを示します。仮想マシンのメモリー割り当てを増やすと、この問題を軽減できます。
13.2.4.5. ライブマイグレーションのメトリクス リンクのコピーリンクがクリップボードにコピーされました!
次のメトリクスをクエリーして、ライブマイグレーションのステータスを表示できます。
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
- 失敗した移行の数。タイプ: ゲージ。