> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Métricas de VM

> Métricas de desempenho de VM para as VMs do PlayFab Multiplayer Servers, que expõem CPU, RAM e contadores no nível do sistema para ajudar a ajustar a capacidade e monitorar os servidores de jogo hospedados.

As métricas de VM fornecem insights exclusivos sobre os recursos das máquinas virtuais (VMs) criadas como parte dos builds de VM do PlayFab quando você usa o PlayFab Multiplayer Servers para criar servidores de jogo multijogador. Esse recurso fornece acesso às métricas no nível do sistema da máquina virtual, como CPU, RAM e muito mais. Com essas métricas, você pode tomar decisões fundamentadas sobre como maximizar a utilização dos recursos da VM.

As métricas de desempenho podem dar suporte a vários cenários de desenvolvimento.

1. Use os dados de utilização de CPU e memória para medir as necessidades de recursos dos servidores multijogador, para que você possa calcular corretamente o número ideal de servidores de jogo em um SKU (tipo) específico de máquina virtual
2. Use os contadores de rede para detectar um ambiente de rede irregular, como tentativas de ataques DDoS ou outros congestionamentos de rede

O serviço PlayFab Multiplayer Servers oferece suporte a um número limitado de métricas do sistema por meio do recurso *VM Metrics*.

## Uso

As métricas de VM de um build podem ser habilitadas de duas maneiras, dependendo de como o build é criado:

1. Usando o Game Manager, você pode marcar a caixa de seleção "Virtual machine metrics" na página "New Build" do Game Manager.
2. Usando a [API do PlayFab Multiplayer Servers](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/), você pode definir a propriedade **IsEnabled** como **TRUE** nos seguintes objetos de API.

