> ## 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étriques des machines virtuelles

> Métriques de performances des machines virtuelles PlayFab Multiplayer Servers, qui exposent le processeur, la RAM et des compteurs au niveau du système pour vous aider à ajuster la capacité et à surveiller les serveurs de jeu hébergés.

Les métriques des machines virtuelles fournissent des informations uniques sur les ressources des machines virtuelles (VM) créées dans le cadre des builds de machines virtuelles PlayFab lorsque vous utilisez PlayFab Multiplayer Servers pour créer des serveurs de jeu multijoueurs. Cette fonctionnalité vous donne accès aux métriques au niveau du système de la machine virtuelle, telles que le processeur, la RAM, etc. Grâce à ces métriques, vous pouvez prendre des décisions éclairées pour optimiser l'utilisation des ressources de vos machines virtuelles.

Les métriques de performances peuvent prendre en charge différents scénarios de développement.

1. Utilisez les données d'utilisation du processeur et de la mémoire pour mesurer les besoins en ressources des serveurs multijoueurs, afin de calculer correctement le nombre optimal de serveurs de jeu sur une référence SKU (un type) de machine virtuelle spécifique
2. Utilisez les compteurs réseau pour détecter un environnement réseau anormal, comme des tentatives d'attaques DDoS ou d'autres congestions réseau

Le service PlayFab Multiplayer Servers prend en charge un nombre limité de métriques système au moyen de la fonctionnalité *VM Metrics*.

## Utilisation

Les métriques de machine virtuelle d'une build peuvent être activées de deux façons, selon la façon dont la build est créée :

1. Dans Game Manager, vous pouvez cocher la case "Virtual machine metrics" sur la page "New Build".
2. Avec l'[API PlayFab Multiplayer Servers](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/), vous pouvez définir la propriété **IsEnabled** sur **TRUE** dans les objets d'API suivants.

