Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Configurando o daemon de métricas de host virtual no SUSE Linux Micro

Configurando o daemon de métricas de host virtual no SUSE Linux Micro

Data de Publicação: 20/03/2025
O QUE É?

O vhostmd é uma ferramenta que coleta métricas de um host de máquina virtual e as fornece para as máquinas virtuais executadas nesse host.

POR QUÊ?

O artigo descreve como instalar e configurar o vhostmd para habilitar a coleta de métricas.

DEDICAÇÃO

A leitura do artigo leva aproximadamente 15 minutos.

META

Você terá a ferramenta vhostmd em execução para coletar métricas.

REQUISITOS
  • Uma instância em execução do SUSE Linux Micro

  • Máquinas virtuais em execução na instância

1 O que é um daemon de métricas de host virtual, também conhecido como vhostmd?

vhostmd é um daemon executado em um ambiente de host que oferece um canal de comunicação de métricas entre as máquinas host e convidadas. O daemon fornece ao administrador da máquina convidada um conjunto limitado de dados de uso de recursos do host (geralmente no modo apenas leitura), para ajudar a analisar problemas com a máquina convidada.

Periodicamente, o vhostdmd grava as métricas em um disco. As métricas que serão coletadas, junto com a frequência e o local de armazenamento dos dados, são parâmetros configuráveis.

2 Obtendo vhostmd

Por padrão, o vhostmd não está incluído nas imagens fornecidas. Portanto, você deve instalá-lo antes de usá-lo:

  1. Execute o seguinte para instalar o daemon:

              > 
              sudo
              transactional-update pkg install vhostmd
  2. Reinicialize o sistema para alternar para o novo instantâneo.

  3. Execute o seguinte para iniciar o daemon:

              > 
              sudo
              vhostmd
              OPTIONS

    Você pode usar as seguintes opções para modificar o comportamento do comando:

    • -v: para uma saída verbosa

    • --connect URI: para passar o URI do daemon libvirt para estabelecer conexões com ele

    • -f FILE_PATH: para passar um arquivo de configuração alternativo. Para obter detalhes sobre a configuração, consulte a Seção 4, “Configuração do vhostmd.

    • -p PID_FILE: para criar um arquivo PID alternativo. O padrão é /var/run/vhostmd.pid.

    • -u USERNAME: para utilizar um usuário sem privilégio

Você também pode executar o vhostmd como serviço do systemd:

      > 
      sudo
      systemctl enable --now vhostmd
Nota
Nota: Será necessário reiniciar o serviço após mudanças na configuração

Sempre que você fizer mudanças na configuração, conforme descrito na Seção 4, “Configuração do vhostmd, reinicie o serviço vhostmd da seguinte maneira:

        > 
        sudo
        systemctl restart vhostmd

3 Fornecendo métricas coletadas a uma máquina virtual

Você pode tornar as métricas coletadas visíveis para máquinas virtuais específicas para uso posterior ou apenas para leitura. Há duas maneiras de fazer isso. Você pode anexar o disco de métricas usando o comando virsh ou ajustar a configuração do domínio.

Para anexar o disco de métricas no modo apenas leitura, execute o virsh da seguinte maneira:

      > 
      sudo
      virsh attach-disk VIRTUAL_MACHINE \ 
  PATH_TO_METRICS_DISC --driver tap \
  --subdriver aio --type disk --mode readonly

Para mudar a configuração do domínio, faça o seguinte:

  1. Execute o comando

              > 
              sudo
              virsh edit
       GUEST_NAME
  2. Atualize a seção <devices> adicionando o seguinte trecho:

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

    Ajuste os valores dev e dbus do destino.

4 Configuração do vhostmd

O arquivo de configuração padrão do vhostmd está localizado em /etc/vhostmd/vhostmd.conf. Você pode ajustar esse arquivo de acordo com as suas necessidades. Ele é um arquivo XML que deve incluir o elemento <vhostmd>. O <vhostmd> inclui <globals> e <metrics>, que estão descritos nas seções a seguir. Use o arquivo de configuração padrão como uma referência para mudanças personalizadas.

