目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Microでの仮想ホストメトリックデーモンの設定

SUSE Linux Microでの仮想ホストメトリックデーモンの設定

発行日: 20/03/2025
概要

vhostmdは、仮想マシンホストからメトリックを収集し、そのホストで実行されている仮想マシンにこれらのメトリックを提供できるツールです。

目的

この記事では、vhostmdをインストールし、メトリックを収集できるように設定する方法について説明します。

所要時間

この記事の理解には15分ほどを要します。

目標

vhostmdツールが実行され、メトリックが収集されます。

要件
  • SUSE Linux Microの実行中のインスタンス

  • そのインスタンスで実行されている仮想マシン

1 仮想ホストメトリックデーモン(別名vhostmd)とは

vhostmdは、ホスト環境で実行されるデーモンであり、ホストマシンとゲストマシン間のメトリック通信チャネルを提供します。このデーモンは、ゲストマシンの管理者に、ゲストマシンの問題の分析に役立つ、ホストリソース使用状況に関する限られたデータセットを(通常は読み取り専用モードで)提供します。

vhostdmdは、定期的にメトリックをディスクに書き込みます。収集されるメトリックは、データの頻度と保存場所とともに、設定可能なパラメータです。

2 vhostmdの取得

デフォルトでは、vhostmdは提供されるイメージには含まれません。したがって、使用する前にインストールする必要があります。

  1. 次のコマンドを実行して、デーモンをインストールします。

              > 
              sudo
              transactional-update pkg install vhostmd
  2. システムを再起動して、新しいスナップショットに切り替えます。

  3. 次のコマンドを実行して、デーモンを起動します。

              > 
              sudo
              vhostmd
              OPTIONS

    次のオプションを使用して、コマンドの動作を変更できます。

    • -v — 詳細な出力を行います。

    • --connect URIlibvirtデーモンのURIを渡して、デーモンへの接続を確立します。

    • -f FILE_PATH — 代替の設定ファイルを渡します。設定の詳細については、4項 「vhostmdの設定」を参照してください。

    • -p PID_FILE — 代替のPIDファイルを作成します。デフォルトは/var/run/vhostmd.pidです。

    • -u USERNAME — 非特権ユーザを使用します。

vhostmdsystemdサービスとして実行することもできます。

      > 
      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

ドメイン設定を変更するには、次の手順に従います。

  1. 次のコマンドを実行します。

              > 
              sudo
              virsh edit
       GUEST_NAME
  2. 次のスニペットを追加して、<devices>セクションを更新します。

    <disk type='block' device='disk'>
      <source dev='/dev/shm/vhostmd0'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
    </disk>

    ターゲットのdevdbusの値を調整します。

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

メトリック値のデータタイプを示します。指定できる値は、int32uint32int64uint64real32real64stringgroupxmlです。

メトリックが複数の値を返す場合は、groupを使用します。xmlは、メトリックが有効なXMLを返す場合の汎用性の高い形式です。

context

特定のメトリックが収集される場所を定義します。次の値を使用できます。

  • host (ホストマシンで収集されたメトリックの場合)

  • vm (ゲストマシンで収集されたメトリックの場合)

各メトリックには、一意の名前と、メトリックを記録するために実行するコマンドが必要です。メトリックを定義するために使用可能な要素とその説明を以下に示します。

<name>

一意の変数名を定義します。メトリックが仮想マシン上で収集される場合、ここで次の値を使用できます: NAMEIDおよび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>

メトリックの実際の値を伝えます。

注記
注記: 1つのメトリック内に複数の値はありません

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>