* [InstrumentationConfiguration dans l'appel d'API CreateBuildWithManagedContainer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/create-build-with-managed-container#instrumentationconfiguration) pour une build Windows avec conteneurs
* [InstrumentationConfiguration dans l'appel d'API CreateBuildWithProcessBasedServer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/create-build-with-process-based-server#instrumentationconfiguration) pour une build Windows basée sur un processus
* [LinuxInstrumentationConfiguration dans l'appel d'API CreateBuildWithCustomContainer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/create-build-with-custom-container#linuxinstrumentationconfiguration) pour une build Linux

Lorsque la fonctionnalité de métriques de machine virtuelle est activée pour une build, elle le reste pendant toute la durée de vie de la build. Vous ne pouvez pas activer ou désactiver les métriques de machine virtuelle d'une build après sa création.

### Windows

Sous Windows, la collecte des métriques de machine virtuelle est une fonctionnalité de l'orchestrateur de conteneurs/processus PlayFab existant, appelé *VmAgent*. *VmAgent* exécute régulièrement (toutes les 10 secondes) une tâche qui interroge les compteurs de performances système suivants.

1. Available MBytes
2. % Processor Time
3. % User Time
4. Disk Reads/sec (pour le lecteur D:)
5. Disk Writes/sec (pour le lecteur D:)
6. Bytes Received/sec
7. Bytes Sent/sec

Les valeurs des compteurs collectées sont envoyées à notre collecteur de métriques interne qui s'exécute sur la machine virtuelle. Le collecteur les agrège et les envoie à notre back-end interne afin qu'elles puissent être présentées à l'utilisateur dans [Game Manager](https://developer.playfab.com).

### Linux

Sous Linux, nous utilisons l'agent open source [telegraf](https://github.com/influxdata/telegraf) pour collecter et traiter les métriques. Telegraf collecte les métriques toutes les 10 secondes et les envoie à notre agent collecteur interne toutes les 60 secondes. Pour référence, vous pouvez consulter ci-dessous le contenu du fichier de configuration [telegraf.conf](https://docs.influxdata.com/telegraf/v1.15/administration/configuration/#agent-configuration) que nous utilisons. Pour plus de détails, consultez la [documentation officielle de telegraf](https://docs.influxdata.com/telegraf/v1.15).

Nous utilisons également un utilitaire interne appelé `telegraf-geneva-processor`, qui émet la valeur différentielle des métriques de type compteur, comme la métrique [net\_bytes\_recv](https://github.com/influxdata/telegraf/blob/master/plugins/inputs/net/NET_README.md#measurements--fields). L'émission de la valeur différentielle plutôt que de la valeur réelle du compteur permet une meilleure visualisation dans les graphiques fournis par 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"
  ]
```

Cette configuration *telegraf.conf* permet à l'agent telegraf de collecter les métriques suivantes :

1. cpu\_usage\_system
2. cpu\_usage\_user
3. memory\_available\_percent
4. net\_bytes\_recv\_diff (octets réseau reçus pour eth0)
5. net\_bytes\_sent\_diff (octets réseau envoyés pour eth0)
6. diskio\_reads\_diff (nombre de lectures pour sdb)
7. diskio\_writes\_diff (nombre d'écritures pour sdb)

Comme sous Windows, telegraf envoie les valeurs des compteurs collectées à notre collecteur de métriques interne. Le collecteur agrège ces valeurs et les envoie à notre back-end interne afin qu'elles puissent être présentées à l'utilisateur dans [Game Manager](https://developer.playfab.com).

### Pourcentage d'allocation

Sur les machines virtuelles Windows comme Linux, nous émettons une métrique appelée *Allocation Percentage*. La valeur de cette métrique est calculée en divisant le nombre de serveurs *Active* par le nombre *total* de serveurs de la machine virtuelle. Cette métrique est destinée à être utilisée lors de l'évaluation et de l'interprétation des valeurs des métriques système signalées. En effet, la valeur des métriques système sera probablement différente sur une machine virtuelle comptant de nombreux serveurs Active par rapport à une machine virtuelle comptant de nombreux serveurs StandingBy.

## Affichage des métriques des machines virtuelles

Lorsque vous activez la fonctionnalité de métriques de machine virtuelle pour une nouvelle build, les métriques sont émises dès que la build est correctement déployée. Vous pouvez utiliser la page "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)) de Game Manager pour obtenir un lien permettant d'afficher les métriques d'une machine virtuelle spécifiée.

Vous pouvez également accéder aux métriques des machines virtuelles en sélectionnant votre build, en accédant à l'onglet des serveurs, puis en ouvrant le menu de la ligne de la machine virtuelle dont vous souhaitez consulter les métriques et en sélectionnant "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="Afficher les métriques des machines virtuelles" width="3839" height="1994" data-path="images/playfab/multiplayer/servers/viewMetricsUpdate.PNG" />

## Comment envoyer des commentaires sur cette fonctionnalité?

Rejoignez-nous sur [Discord](https://aka.ms/msftgamedevdiscord), dans le canal #multiplayer-servers : nous serions ravis d'échanger avec vous et de connaître votre avis sur cette fonctionnalité!

## Voir aussi

* [Archivage et récupération des journaux de serveur multijoueur](/fr-CA/services/playfab/multiplayer/servers/archiving-and-retrieving-multiplayer-server-logs)


## Related topics

- [Déploiement infonuagique du projet GSDK](/fr-CA/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-cloud-deployment.md)
- [Lister les résumés des machines virtuelles](/fr-CA/services/playfab/api-references/rest/multiplayer/multiplayer-server/list-virtual-machine-summaries.md)
- [Déploiement des builds PlayFab Multiplayer Server](/fr-CA/services/playfab/multiplayer/servers/deploying-playfab-multiplayer-server-builds.md)
- [Déployer des builds à l'aide de Game Manager](/fr-CA/services/playfab/multiplayer/servers/deploy-using-game-manager.md)
- [Déployer des builds à l'aide de PowerShell/de l'API](/fr-CA/services/playfab/multiplayer/servers/deploy-using-powershell-api.md)
