メインコンテンツまでスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。

Extendアプリのカスタムメトリクス

Last updated on July 23, 2026
AI翻訳

このページは AI によって翻訳されています。内容の正確性については英語版を参照してください。

Overview​

Extendアプリのカスタムメトリクスとは、Extendアプリが公開するデフォルトのメトリクス以外に追加できるメトリクスです。

この記事では、Extend Service Extensionアプリテンプレートを例に、Extendアプリにカスタムメトリクスを追加する手順を説明します。ただし、ここで説明する手順はすべての種類のExtendアプリに適用できます。

前提条件​

このウォークスルーを進める前に、Extend Service Extensionアプリのセットアップ方法について理解しておく必要があります。

アプリテンプレートをクローンする​

git clone https://github.com/AccelByte/extend-service-extension-csharp

カスタムメトリクスを追加する​

この例では、GetGuildProgress関数が呼び出された回数を追跡するカウンターメトリクスを追加します。

  1. メトリクスプロバイダークラスを作成して、新しいメトリクスを定義します。Classesディレクトリまたは他の任意のディレクトリに保存します。

    using System;
    using Prometheus;

    namespace AccelByte.Extend.ServiceExtension.Server
    {
    public class GetGuildCountMetric
    {
    private Counter _Counter;

    public GetGuildCountMetric()
    {
    _Counter = Metrics.CreateCounter(
    "ab_count_get_guild_progress",
    "Count number of GetGuildProgress called", labelNames: new[] { "method" });
    }

    public void Increment(string method)
    {
    _Counter.WithLabels(method).Inc();
    }
    }
    }
  2. Program.csファイル内のサービスプロバイダーに新しいメトリクスを登録します。以下のコードは、grpcサービスを登録する前に配置してください。

    ...

    builder.Services
    .AddSingleton(new GetGuildCountMetric());

    ...
  3. Services/MyService.cs内のgrpcサービスコンストラクタに新しいメトリクスを追加します。

    ...

    public class MyService : Service.ServiceBase
    {
    ...

    private readonly GetGuildCountMetric _GetGuildCountMetric;

    ...

    public MyService(
    ILogger<MyService> logger,
    IAccelByteServiceProvider abProvider,
    Tracer tracer,
    GetGuildCountMetric getGuildCountMetric)
    {
    ...

    _GetGuildCountMetric = getGuildCountMetric;
    }

    ...
    }
  4. GetGuildProgress関数が呼び出されるたびに、メトリクスカウンターをインクリメントします。

    _GetGuildCountMetric.Increment("GET", context.Method);

Grafanaでメトリクスを確認する​

  1. Admin Portalの該当Extendアプリの詳細ページにある Open Grafana ボタンをクリックして、Grafanaにアクセスします。

    Open Grafana button

  2. Grafana内で Explore メニューをクリックします。

    Grafana Explore menu

  3. メトリクスデータをロードするデータソースを選択します。

    Admin Portalでのアカウント権限に応じて、選択できるPrometheusデータソースは2種類あります。すべてのネームスペースにアクセスできる場合(スーパー管理者)は、metricsデータソース(ネームスペース横断データ)を選択できます。特定のネームスペースのみにアクセスできる場合は、prom-<namespace>.*データソース(ネームスペース単位のデータ)のみを選択できます。

    Explore metrics cross-namespace
    ネームスペース横断データ
    Explore metrics per-namespace
    ネームスペース単位のデータ
  4. 必要に応じて複数のクエリを追加または削除します。データソースを選択したら、Add queryボタンをクリックします。また、GrafanaではQuery historyボタンをクリックすることでクエリ履歴を確認できます。

    Add or remove queries

  5. カスタムメトリクスを選択するには、Select metricドロップダウンを使用してカスタムメトリクスを検索します。また、Operationsボタンをクリックして特定の演算を適用することもできます。

    Select custom metric

    複雑なクエリを使用する場合は、Codeタブをクリックすると、高度な計算のためにPrometheusクエリを使用できます。

    Complex metrics query

    以下の画像の手順に従ってください。まず、データソースを選択します(1)。次に、クエリの時間範囲を選択します(2)。続いて、MetricドロップダウンボックスとLabelフィルターから値を選択します(3)。必要に応じて、メトリクスに特定の演算を適用します(4)。最後に、Run queryボタンをクリックしてメトリクスを表示します。

    Complex metrics query details

重要な注意事項​

  1. シリーズとは、メトリクス名とラベルのキーと値のペアの組み合わせによって一意に定義されるものです。メトリクス名とラベルのキーと値のペアの組み合わせが異なれば、それぞれ別のシリーズとして扱われます。 例:

    ab_count_get_guild_progress{method="GET"} 1 -> series_count=1
    ab_count_get_guild_progress{method="GET"} 5 -> series_count=1
    ab_count_get_guild_progress{method="POST"} 5 -> series_count=2
    ab_sum_get_guild_progress{method="GET", service="guild"} 1 -> series_count=3
  2. カスタムメトリクスは、環境ごとに最大1,000のアクティブシリーズに制限されています。この上限に達すると、新しいシリーズをプッシュできなくなります。

    a. 可観測性プラットフォームが継続的にスクレイプして受信しているメトリクスは、アクティブシリーズとみなされます。

    b. 可観測性プラットフォームが20分間スクレイプも受信もしなかったメトリクスは、非アクティブシリーズとみなされます。

  3. 現在、メトリクスを表示するためのカスタムダッシュボードを作成することはできません。

  4. カスタムメトリクスを含むExtendアプリのメトリクスは、ポート8080の/metricsエンドポイントで公開されます。この設定は、Extendアプリテンプレートを使用してExtendアプリを作成する際にデフォルトで設定されます。

  5. 以下の表は、カスタムメトリクスで使用できない予約済みラベルを示しています。これらのいずれかが使用された場合、事前定義された値に置き換えられます。

    ラベルキー値説明
    environment_name${env_name}環境識別子名
    productextendプロダクト識別子名: extend
    scenario${extend_app_type}Extendアプリのタイプ: function-override、event-handler、またはservice-extension
    union_namespace${publisher_name}パブリッシャー名
    game_namespace${game_namespace}Extendアプリのネームスペース
    app_name${app_name}Extendアプリ名
    jobmetric-services/extend-metrics事前定義されたジョブ名
    instanceextend-metric-instance事前定義されたインスタンス値
Tips

デフォルトのメトリクスと区別しやすくするために、カスタムメトリクスに一意のプレフィックスを付けてください。例えば、ab_count_get_guild_progressでは、ab_が一意の識別子プレフィックスとして機能します。