4.1 O elemento <globals>

O elemento <globals> define o local de armazenamento em disco, a frequência de atualização de dados e o método de transporte de dados para as máquinas convidadas. Ele inclui os seguintes elementos:

<disk>

O elemento é usado para definir o caminho do disco em que os dados de métricas são armazenados e também o tamanho do disco. Ele pode conter os seguintes elementos:

  • <name>: define o nome do disco

  • <path>: um caminho absoluto em que o disco é montado

  • <size>: usando o atributo unit, especifique o tamanho máximo das métricas. Use k para KB e m para MB.

<update_period>

Define a frequência de atualização das métricas. O valor é expresso em segundos.

<transport>

Especifica como as métricas são transportadas para as máquinas convidadas. No caso do SUSE Linux Micro, use o padrão virtio.

<virtio>

Neste caso, você pode usar os seguintes elementos:

  • <max_channels>: especifica o número máximo que o virtion pode usar entre os sistemas host e convidados.

  • <expiration_time>: define após quanto tempo um canal do virtio de uma máquina virtual será fechado por ociosidade. O valor padrão é três vezes o <update_period>.

4.2 O elemento <metrics>

O elemento <metrics> contém uma lista de métricas que serão coletadas. Cada métrica tem dois atributos:

type

Descreve o tipo de dados de valor das métricas. Os valores possíveis são: int32, uint32, int64, uint64, real32, real64, string, group e xml.

Use group quando uma métrica retornar vários valores. O xml é um formato versátil quando a métrica retorna um XML válido.

context

Define de onde a métrica específica é coletada. Os valores possíveis são:

  • host para métricas coletadas na máquina host

  • vm para métricas coletadas na máquina convidada

Cada métrica deve ter um nome exclusivo e um comando que é executado para registrar as métricas. A seguinte lista descreve os elementos possíveis para definir uma métrica:

<name>

Define o nome exclusivo da variável. Se a métrica for coletada em uma máquina virtual, você poderá usar os seguintes valores: NAME, ID e UUID. Em seguida, esses valores serão substituídos pelos valores reais da máquina virtual que está sendo verificada.

<action>

Especifica um comando ou script que será executado para coletar uma métrica. Por exemplo, para obter o tempo total da CPU, use:

<action>virsh dominfo NAME | sed 's/: */:/' | \
    gawk -F: '/CPU time/ {print $2;}'<action>
<variable>

Se uma ação retorna um grupo de valores, defina as variáveis que armazenam os dados específicos. O elemento precisa ter os seguintes atributos definidos:

  • name: especifique o nome de uma variável

  • type: especifique o tipo de dados da variável

5 Como as métricas coletadas são armazenadas?

O vhostmd armazena os dados de métricas coletados no disco de métricas em formato bruto. O disco contém um cabeçalho de 32 bytes seguido dos dados de métricas no formato XML.

5.1 Formato XML de métricas

Os resultados das métricas coletadas são semelhantes à definição das métricas configuradas. O elemento <metric> pode ter os seguintes atributos:

type

Indica o tipo de dados da métrica específica, por exemplo, string.

context

Identifica se a métrica é coletada no host (host) ou em uma máquina virtual (vm).

id

Usado no contexto de vm. Transmite o número de ID da máquina virtual.

uuid

Usado no contexto de vm. Transmite o Identificador Universalmente Exclusivo da máquina virtual.

O elemento <metric> contém os seguintes elementos:

<name>

Transmite o nome da métrica.

<value>

Transmite o valor real das métricas.

Nota
Nota: Não há vários valores em uma métrica

Quando o tipo de métrica group foi configurado, cada <variable> definida é armazenada como uma métrica separada no resultado. Por exemplo, o seguinte trecho de configuração:

<metric type="group" context="host">
  <name>PageRates</name>
  <action>pagerate.pl</action>
  <variable name="PageInRate" type="uint64"/>
  <variable name="PageFaultRate" type="uint64"/>
</metric>

Resulta no seguinte trecho:

<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>