VM 메트릭
VM 메트릭은 PlayFab 멀티 플레이어 서버를 사용하여 멀티 플레이어 게임 서버를 만들 때 PlayFab VM 빌드의 일부로 생성된 VM(가상 머신) 리소스에 대한 고유한 인사이트를 제공합니다. 이 기능을 사용하면 CPU, RAM 등과 같은 가상 머신의 시스템 수준 메트릭에 액세스할 수 있습니다. 이러한 메트릭을 사용하면 VM 리소스의 사용률을 극대화하는 방법에 대해 합리적인 결정을 내릴 수 있습니다.
성능 메트릭은 다음과 같은 다양한 개발 시나리오를 지원할 수 있습니다.
- CPU 및 메모리 사용률 데이터를 사용하여 멀티 플레이어 서버의 리소스 요구 사항을 측정하므로 사용자는 특정 Virtual Machine SKU(유형)에서 최적의 게임 서버 수를 올바르게 계산할 수 있습니다.
- 네트워크 카운터를 사용하여 DDoS 공격 시도 또는 기타 네트워크 정체와 같은 불규칙한 네트워크 환경 감지
PlayFab 멀티플레이어 서버 서비스는 VM 메트릭 기능을 통해 제한된 수의 시스템 메트릭을 지원합니다.
사용법
빌드에 대한 VM 메트릭은 빌드를 만드는 방법에 따라 두 가지 방법으로 사용할 수 있습니다.
- 게임 관리자를 사용하여 "새 빌드" 게임 관리자 페이지에서 "가상 머신 메트릭" 확인란을 사용하도록 설정할 수 있습니다.
- PlayFab 멀티플레이어 서버 API를 사용하여 다음 API 개체에서 IsEnabled 속성을 TRUE로 설정할 수 있습니다.
- 컨테이너가 있는 Windows 빌드에 대한 CreateBuildWithManagedContainer API 호출의 InstrumentationConfiguration
- 프로세스 기반 Windows 빌드에 대한 CreateBuildWithProcessBasedServer API 호출의 InstrumentationConfiguration
- Linux 빌드에 대한 CreateBuildWithCustomContainer API 호출의 LinuxInstrumentationConfiguration
빌드에 대해 VM 메트릭 기능을 사용하도록 설정하면 빌드의 전체 수명 동안 사용하도록 설정된 상태로 유지됩니다. 빌드를 만든 후에는 빌드의 VM 메트릭을 사용하거나 사용하지 않도록 설정할 수 없습니다.
Windows
Windows에서 VM 메트릭 컬렉션은 VmAgent라는 기존 PlayFab 컨테이너/프로세스 오케스트레이터의 기능입니다. VmAgent는 주기적으로(10초마다) 다음 시스템 성능 카운터를 쿼리하는 작업을 실행합니다.
- Available MBytes
- % Processor Time
- % 사용자 시간
- 디스크 읽기/초(드라이브 D:용)
- 디스크 쓰기 수/초(드라이브 D:용)
- Bytes Received/sec
- Bytes Sent/sec
수집된 카운터 값은 VM에서 실행되는 내부 메트릭 수집기로 전송됩니다. 수집기는 수집된 카운터 값을 집계하여 내부 백 엔드로 보내므로 게임 관리자에서 사용자에게 제공할 수 있습니다.
Linux
Linux에서는 메트릭을 수집하고 처리하기 위해 오픈 소스 Telegraf 에이전트를 사용합니다. 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 및 Linux VM 모두에서 할당 백분율이라는 메트릭을 내보냅니다. 이 메트릭의 값은 활성 서버 수를 VM의 총 서버 수로 나누어 계산합니다. 이 메트릭은 보고된 시스템 메트릭 값을 평가하고 해석할 때 사용됩니다. 이는 시스템 메트릭의 값이 활성 서버가 많은 VM과 StandingBy 서버가 많은 VM에서 다를 수 있기 때문입니다.
VM 메트릭 보기
새 빌드에 대해 VM 메트릭 기능을 사용하도록 설정하면 빌드가 성공적으로 배포되는 즉시 메트릭이 내보내집니다. 게임 관리자의 "Virtual Machines"(https://developer.playfab.com/en-US/<YOUR_TITLE_ID>/multiplayer/server/virtual-machines) 페이지를 사용하여 지정된 VM의 VM 메트릭을 표시하는 링크를 가져올 수 있습니다.
또한 빌드를 선택하고 서버 탭으로 이동한 다음, 메트릭을 보려는 VM으로 메뉴 인라인을 누르고 "메트릭 보기"를 선택하여 VM 메트릭에 액세스할 수도 있습니다.
이 기능에 대한 피드백을 제출하려면 어떻게 해야 하나요?
#multiplayer-servers 채널의 Discord에 참여해 주세요. 이 기능에 대한 의견을 듣고 싶습니다.