0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

New Relic 使ってみた情報をシェアしよう! by New RelicAdvent Calendar 2023

Day 16

【New Relic】Synthetic Monitoringを用いてPhotonFusionの統計情報をお手軽に可視化してみた

Last updated at Posted at 2023-12-16

はじめに

この記事はNew Relic Advent Calender 2023 シリーズ1の16日目です。

ゲームやXRのサービスでは、マルチプレイ同期の実装を簡単にするSaaS製品のPhoton Fusionがよく使われます。

実際の運用ではプレイヤーのCCU(同時接続数)などを監視し、適切に設定変更をする必要があります。

そこで今回は、お手軽にSynthetic Monitoringを使って、PhotonFusionのCCU数を取得してダッシュボード化しようと思います。

使用するもの

事前準備

  • Photonの管理画面から、対象アプリIDと、アナリティクスAPI用のトークンを取得してください。
  • New RelicのSynthetic MonitoringからScripted API モニターを新規作成し、60秒間隔に設定してください。また、Photon側で設定しているリージョンと揃えて設定してください。

スクリプト

PhotonのアナリティクスAPIは4分ほどの遅延があるようなので、4分前〜3分前の60秒間を指定してAPIを叩いています。

PhotonCCU.js
var assert = require('assert');

var options = {
  url: "https://counter.photonengine.com/Counter/api/data/app/appID/jp/ccu?start=-300s&end=-240",
  headers: {
        'accept': 'text/plain',
        'Authorization': 'hogehohe' //Photonダッシュボードで発行できるAPIトークン
        }
};

$http.get(options, 
  // Callback
  function (err, response, body) {
    if (err) {
      console.error('Request failed:', err);
      assert.fail('Request failed');
      return;
    }

    console.log(response.statusCode + " status code");
    assert.equal(response.statusCode, 200, 'Expected a 200 OK response');
    
    // Assuming the body returns a plain text value representing the CCU
    var ccu = parseInt(body, 10);
    if (isNaN(ccu)) {
      console.error('Failed to parse CCU from response:', body);
      assert.fail('Invalid CCU value');
      return;
    }

    // Send the CCU value to New Relic Insights as a custom event
    $util.insights.set('CCUValue', ccu);
    console.log("CCU : " + ccu)
  }
);

ダッシュボード

下記のNRQLを入力してください。

SELECT max (custom.CCUValue) FROM SyntheticCheck SINCE 1 hour ago TIMESERIES

スクリーンショット 2023-12-16 17.10.19.png

終わりに

今回はSynthetic Monitoringで簡易的にCCUをメトリクス化してみましたが、よりカスタムするにはNew Relic Flexに移行したほうが良さそうです。

また、Photonから提供されているアナリティクスAPIを用いましたが、これだけだとルームごとの情報が分かりません。
Fusionのクライアント側のAPI(SessionInfoなど)を叩かないと取得できないので、今後はCCU監視用のBotをUnityで作成し、NewRelicと連携したいと思います。
(Exit Gamesさん、ルームごとのアナリティクスAPI公開してくれてもいいんですよ…!)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?