VM-Metriken
VM-Metriken bieten einzigartige Einblicke in die Ressourcen virtueller Computer (VMs), die im Rahmen der PlayFab-VM-Builds erstellt werden, wenn Sie PlayFab Multiplayer-Server zum Erstellen von Multiplayer-Spielservern verwenden. Dieses Feature bietet Ihnen Zugriff auf die Metriken auf Systemebene des virtuellen Computers, z. B. CPU, RAM und mehr. Mit diesen Metriken können Sie fundierte Entscheidungen zur Maximierung der Auslastung der VM-Ressourcen treffen.
Leistungsmetriken können verschiedene Entwicklungsszenarien unterstützen.
- Verwenden Sie CPU- und Arbeitsspeicherauslastungsdaten, um den Ressourcenbedarf von Multiplayerservern zu messen, damit Sie die optimale Anzahl von Spielservern auf einer bestimmten VM-SKU (Typ) richtig berechnen können.
- Verwenden von Netzwerkzählern zum Erkennen einer unregelmäßigen Netzwerkumgebung, z. B. versuchter DDoS-Angriffe oder einer anderen Netzwerküberlastung
Der PlayFab Multiplayer Server-Dienst unterstützt eine begrenzte Anzahl von Systemmetriken über das Feature VM-Metriken .
Nutzung
VM-Metriken für einen Build können auf zwei Arten aktiviert werden, je nachdem, wie ein Build erstellt wird:
- Mithilfe von Game Manager können Sie das Kontrollkästchen "Vm-Metriken" auf der Game Manager-Seite "Neuer Build" aktivieren.
- Mithilfe der PlayFab-Multiplayerserver-API können Sie die Eigenschaft IsEnabled in den folgenden API-Objekten auf TRUE festlegen.
- InstrumentationConfiguration im API-Aufruf CreateBuildWithManagedContainer für einen Windows Build mit Containern
- InstrumentationConfiguration im Aufruf der CreateBuildWithProcessBasedServer-API für einen prozessbasierten Windows Build
- LinuxInstrumentationConfiguration im CreateBuildWithCustomContainer-API-Aufruf für einen Linux-Build
Wenn das Feature "VM-Metriken" für einen Build aktiviert ist, bleibt es für die gesamte Lebensdauer des Builds aktiviert. Sie können VM-Metriken für einen Build nicht mehr aktivieren/deaktivieren, nachdem er erstellt wurde.
Windows
Unter Windows ist die VM-Metriksammlung ein Feature des vorhandenen PlayFab-Container-/Prozessorchestrators mit dem Namen VmAgent. VmAgent führt in regelmäßigen Abständen (alle 10 Sekunden) eine Aufgabe aus, die die folgenden Systemleistungsindikatoren abfragt.
- Verfügbare MBytes
- Prozessorzeit in %
- % Benutzerzeit
- Datenträgerlesevorgänge/Sekunde (für Laufwerk D:)
- Datenträgerschreibvorgänge/Sekunde (für Laufwerk D:)
- Empfangene Bytes/Sekunde
- Gesendete Bytes/Sekunde
Gesammelte Indikatorenwerte werden an unseren internen Metriksammler gesendet, der auf dem virtuellen Computer ausgeführt wird. Der Collector aggregiert sie und sendet sie an unser internes Back-End, damit sie dem Benutzer in Game Manager angezeigt werden können.
Linux
Unter Linux verwenden wir den Open-Source-Telegraf-Agent zum Sammeln und Verarbeiten von Metriken. Telegraf erfasst alle 10 Sekunden Metriken und gibt sie alle 60 Sekunden an unseren internen Collector-Agent aus. Als Referenz können Sie den Inhalt der konfigurationsdatei telegraf.conf sehen, die wir unten verwenden. Weitere Informationen finden Sie in den offiziellen Telegraf-Dokumenten.
Wir verwenden auch ein internes Hilfsprogramm namens telegraf-geneva-processor
, das den Diff-Wert für Metriken auf Zählerebene ausgibt, z . B . die net_bytes_recv Metrik. Die Ausgabe des Diff-Werts anstelle des tatsächlichen Zählerwerts führt zu einer besseren Visualisierung in den bereitgestellten Game Manager-Diagrammen.
[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"
]
Diese telegraf.conf-Konfiguration ermöglicht es dem Telegraf-Agent, die folgenden Metriken zu erfassen:
- cpu_usage_system
- cpu_usage_user
- memory_available_percent
- net_bytes_recv_diff (für eth0 empfangene Netzwerkbytes)
- net_bytes_sent_diff (für eth0 gesendete Netzwerkbytes)
- diskio_reads_diff (Anzahl der Lesevorgänge für sdb)
- diskio_writes_diff (Anzahl der Schreibvorgänge für sdb)
Ähnlich wie bei Windows sendet Telegraf die gesammelten Zählerwerte an unseren internen Metriksammler. Der Collector aggregiert und sendet diese Werte an unser internes Back-End, damit sie dem Benutzer in Game Manager angezeigt werden können.
Zuordnungsprozentsatz
Sowohl auf virtuellen Windows- als auch auf Linux-VMs geben wir eine Metrik namens Zuordnungsprozentsatz aus. Der Wert dieser Metrik wird berechnet, indem die Anzahl der aktiven Server durch die Gesamtzahl der Server auf dem virtuellen Computer dividiert wird. Diese Metrik soll beim Auswerten und Interpretieren der gemeldeten Systemmetrikwerte verwendet werden. Dies liegt daran, dass sich der Wert der Systemmetriken auf einer VM mit vielen aktiven Servern wahrscheinlich von einem virtuellen Computer mit vielen StandingBy-Servern unterscheidet.
Anzeigen von VM-Metriken
Wenn Sie das Feature "VM-Metriken" für einen neuen Build aktivieren, werden Metriken ausgegeben, sobald der Build erfolgreich bereitgestellt wurde. Sie können die Seite "Virtuelle Computer" (https://developer.playfab.com/en-US/<YOUR_TITLE_ID>/Multiplayer/Server/virtuelle Computer) in Game Manager verwenden, um einen Link zum Anzeigen von VM-Metriken für eine angegebene VM abzurufen.
Sie können auch auf die VM-Metriken zugreifen, indem Sie Ihren Build auswählen, zur Registerkarte "Server" wechseln und das Menü inline mit dem virtuellen Computer, auf dem die Metriken angezeigt werden sollen, und "Metriken anzeigen" auswählen.
Wie kann ich Feedback zu diesem Feature übermitteln?
Begleiten Sie uns auf Discord auf dem #multiplayer-Servers-Kanal, wir würden uns freuen, uns zu kontaktieren und Ihre Gedanken zu diesem Feature zu hören!