SUSE Linux Microでの仮想ホストメトリックデーモンの設定
- 概要
vhostmd
は、仮想マシンホストからメトリックを収集し、そのホストで実行されている仮想マシンにこれらのメトリックを提供できるツールです。- 目的
この記事では、
vhostmd
をインストールし、メトリックを収集できるように設定する方法について説明します。- 所要時間
この記事の理解には15分ほどを要します。
- 目標
vhostmd
ツールが実行され、メトリックが収集されます。- 要件
SUSE Linux Microの実行中のインスタンス
そのインスタンスで実行されている仮想マシン
1 仮想ホストメトリックデーモン(別名vhostmd
)とは #
vhostmd
は、ホスト環境で実行されるデーモンであり、ホストマシンとゲストマシン間のメトリック通信チャネルを提供します。このデーモンは、ゲストマシンの管理者に、ゲストマシンの問題の分析に役立つ、ホストリソース使用状況に関する限られたデータセットを(通常は読み取り専用モードで)提供します。
vhostdmd
は、定期的にメトリックをディスクに書き込みます。収集されるメトリックは、データの頻度と保存場所とともに、設定可能なパラメータです。
2 vhostmd
の取得 #
デフォルトでは、vhostmd
は提供されるイメージには含まれません。したがって、使用する前にインストールする必要があります。
次のコマンドを実行して、デーモンをインストールします。
>
sudo
transactional-update pkg install vhostmd
システムを再起動して、新しいスナップショットに切り替えます。
次のコマンドを実行して、デーモンを起動します。
>
sudo
vhostmd
OPTIONS次のオプションを使用して、コマンドの動作を変更できます。
-v
— 詳細な出力を行います。--connect URI
—libvirt
デーモンのURIを渡して、デーモンへの接続を確立します。-f FILE_PATH
— 代替の設定ファイルを渡します。設定の詳細については、4項 「vhostmd
の設定」を参照してください。-p PID_FILE
— 代替のPIDファイルを作成します。デフォルトは/var/run/vhostmd.pid
です。-u USERNAME
— 非特権ユーザを使用します。
vhostmd
をsystemd
サービスとして実行することもできます。
>
sudo
systemctl enable --now vhostmd
4項 「vhostmd
の設定」の説明に従って設定の変更を行うたびに、次のようにvhostmd
サービスを再起動します。
>
sudo
systemctl restart vhostmd
3 収集されたメトリックを仮想マシンに提供する #
収集されたメトリックを特定の仮想マシンで表示して、後で使用したり、読み取ったりすることができます。これを実現するには2つの方法があります。virsh
コマンドを使用してメトリックディスクを接続するか、ドメイン設定を調整することができます。
メトリックディスクを読み取り専用モードで接続するには、次のようにvirsh
を実行します。
>
sudo
virsh attach-disk VIRTUAL_MACHINE \
PATH_TO_METRICS_DISC --driver tap \
--subdriver aio --type disk --mode readonly
ドメイン設定を変更するには、次の手順に従います。
次のコマンドを実行します。
>
sudo
virsh edit GUEST_NAME
次のスニペットを追加して、
<devices>
セクションを更新します。<disk type='block' device='disk'> <source dev='/dev/shm/vhostmd0'/> <target dev='hdb' bus='ide'/> <readonly/> </disk>
ターゲットの
dev
とdbus
の値を調整します。
4 vhostmd
の設定 #
vhostmd
のデフォルトの設定ファイルは、/etc/vhostmd/vhostmd.conf
にあります。必要に応じてこのファイルを調整できます。設定ファイルはXMLファイルであり、<vhostmd>
要素が含まれている必要があります。この場合、<vhostmd>
には、次のセクションで説明する<globals>
と<metrics>
が含まれます。カスタムの変更を行う場合は、デフォルトの設定ファイルを参照として使用します。
4.1 <globals>
要素 #
<globals>
要素は、ディスクの保存場所、データの更新頻度、およびゲストマシンへのデータの転送方法を定義します。これには次の要素が含まれます。
-
<disk>
この要素は、メトリックデータが保存されるディスクのパスとディスクのサイズを定義するために使用されます。これには、次の要素を含めることができます。
<name>
— ディスクの名前を定義します。<path>
— ディスクがマウントされる絶対パス。<size>
—unit
属性を使用して、メトリックの最大サイズを指定します。KBにはk
を使用し、MBにはm
を使用します。
-
<update_period>
メトリックが更新される頻度を定義します。値は秒単位です。
-
<transport>
メトリックをゲストマシンに転送する方法を指定します。SUSE Linux Microの場合は、デフォルトの
virtio
を使用します。-
<virtio>
ここでは、次の要素を使用できます。
<max_channels>
—virtion
がホストシステムとゲストシステム間で使用できる最大数を指定します。<expiration_time>
— 仮想マシンのvirtio
チャネルがアイドル状態のときに閉じられるまでの時間間隔を定義します。デフォルト値は<update_period>
の3倍です。
4.2 <metrics>
要素 #
<metrics>
要素には、収集するメトリックの一覧が含まれています。各メトリックには、次の2つの属性があります。
-
type
メトリック値のデータタイプを示します。指定できる値は、
int32
、uint32
、int64
、uint64
、real32
、real64
、string
、group
、xml
です。メトリックが複数の値を返す場合は、
group
を使用します。xml
は、メトリックが有効なXMLを返す場合の汎用性の高い形式です。-
context
特定のメトリックが収集される場所を定義します。次の値を使用できます。
host
(ホストマシンで収集されたメトリックの場合)vm
(ゲストマシンで収集されたメトリックの場合)
各メトリックには、一意の名前と、メトリックを記録するために実行するコマンドが必要です。メトリックを定義するために使用可能な要素とその説明を以下に示します。
-
<name>
一意の変数名を定義します。メトリックが仮想マシン上で収集される場合、ここで次の値を使用できます:
NAME
、ID
およびUUID
。その後、これらの値は、現在チェックされている仮想マシンの実際の値に置き換えられます。-
<action>
メトリックを収集するために実行するコマンドまたはスクリプトを指定します。たとえば、合計CPU時間を収集するには、次のコマンドを使用します。
<action>virsh dominfo NAME | sed 's/: */:/' | \ gawk -F: '/CPU time/ {print $2;}'<action>
-
<variable>
アクションが値のグループを返す場合は、特定のデータを格納する変数を定義します。要素には、次の属性が定義されている必要があります。
name
— 変数の名前を指定しますtype
— 変数のデータタイプを指定します
5 収集されたメトリックの保存方法 #
vhostmd
は、収集されたメトリックデータをメトリックディスクにraw形式で保存します。ディスクには、32バイトのヘッダと、それに続くXML形式のメトリックデータが含まれています。
5.1 メトリックXML形式 #
収集されたメトリックの結果は、設定されたメトリック定義と似ています。<metric>
要素には、次の属性を指定できます。
-
type
特定のメトリックのデータタイプを示します(
string
など)。-
context
メトリックがホスト(
host
)で収集されるか、仮想マシン(vm
)で収集されるかを識別します。-
id
vm
コンテキストで使用されます。仮想マシンのID番号を伝えます。-
uuid
vm
コンテキストで使用されます。仮想マシンの汎用一意識別子を伝えます。
<metric>
要素には、次の要素が含まれています。
-
<name>
メトリック名を伝えます。
-
<value>
メトリックの実際の値を伝えます。
group
タイプのメトリックが設定されている場合、設定された各<variable>
は、結果に個別のメトリックとして保存されます。たとえば、次の設定スニペットがあるとします。
<metric type="group" context="host"> <name>PageRates</name> <action>pagerate.pl</action> <variable name="PageInRate" type="uint64"/> <variable name="PageFaultRate" type="uint64"/> </metric>
結果は次のスニペットになります。
<metric type='uint64' context='host'> <name>PageInRate</name> <value>0.000000</value> </metric> <metric type='uint64' context='host'> <name>PageFaultRate</name> <value>0.000000</value> </metric>
6 法的事項 #
Copyright © 2006–2025 SUSE LLC and contributors. All rights reserved.
この文書は、GNUフリー文書ライセンスのバージョン1.2または(オプションとして)バージョン1.3の条項に従って、複製、頒布、および/または改変が許可されています。ただし、この著作権表示およびライセンスは変更せずに記載すること。ライセンスバージョン1.2のコピーは、「GNUフリー文書ライセンス」セクションに含まれています。
SUSEの商標については、https://www.suse.com/company/legal/を参照してください。その他の第三者のすべての商標は、各社の所有に帰属します。商標記号(®、™など)は、SUSEおよび関連会社の商標を示します。アスタリスク(*)は、第三者の商標を示します。
本書のすべての情報は、細心の注意を払って編集されています。しかし、このことは正確性を完全に保証するものではありません。SUSE LLC、その関係者、著者、翻訳者のいずれも誤りまたはその結果に対して一切責任を負いかねます。