11.2. 仮想リソースの Prometheus クエリー
Red Hat OpenShift Service on AWS モニタリングダッシュボードを使用して、仮想化メトリクスをクエリーします。OpenShift Virtualization は、ネットワーク、ストレージ、ゲストメモリースワッピングなどのクラスターインフラストラクチャーリソースの消費を監視するために使用できるメトリクスを提供します。メトリクスを使用して、ライブマイグレーションのステータスを照会することもできます。
11.2.1. 前提条件
- ゲストメモリースワップクエリーがデータを返すには、仮想ゲストでメモリースワップを有効にする必要があります。
11.2.2. メトリクスのクエリー
Red Hat OpenShift Service on AWS モニタリングダッシュボードを使用すると、Prometheus Query Language (PromQL) クエリーを実行して、プロット上に視覚化されたメトリクスを調べることができます。この機能により、クラスターの状態と、モニターしているユーザー定義のワークロードに関する情報が提供されます。
dedicated-admin
として、ユーザー定義プロジェクトに関するメトリクスに対して、一度に 1 つ以上の namespace をクエリーできます。
開発者として、メトリクスのクエリー時にプロジェクト名を指定する必要があります。選択したプロジェクトのメトリクスを表示するには、必要な権限が必要です。
11.2.2.1. クラスター管理者としてのすべてのプロジェクトのメトリクスのクエリー
dedicated-admin
またはすべてのプロジェクトの表示パーミッションを持つユーザーとして、メトリクス UI ですべてのデフォルト Red Hat OpenShift Service on AWS およびユーザー定義プロジェクトのメトリクスにアクセスできます。
専任の管理者のみが、Red Hat OpenShift Service on AWS モニタリングで提供されるサードパーティーの UI にアクセスできます。
メトリクス UI には、すべてのプロジェクトの CPU、メモリー、帯域幅、ネットワークパケットなどの定義済みクエリーが含まれています。カスタムの Prometheus クエリー言語 (PromQL) クエリーを実行することもできます。
前提条件
-
dedicated-admin
ロールまたはすべてのプロジェクトの表示パーミッションを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
- Red Hat OpenShift Service on AWS Web コンソールの Administrator パースペクティブで、Observe をクリックし、Metrics タブに移動します。
1 つ以上のクエリーを追加するために、次のいずれかの操作を実行します。
オプション 説明 既存のクエリーを選択する
Select query ドロップダウンリストから、既存のクエリーを選択します。
カスタムクエリーを作成する
Prometheus Query Language (PromQL) クエリーを Expression フィールドに追加します。
PromQL 式を入力すると、オートコンプリートの提案がドロップダウンリストに表示されます。これらの提案には、関数、メトリクス、ラベル、および時間トークンが含まれます。キーボードの矢印を使用して、提案された項目の中から 1 つを選択し、Enter キーを押して、その項目を式に追加します。提案された項目の上にマウスポインターを移動すると、その項目の簡単な説明が表示されます。
複数のクエリーを追加する
Add query をクリックします。
既存のクエリーを複製する
クエリーの横にあるオプションメニュー をクリックし、Duplicate query を選択します。
クエリーの実行を無効する
クエリーの横にあるオプションメニュー をクリックし、Disable query を選択します。
作成したクエリーを実行するために、Run queries をクリックします。クエリーからのメトリクスはプロットで可視化されます。クエリーが無効な場合は、UI にエラーメッセージが表示されます。
注記- 時系列グラフを描画する場合、大量のデータを操作するクエリーにより、タイムアウトが発生したり、ブラウザーに過負荷がかかったりする可能性があります。これを回避するには、Hide graph をクリックし、メトリクステーブルのみを使用してクエリーを調整してください。次に、使用できるクエリーを確認した後に、グラフを描画できるようにプロットを有効にします。
- デフォルトでは、クエリーテーブルに、すべてのメトリクスとその現在の値をリスト表示する拡張ビューが表示されます。クエリーの拡張ビューを最小化するには、下矢印 (˅) をクリックします。
- オプション: ページ URL には、実行したクエリーが含まれます。このクエリーのセットを再度使用できるようにするには、この URL を保存します。
視覚化されたメトリクスを調べます。最初に、有効な全クエリーの全メトリクスがプロットに表示されます。次のいずれかの操作を実行して、表示するメトリクスを選択します。
オプション 説明 クエリーのすべてのメトリクスを非表示にする
クエリーのオプションメニュー をクリックし、Hide all series をクリックします。
特定のメトリクスを非表示にする
クエリーテーブルに移動し、メトリクス名の近くにある色付きの四角形をクリックします。
プロットを拡大し、時間範囲を変更する
次のいずれかの操作を実行します。
- プロットを水平にクリックし、ドラッグして、時間範囲を視覚的に選択します。
- メニューを使用して時間範囲を選択します。
時間範囲をリセットする
Reset zoom をクリックします。
特定の時点におけるすべてのクエリーの出力を表示する
プロット上の目的のポイントにマウスを移動します。クエリーの出力はポップアップに表示されます。
プロットを非表示にする
Hide graph をクリックします。
11.2.2.2. 開発者が行うユーザー定義プロジェクトのメトリクスのクエリー
ユーザー定義のプロジェクトのメトリクスには、開発者またはプロジェクトの表示権限を持つユーザーとしてアクセスできます。
メトリクス UI には、CPU、メモリー、帯域幅、ネットワークパケットなどの定義済みクエリーが含まれています。これらのクエリーは、選択したプロジェクトに制限されています。プロジェクト用のカスタムの Prometheus クエリー言語 (PromQL) クエリーを実行することもできます。
開発者は Developer パースペクティブのみを使用でき、Administrator パースペクティブは使用できません。開発者は、1 度に 1 つのプロジェクトのメトリクスのみをクエリーできます。開発者は Red Hat OpenShift Service on AWS モニタリングで提供されるサードパーティーの UI にアクセスできません。
前提条件
- 開発者として、またはメトリクスで表示しているプロジェクトの表示権限を持つユーザーとしてクラスターへのアクセスがある。
- ユーザー定義プロジェクトのモニタリングが有効化されている。
- ユーザー定義プロジェクトにサービスをデプロイしている。
-
サービスのモニター方法を定義するために、サービスの
ServiceMonitor
カスタムリソース定義 (CRD) を作成している。
手順
- Red Hat OpenShift Service on AWS Web コンソールの Developer パースペクティブで、Observe をクリックし、Metrics タブに移動します。
- Project: 一覧でメトリクスで表示するプロジェクトを選択します。
1 つ以上のクエリーを追加するために、次のいずれかの操作を実行します。
オプション 説明 既存のクエリーを選択する
Select query ドロップダウンリストから、既存のクエリーを選択します。
カスタムクエリーを作成する
Prometheus Query Language (PromQL) クエリーを Expression フィールドに追加します。
PromQL 式を入力すると、オートコンプリートの提案がドロップダウンリストに表示されます。これらの提案には、関数、メトリクス、ラベル、および時間トークンが含まれます。キーボードの矢印を使用して、提案された項目の中から 1 つを選択し、Enter キーを押して、その項目を式に追加します。提案された項目の上にマウスポインターを移動すると、その項目の簡単な説明が表示されます。
複数のクエリーを追加する
Add query をクリックします。
既存のクエリーを複製する
クエリーの横にあるオプションメニュー をクリックし、Duplicate query を選択します。
クエリーの実行を無効する
クエリーの横にあるオプションメニュー をクリックし、Disable query を選択します。
作成したクエリーを実行するために、Run queries をクリックします。クエリーからのメトリクスはプロットで可視化されます。クエリーが無効な場合は、UI にエラーメッセージが表示されます。
注記- 時系列グラフを描画する場合、大量のデータを操作するクエリーにより、タイムアウトが発生したり、ブラウザーに過負荷がかかったりする可能性があります。これを回避するには、Hide graph をクリックし、メトリクステーブルのみを使用してクエリーを調整してください。次に、使用できるクエリーを確認した後に、グラフを描画できるようにプロットを有効にします。
- デフォルトでは、クエリーテーブルに、すべてのメトリクスとその現在の値をリスト表示する拡張ビューが表示されます。クエリーの拡張ビューを最小化するには、下矢印 (˅) をクリックします。
- オプション: ページ URL には、実行したクエリーが含まれます。このクエリーのセットを再度使用できるようにするには、この URL を保存します。
視覚化されたメトリクスを調べます。最初に、有効な全クエリーの全メトリクスがプロットに表示されます。次のいずれかの操作を実行して、表示するメトリクスを選択します。
オプション 説明 クエリーのすべてのメトリクスを非表示にする
クエリーのオプションメニュー をクリックし、Hide all series をクリックします。
特定のメトリクスを非表示にする
クエリーテーブルに移動し、メトリクス名の近くにある色付きの四角形をクリックします。
プロットを拡大し、時間範囲を変更する
次のいずれかの操作を実行します。
- プロットを水平にクリックし、ドラッグして、時間範囲を視覚的に選択します。
- メニューを使用して時間範囲を選択します。
時間範囲をリセットする
Reset zoom をクリックします。
特定の時点におけるすべてのクエリーの出力を表示する
プロット上の目的のポイントにマウスを移動します。クエリーの出力はポップアップに表示されます。
プロットを非表示にする
Hide graph をクリックします。
11.2.3. 仮想化メトリクス
以下のメトリクスの記述には、Prometheus Query Language (PromQL) クエリーのサンプルが含まれます。これらのメトリクスは API ではなく、バージョン間で変更される可能性があります。仮想化メトリクスの完全なリストは、KubeVirt components metrics を参照してください。
以下の例では、期間を指定する topk
クエリーを使用します。その期間中に仮想マシンが削除された場合でも、クエリーの出力に依然として表示されます。
11.2.3.1. ネットワークメトリクス
以下のクエリーは、ネットワークを飽和状態にしている仮想マシンを特定できます。
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 1
- 1
- このクエリーは、6 分間の任意のタイミングで最大のネットワークトラフィックを送信する上位 3 の仮想マシンを返します。
11.2.3.2. ストレージメトリクス
11.2.3.2.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 1
- 1
- 上記のクエリーは、6 分間の任意のタイミングで最も大きなストレージトラフィックを送信する上位 3 の仮想マシンを返します。
11.2.3.2.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"} 1
- 1
- このクエリーは、ソース仮想マシンから復元された仮想マシンディスクの総数を返します。
kubevirt_vmsnapshot_disks_restored_from_source_bytes{vm_name="simple-vm", vm_namespace="default"} 1
- 1
- このクエリーは、ソース仮想マシンから復元された容量をバイト単位で返します。
11.2.3.2.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 1
- 1
- 上記のクエリーは、6 分間の任意のタイミングで最も大きな I/O 操作を実行している上位 3 の仮想マシンを返します。
11.2.3.3. ゲストメモリーのスワップメトリクス
以下のクエリーにより、メモリースワップを最も多く実行しているスワップ対応ゲストを特定できます。
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 1
- 1
- 上記のクエリーは、6 分間の任意のタイミングでゲストが最も大きなメモリースワップを実行している上位 3 の仮想マシンを返します。
メモリースワップは、仮想マシンがメモリー不足の状態にあることを示します。仮想マシンのメモリー割り当てを増やすと、この問題を軽減できます。
11.2.3.4. ライブマイグレーションのメトリクス
次のメトリクスをクエリーして、ライブマイグレーションのステータスを表示できます。
kubevirt_vmi_migration_data_processed_bytes
- 新しい仮想マシン (VM) に移行されたゲストオペレーティングシステムデータの量。タイプ: ゲージ。
kubevirt_vmi_migration_data_remaining_bytes
- 移行されていないゲストオペレーティングシステムデータの量。タイプ: ゲージ。
kubevirt_vmi_migration_memory_transfer_rate_bytes
- ゲスト OS でメモリーがダーティーになる速度。ダーティメモリーとは、変更されたがまだディスクに書き込まれていないデータです。タイプ: ゲージ。
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
- 失敗した移行の数。タイプ: ゲージ。