VM メトリック。
VM メトリックは、PlayFab マルチプレイヤー サーバーを使用してマルチプレイヤー ゲーム サーバーを作成するときに、PlayFab VM ビルドの一部として作成される仮想マシン (VM) リソースに関する一意の分析情報を提供します。 この機能を使用すると、CPU、RAM などの仮想マシンのシステム レベルのメトリックにアクセスできます。 これらのメトリックを使用すると、VM リソースの使用率を最大化することに関する情報に基づいた意思決定を行うことができます。
パフォーマンス メトリックは、さまざまな開発シナリオをサポートできます。
- CPU およびメモリ使用率データを使用してマルチプレイヤー サーバーのリソース ニーズを測定すると、特定の仮想マシン SKU (種類) 上のゲーム サーバーの最適な数を正しく計算することができます
- ネットワーク カウンターを使用して、DDoS 攻撃の試行やその他のネットワークの混雑など、不規則なネットワーク環境を検出する
PlayFab マルチプレイヤー サーバー サービスでは、VM メトリック 機能を使用して、一定数のシステム メトリックをサポートすることができます。
使用法
ビルドの VM メトリックは、ビルドの作成方法に応じて、次の 2 つの方法で有効にすることができます:
- ゲーム マネージャーを使用して、[新しいビルド] ゲーム マネージャー ページの [仮想マシン メトリック プレビュー] チェック ボックスを有効にすることができます。
- PlayFab マルチプレイヤー サーバー API を使用して、次の API オブジェクトでプロパティ IsEnabled を TRUE に設定できます。
- コンテナーを使用した Windows ビルドの CreateBuildWithManagedContainer API 呼び出しの InstrumentationConfiguration
- プロセス ベースの Windows ビルドの CreateBuildWithProcessBasedServer API 呼び出しの InstrumentationConfiguration
- Linux ビルドの CreateBuildWithCustomContainer API 呼び出しの LinuxInstrumentationConfiguration
ビルドに対して VM メトリック機能が有効になっている場合は、ビルドの有効期間全体にわたって有効なままになります。 ビルドの作成後に VM メトリックを有効または無効にすることはできません。
Windows
Windowsでは、VM メトリクスの収集は、VmAgent という既存の PlayFab コンテナやプロセス オーケストレータの機能の 1 つです。 VmAgent は、定期的に (10 秒ごとに) 次のシステム パフォーマンス カウンターを照会するタスクを実行します。
- Available MBytes
- % Processor Time
- % User Time
- ディスク読み取り/秒 (ドライブ D:)
- ディスク書き込み/秒 (ドライブ D:)
- Bytes Received/sec
- Bytes Sent/sec
収集されたカウンター値は、VM で実行されている内部メトリック コレクターに送信されます。 コレクターは、ゲーム マネージャーでユーザーに表示できるように、それらを集計して内部バックエンドに送信します。
Linux
Linux では、メトリックの収集と処理にオープンソースのテレグラフ エージェントを使用しています。 Telegraf は、メトリックを 10 秒ごとに収集し、60 秒ごとに内部コレクター エージェントに出力します。 参考までに、使用している telegraf.conf 構成ファイルの内容を以下に示します。 詳細については、「telegraf の公式ドキュメント」を参照してください。
また、カウンター レベルのメトリック (net_bytes_recv など) の差分値を出力する telegraf-geneva-processor
という内部ユーティリティも使用しています。 実際のカウンター値の代わりに差分値を出力すると、提供されたゲーム マネージャー グラフの見やすさが向上します。
[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"
]
この telegraf.conf 構成を使用すると、Telegraf エージェントは次のメトリックを収集することができます:
- cpu_usage_system
- cpu_usage_user
- memory_available_percent
- net_bytes_recv_diff (eth0 で受信したネットワーク バイト)
- net_bytes_sent_diff (eth0 に送信されるネットワーク バイト)
- diskio_reads_diff (sdb の読み取りの数)
- diskio_writes_diff (sdb の書き込みの数)
Windows のように、Telegraf は収集されたカウンター値を内部メトリック コレクターに送信します。 コレクターは、これらの値を集計して内部バックエンドに送信して、 ゲーム マネージャーでユーザーに表示できるようにします。
割り当てのパーセンテージ
Windows VM と Linux VM の両方で、割り当て率というメトリックを生成しています。 このメトリックの値は、アクティブ なサーバーの数を VM 上のサーバーの 合計数 で割って計算されます。 このメトリックは、報告されたシステム メトリック値を評価および解釈するときに使用されます。 これは、アクティブなサーバーが多い VM と、StandingBy サーバーが多い VM では、システムメトリックの値が変わる可能性があるからです。
VM メトリックの表示
新しいビルドの VM メトリック機能を有効にすると、ビルドが正常にデプロイされるとすぐにメトリックが生成されます。 ゲーム マネージャーの [仮想マシン] (https://developer.playfab.com/en-US/<YOUR_TITLE_ID>/マルチプレイヤー/サーバー/仮想マシン) ページを使用して、指定した VM の VM メトリックを表示するためのリンクを取得できます。
ビルドを選択して [サーバー] タブに移動し、メトリックを見たい VM の横にあるメニューから [メトリックの表示] を選択することで、VM メトリックにアクセスすることもできます。
この機能に関するフィードバックを送信するにはどうすればよいですか?
#multiplayer-servers チャネルの Discord に参加して、この機能に関するご意見をお聞かせください!