* [InstrumentationConfiguration na chamada à API CreateBuildWithManagedContainer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/create-build-with-managed-container#instrumentationconfiguration) para um build Windows com contêineres
* [InstrumentationConfiguration na chamada à API CreateBuildWithProcessBasedServer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/create-build-with-process-based-server#instrumentationconfiguration) para um build Windows baseado em processo
* [LinuxInstrumentationConfiguration na chamada à API CreateBuildWithCustomContainer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/create-build-with-custom-container#linuxinstrumentationconfiguration) para um build Linux

Quando o recurso de métricas de VM é habilitado para um build, ele permanece habilitado durante todo o tempo de vida do build. Você não pode habilitar/desabilitar as métricas de VM de um build depois que ele é criado.

### Windows

No Windows, a coleta de métricas de VM é um recurso do orquestrador de contêineres/processos existente do PlayFab, chamado *VmAgent*. O *VmAgent* executa periodicamente (a cada 10 segundos) uma tarefa que consulta os seguintes contadores de desempenho do sistema.

1. Megabytes disponíveis
2. % de tempo do processador
3. % de tempo do usuário
4. Leituras de disco/s (para a unidade D:)
5. Gravações de disco/s (para a unidade D:)
6. Bytes recebidos/s
7. Bytes enviados/s

Os valores coletados dos contadores são enviados ao nosso coletor de métricas interno em execução na VM. O coletor agrega esses valores e os envia ao nosso back-end interno para que possam ser apresentados ao usuário no [Game Manager](https://developer.playfab.com).

### Linux

No Linux, usamos o agente de código aberto [telegraf](https://github.com/influxdata/telegraf) para coletar e processar métricas. O telegraf coleta métricas a cada 10 segundos e as emite para nosso agente coletor interno a cada 60 segundos. Para referência, você pode ver abaixo o conteúdo do arquivo de configuração [telegraf.conf](https://docs.influxdata.com/telegraf/v1.15/administration/configuration/#agent-configuration) que usamos. Para obter mais detalhes, acesse a [documentação oficial do telegraf](https://docs.influxdata.com/telegraf/v1.15).

Também usamos um utilitário interno chamado `telegraf-geneva-processor`, que emite o valor da diferença para métricas no nível de contador, como a métrica [net\_bytes\_recv](https://github.com/influxdata/telegraf/blob/master/plugins/inputs/net/NET_README.md#measurements--fields). Emitir o valor da diferença em vez do valor real do contador resulta em uma visualização melhor nos gráficos fornecidos pelo Game Manager.

```
[agent]
  interval = "10s" 
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "60s"
  flush_jitter = "0s"
  precision = ""
  debug = false
  omit_hostname = true
  
[global_tags]
  titleID = "TITLE_ID"
  buildID = "BUILD_ID"
  vmID = "VM_ID"

# consult man proc for details
# https://github.com/influxdata/telegraf/tree/master/plugins/inputs/cpu
[[inputs.cpu]]
  percpu = false
  totalcpu = true
  name_prefix = "telegraf_"
  fieldpass = ["usage_system", "usage_user"]

[[inputs.mem]] # https://www.linuxatemyram.com/
  fieldpass = ["available_percent"]
  name_prefix = "telegraf_"

[[inputs.net]] # /proc/net/dev
  fieldpass = ["bytes_sent", "bytes_recv"]
  name_prefix = "telegraf_"
  interfaces = ["eth0"]
  tagexclude = ["interface"]
  
# https://github.com/influxdata/telegraf/tree/master/plugins/inputs/diskio
[[inputs.diskio]] # /proc/diskstats
  fieldpass = ["reads", "writes"] # number of reads and writes on sdb device  
  devices = ["sdb"] # sdb device contains everything (including container storage) apart from /mnt
  name_prefix = "telegraf_" # which is the place where some of our shared folders are

# grab the allocated percentage from VmAgent. Be aware that this must be in influx format  
[[inputs.http]]
  urls = ["http://localhost:56001/v1/metrics/allocatedpercentage"]
  name_prefix = "telegraf_"
  data_format = "influx"
  tagexclude = ["url"]

# send all telegraf data to internal collector
[[outputs.socket_writer]]
  address = "unix:///var/etw/mdm_influxdb.socket"
  data_format = "influx"
  
# write this data to a file. This might be removed in the future  
[[outputs.file]]
  files = ["/tmp/PerformanceMetrics.csv"]
  data_format = "influx"
  rotation_max_size = "100MB"
  rotation_max_archives = 5
  
[[processors.execd]]
  command = [
    "/usr/bin/telegraf-geneva-processor", 
    "-configFile=/etc/telegraf/telegraf.geneva.processor.conf"
  ]
```

Essa configuração do *telegraf.conf* permite que o agente telegraf colete as métricas abaixo:

1. cpu\_usage\_system
2. cpu\_usage\_user
3. memory\_available\_percent
4. net\_bytes\_recv\_diff (bytes de rede recebidos em eth0)
5. net\_bytes\_sent\_diff (bytes de rede enviados em eth0)
6. diskio\_reads\_diff (número de leituras em sdb)
7. diskio\_writes\_diff (número de gravações em sdb)

Assim como no Windows, o telegraf envia os valores coletados dos contadores ao nosso coletor de métricas interno. O coletor agrega esses valores e os envia ao nosso back-end interno para que possam ser apresentados ao usuário no [Game Manager](https://developer.playfab.com).

### Porcentagem de alocação

Nas VMs Windows e Linux, emitimos uma métrica chamada *Allocation Percentage*. O valor dessa métrica é calculado dividindo o número de servidores *Active* pelo número *Total* de servidores na VM. Essa métrica deve ser usada ao avaliar e interpretar os valores relatados das métricas do sistema. Isso ocorre porque o valor das métricas do sistema provavelmente será diferente em uma VM com muitos servidores Active em comparação com uma VM com muitos servidores StandingBy.

## Exibindo as métricas de VM

Quando você habilita o recurso de métricas de VM para um novo build, as métricas são emitidas assim que o build é implantado com êxito. Você pode usar a página "Virtual Machines"  ([https://developer.playfab.com/en-US/\&lt;YOUR\_TITLE\_ID\&gt;/multiplayer/server/virtual-machines](https://developer.playfab.com/en-US/\&lt;YOUR_TITLE_ID\&gt;/multiplayer/server/virtual-machines)) no Game Manager para obter um link para exibir as métricas de VM de uma VM especificada.

Você também pode acessar as métricas de VM selecionando seu build, indo para a guia de servidores, clicando no menu na linha da VM cujas métricas você deseja ver e selecionando "View Metrics"

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/multiplayer/servers/viewMetricsUpdate.PNG?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=3becf1b6953d4a313b344663c4eed239" alt="Exibir métricas de VM" width="3839" height="1994" data-path="images/playfab/multiplayer/servers/viewMetricsUpdate.PNG" />

## Como posso enviar comentários sobre este recurso?

Junte-se a nós no [Discord](https://aka.ms/msftgamedevdiscord), no canal #multiplayer-servers; adoraríamos entrar em contato e ouvir sua opinião sobre este recurso!

## Confira também

* [Arquivando e recuperando logs de servidores multijogador](/pt-BR/services/playfab/multiplayer/servers/archiving-and-retrieving-multiplayer-server-logs)


## Related topics

- [Práticas recomendadas e lista de verificação de lançamento](/pt-BR/services/playfab/multiplayer/servers/best-practices.md)
- [Implantação do projeto GSDK na nuvem](/pt-BR/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-cloud-deployment.md)
- [Métricas e terminologia](/pt-BR/services/playfab/data-analytics/learn-data/reports/metrics-and-terminology.md)
- [Início rápido de métricas](/pt-BR/services/playfab/data-analytics/learn-data/trends/trends-quickstart.md)
- [Criação de perfil de sustentabilidade com o PIX](/pt-BR/build/game-principles/sustainability/sustainability-pix-guide.md)
