マイクロサービス オブザーバビリティを設定する

このドキュメントでは、マイクロサービス オブザーバビリティ プラグインの設定、gRPC アプリケーションの計測、Cloud Monitoring、Cloud Logging、Cloud Trace からの情報の取得に必要な情報について説明します。

始める前に

マイクロサービス オブザーバビリティは、Microservices API を有効にすることで、Cloud Monitoring、Cloud Logging、Cloud Trace へのアクセスが許可されている Deployment に対応しています。このガイドでは、Compute Engine のサンプルを使用してマイクロサービス オブザーバビリティの設定例を紹介します。

大まかな流れは次のとおりです。

  1. サービス デベロッパーは、マイクロサービス オブザーバビリティ プラグインを有効にして制御できます。
  2. サービス オペレータは、収集したデータをさまざまな方法で使用できます。

gRPC リポジトリ(C++、Go、Java)には、マイクロサービス オブザーバビリティを示す例が含まれています。

オブザーバビリティを構成する前に、次のタスクを完了します。

  1. マイクロサービス オブザーバビリティの概要を確認します。
  2. 既存のプロジェクトがあることを確認します。ない場合は、新しいプロジェクトを作成します。
  3. 既存のサービス アカウントを持っていることを確認します。ない場合は、新しいサービス アカウントを作成してください。
  4. 2 つのサポートされている環境変数を確認し、使用する環境変数を決めて、環境変数に必要な値を決定します。
  5. Microservices API を有効にします

構成の環境変数を選択する

オブザーバビリティ プラグイン用にアプリケーションを計測するで説明されているマイクロサービス オブザーバビリティ プラグインを有効にする場合は、環境変数を使用して構成情報を指定する必要があります。デフォルトでは、オブザーバビリティ機能は有効になっていません。環境変数は、gRPC アプリケーションまたはワークロードが実行されている VM またはコンテナで設定します。

環境変数は次のとおりです。

  • GRPC_GCP_OBSERVABILITY_CONFIG_FILE: 値は JSON エンコードの構成ファイルを指すパスです。
  • GRPC_GCP_OBSERVABILITY_CONFIG: 値は JSON エンコードの構成ファイルの本文です。

両方の環境変数を設定した場合、GRPC_GCP_OBSERVABILITY_CONFIG よりも GRPC_GCP_OBSERVABILITY_CONFIG_FILE が優先されます。

構成を適用するには、gRPC アプリケーションを再起動する必要があります。Google Cloud コンソールで環境変数の値を設定または表示することはできません。

この構成では、ロギング、トレース、指標のデータのアップロード先となる宛先プロジェクトを設定できます。project_id フィールドにプロジェクト ID を設定します。

構成データの情報を使用して、選択した環境変数に値を設定します。

Microservices API を有効にする

Google Cloud CLI または Google Cloud コンソールを使用して、プロジェクトで Microservices API を有効にできます。Microservices API を有効にすると、Cloud Logging API、Cloud Monitoring API、Cloud Trace API が自動的に有効になります。

API を有効にするには:

gcloud services enable microservices.googleapis.com

サービス アカウントの権限を設定する

デフォルト以外のサービス アカウントを使用している場合は、サービス アカウントに必要な権限を付与します。次の値を設定します。

  • PROJECT_ID: ご自分のプロジェクト ID に置き換えます。
  • SERVICE_ACCOUNT_NAME: ご自分のプロジェクトのサービス アカウント名に置き換えます。
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID> \
  --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/cloudtrace.agent

オブザーバビリティ プラグイン用にアプリケーションを計測する

アプリケーションを計測してマイクロサービス オブザーバビリティ プラグインを使用できるようにするには、C++、Java、または Go で次の処理を行います。

C++

gRPC C++ v1.54 では、マイクロサービス オブザーバビリティで C++ を使用できます。サンプル リポジトリが GitHub にあります。

ビルドの変更

オブザーバビリティのサポートは、Bazel ビルドシステムでのみ使用できます。ターゲット grpcpp_gcp_observability を依存関係として追加します。

必要なコードの変更

マイクロサービス オブザーバビリティを有効にするには、追加の依存関係(オブザーバビリティ モジュール)が必要です。また、既存の gRPC クライアント、サーバー、またはその両方で次のコード変更を行う必要があります。

#include <grpcpp/ext/gcp_observability.h>

int main(int argc, char** argv) {
  auto observability = grpc::GcpObservability::Init();
  assert(observability.ok());
  …
  // Observability data flushed when object goes out of scope
}

gRPC オペレーション(チャネル、サーバー、認証情報の作成など)を行う前に、次の呼び出しを行います。

grpc::GcpObservability::Init();

absl::StatusOr<GcpObservability> が返されます。これは保存する必要があります。ステータスは、オブザーバビリティが正常に初期化されたかどうかを判断するのに役立ちます。付属の GcpObservability オブジェクトはオブザーバビリティの存続期間を制御します。オブザーバビリティ データは対象範囲外になると、自動的に閉じてフラッシュします。

Go

マイクロサービス オブザーバビリティ プラグインは、gRPC Go バージョン v1.54.0 以降でサポートされています。サンプル リポジトリが GitHub にあります。

Go モジュールでマイクロサービス オブザーバビリティを有効にするには、オブザーバビリティ モジュールと次のコードが必要です。

import "google.golang.org/grpc/gcp/observability"

func main() {
       ctx, cancel := context.WithTimeout(context.Background(), time.Second)
       defer cancel()
       if err := observability.Start(ctx); err != nil {
              log.Warning("Unable to start gRPC observability:", err)
       }
       defer observability.End()
       …
}

observability.Start 呼び出しは、環境変数から構成を解析し、それに応じてエクスポータを作成します。さらに、呼び出し後に作成されたクライアント接続とサーバーに収集ロジックを挿入します。遅延 observability.End 呼び出しにより、リソースがクリーンアップされ、アプリケーションを閉じる前にバッファ内のデータがフラッシュされます。

アプリケーション コードを更新したら、次のコマンドを実行して go.mod ファイルを更新します。

go mod tidy

Java

Java アプリケーションでマイクロサービス オブザーバビリティを使用するには、ビルドを変更して grpc-gcp-observability アーティファクトを追加します。gRPC バージョン 1.54.1 以降を使用します。

[Gradle] セクションと [Maven build tool] セクションのビルド スニペットで、grpcVersion が値 1.54.1 に設定されています。

サンプル リポジトリが GitHub にあります。

必要な Java コードの変更

Java アプリケーションをマイクロサービス オブザーバビリティで正しく計測するには、次のコードを main() に追加します。

...
import io.grpc.gcp.observability.GcpObservability;
...

// Main application class
...

public static void main(String[] args) {
...
   // call GcpObservability.grpcInit() to initialize & get observability
   GcpObservability observability = GcpObservability.grpcInit();

...
   // call close() on the observability instance to shutdown observability
   observability.close();
...
}

gRPC チャネルまたはサーバーを作成する前に、GcpObservability.grpcInit() を呼び出す必要があります。GcpObservability.grpcInit() 関数は、マイクロサービス オブザーバビリティ構成を読み取り、作成された各チャネルとサーバーのロギング、指標、トレース機能に必要なグローバル インターセプターとトレーサーを設定します。GcpObservability.grpcInit() はスレッドセーフで、1 回だけ呼び出す必要があります。GcpObservability のインスタンスを返します。これは、close() の呼び出しを後で行うために保存する必要があります。

GcpObservability.close() はリソースの割り当てを解除します。それ以降に作成されたチャネルまたはサーバーはロギングを行いません。

GcpObservabilityjava.lang.AutoCloseable を実装します。これは、次のように try-with-resource を使用すると自動的に終了します。

...
import io.grpc.gcp.observability.GcpObservability;
...

// Main application class
...

public static void main(String[] args) {
...
   // call GcpObservability.grpcInit() to initialize & get observability
   try (GcpObservability observability = GcpObservability.grpcInit()) {

...
   } // observability.close() called implicitly
...
}

Gradle ビルドツールを使用する

Gradle ビルドツールを使用する場合は、以下を含めます。

def grpcVersion = '1.54.1'

...

dependencies {
...
   implementation "io.grpc:grpc-gcp-observability:${grpcVersion}"
...
}

Maven ビルドツール(pom.xml)を使用する

Maven ビルドツールを使用する場合は、以下を含めます。

<properties>
...
  <grpc.version>1.54.1</grpc.version>
...
</properties>

...

<dependencies>
...
 <dependency>
   <groupId>io.grpc</groupId>
   <artifactId>grpc-gcp-observability</artifactId>
   <version>${grpc.version}</version>
 </dependency>
...
</dependencies>

指標、トレース、ロギングデータの収集を有効にする

以降のセクションでは、構成でデータ収集を有効にする手順と、環境変数で構成情報を示す例について説明します。

指標を有効にする

指標を有効にするには、構成に cloud_monitoring オブジェクトを追加して、値を {} に設定します。

指標の詳細については、指標の定義をご覧ください。

トレースを有効にする

サービス間のトレースを有効にする場合は、アップストリームから受信した(または単独で開始した)トレース コンテキストをダウンストリームに伝播することをサービスでサポートする必要があります。

トレースを有効にするには、次の操作を行います。

  1. 構成に cloud_trace オブジェクトを追加します。
  2. cloud_trace.sampling_rate には、アプリケーションが新しいトレースを開始する可能性を設定します。
    • たとえば、1.0 に設定すると、すべての RPC がトレースされます。
    • 0.0 は、新しいトレースを開始しないことを意味します。
    • 0.5 に設定すると、RPC の 50% がランダムにトレースされます。

アップストリームでサンプリングが決定した場合、サンプリング レートの設定に関係なく、サービスはスパンをアップロードします。

トレースの詳細については、トレースの定義をご覧ください。

ロギングを有効にする

ロギングを有効にするには、次の操作を行います。

  1. 構成に cloud_logging オブジェクトを追加します。
  2. client_rpc_eventsserver_rpc_events のいずれか、または両方にパターンを追加して、トランスポート レベルのイベントログを生成する一連のサービスとメソッドを指定します。また、ヘッダーとメッセージに記録するバイト数も指定します。

ロギングの詳細については、ログレコードの定義をご覧ください。

環境変数の例

次の例では、環境変数 GRPC_GCP_OBSERVABILITY_CONFIG にオブザーバビリティ変数を設定します。

export GRPC_GCP_OBSERVABILITY_CONFIG='{
     "project_id": "your-project-here",
     "cloud_logging": {
         "client_rpc_events": [
         {
             "methods": ["google.pubsub.v1.Subscriber/Acknowledge", "google.pubsub.v1.Publisher/CreateTopic"],
             "exclude": true
         },
         {
             "methods": ["google.pubsub.v1.Subscriber/*", "google.pubsub.v1.Publisher/*"],
             "max_metadata_bytes": 4096,
             "max_message_bytes": 4096
         }],
         "server_rpc_events": [{
             "methods": ["*"],
             "max_metadata_bytes": 4096,
             "max_message_bytes": 4096
         }],
     },
     "cloud_monitoring": {},
     "cloud_trace": {
         "sampling_rate": 1.00
     },
     "labels": {
         "SOURCE_VERSION": "J2e1Cf",
         "SERVICE_NAME": "payment-service-1Cf",
         "DATA_CENTER": "us-west1-a"
     }
}'

オブザーバビリティの例を作成する

次の手順で Compute Engine VM インスタンスを作成して接続し、オブザーバビリティの例を設定します。

  1. VM インスタンスを作成します。

    gcloud compute instances create grpc-observability-vm \
      --image-family=debian-11 \
      --image-project=debian-cloud \
      --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    
  2. VM インスタンスに接続します:

    gcloud compute ssh --project=PROJECT_ID grpc-observability-vm
    

gRPC アプリケーションの言語に応じて、Java、C++、Go の手順に進みます。

Java

  1. VM インスタンスに接続したら、Java 8 以降がインストールされていることを確認します。

    sudo apt update
    sudo apt upgrade
    sudo apt install git
    sudo apt-get install -y openjdk-11-jdk-headless
    
  2. grpc-java リポジトリのクローンを作成します。

    export EXAMPLES_VERSION=v1.54.1
    git clone -b $EXAMPLES_VERSION --single-branch --depth=1 \
    https://github.com/grpc/grpc-java.git
    
  3. ディレクトリの例に移動します。

    cd grpc-java/examples/example-gcp-observability
    
  4. サンプル ディレクトリで README ファイルを開き、ファイルの指示に従います。

  5. 別のターミナル ウィンドウを開くよう指示された場合は、次のコマンドを実行します。

    gcloud compute ssh --project=PROJECT_ID grpc-observability-vm
    

C++

  1. VM インスタンスに接続したら、ターミナル ウィンドウで hello-world サーバー バイナリを実行します。

    sudo apt-get update -y
    sudo apt-get install -y git build-essential clang
    git clone -b v1.54.0 https://github.com/grpc/grpc.git --depth=1
    cd grpc
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/server_config.json"
    tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_server
    
  2. 別のターミナル ウィンドウで SSH を使用して VM に再度接続し、次のコマンドを実行して hello-world クライアント バイナリを実行します。

    cd grpc
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/client_config.json"
    tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_client
    

Go

  1. Go がインストールされていることを確認します。

    sudo apt-get install -y git
    sudo apt install wget
    wget https://go.dev/dl/go1.20.2.linux-amd64.tar.gz
    sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf \
    go1.20.2.linux-amd64.tar.gz
    export PATH=$PATH:/usr/local/go/bin
    
  2. gRPC-Go サンプルのクローンを作成します。

    git clone https://github.com/grpc/grpc-go.git
    cd grpc-go/
    git checkout -b run-observability-example
    875c97a94dca8093bf01ff2fef490fbdd576373d
    
  3. gRPC-Go ディレクトリのクローンに移動します。

    cd examples/features/observability
    
  4. サーバーを実行します。

    export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./server/serverConfig.json
    go run ./server/main.go
    
  5. 別のターミナル ウィンドウで、次のコマンドを実行します。

    export PATH=$PATH:/usr/local/go/bin
    cd grpc-go/examples/features/observability
    export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./client/clientConfig.json
    go run ./client/main.go
    

トレース、指標、ログエントリを表示する

トレース、指標、ログエントリを表示するには、このセクションで説明する操作を行います。

Cloud Trace でトレースを表示する

サンプルを設定するか、ワークロードを計測すると、gRPC クライアントと gRPC サーバーによって生成されたトレースが最近のトレースとして Google Cloud コンソールに表示されます。

マイクロサービス オブザーバビリティのトレースリスト。
マイクロサービス オブザーバビリティのトレースリスト(クリックして拡大)

トレースのログを表示する

ロギングとトレースの両方を有効にすると、Cloud Trace のウォーターフォール グラフの横またはログ エクスプローラに、トレースのログエントリが表示されます。

ダッシュボードで指標を表示する

マイクロサービス オブザーバビリティは、指標の定義で定義された指標用に、マイクロサービス(gRPC)モニタリングというモニタリング ダッシュボードを提供します。このダッシュボードは、Microservices API が有効になっている場合にのみ Google Cloud コンソールに表示されます。Google Cloud コンソールで Service Usage API を呼び出し、プロジェクトで Microservices API が有効になっているかどうかを確認します。ダッシュボードを表示するには、ユーザーに serviceusage.services.list 権限が必要です。

マイクロサービス(gRPC)モニタリング ダッシュボードは Google Cloud のダッシュボードであり、直接変更することはできません。ダッシュボードをカスタマイズするには、ダッシュボードをカスタム ダッシュボードにコピーする必要があります。グラフの追加、削除、並べ替えなどを行い、カスタム ダッシュボードを更新できます。

Metrics Explorer で指標を表示する

gRPC サンプルを設定するかワークロードを計測すると、gRPC クライアントと gRPC サーバーによって生成された指標が Google Cloud コンソールに表示されます。

指標を表示してグラフ化するには、Metrics Explorer 使用時の指標の選択の手順に沿って操作します。

ログ エクスプローラでログエントリを検査する

推奨クエリは、取り込まれたログに基づいて Google Cloud が一連のクエリを提案する Cloud Logging 機能です。クリックすると、準備されたフィルタを使用できます。

ログ エクスプローラに表示された推奨クエリ
ログ エクスプローラに表示された推奨クエリ(クリックして拡大)

推奨クエリに一致するログエントリが Cloud Logging に表示された後、約 6 分後に新しいクエリが表示されることがあります。ほとんどの場合、新しい推奨クエリがすぐに表示されます。過去 15 分間に推奨事項と一致したログエントリがある場合、推奨クエリは引き続き表示されます。過去 15 分間に一致したログエントリがなくなるまで、引き続き提案として表示されます。

カスタムクエリを作成できます。手順については、Logging のクエリ言語ガイドをご覧ください。たとえば、ログ エクスプローラの [クエリ] ペインで、次のコードを使用してすべての gRPC デバッグログを表示できます。

log_id("microservices.googleapis.com/observability/grpc")

gRPC ログレコード内のすべてのフィールドをフィルタリングに使用できます。ログエントリの例を次に示します。

{
  "insertId": "17kh8vafzuruci",
  "jsonPayload": {
    "authority": "10.84.1.15:50051",
    "sequenceId": "6",
    "serviceName": "helloworld.Greeter",
    "peer": {
      "ipPort": 50051,
      "address": "10.84.1.10",
      "type": "IPV4"
    },
    "callId": "d9577780-c608-4bff-9e12-4d9cdea6b298",
    "type": "SERVER_TRAILER",
    "methodName": "SayHello",
    "payload": {},
    "logger": "CLIENT"
  },
  "resource": {
    "type": "k8s_container",
    "labels": {
      "pod_name": "grpc-client-deployment-155-6967959544-x8ndr",
      "container_name": "grpc-client-container-155",
      "cluster_name": "o11y-cluster",
      "namespace_name": "grpc-client-namespace-155",
      "location": "us-west1-b",
      "project_id": "grpc-greeter"
    }
  },
  "timestamp": "2023-04-05T23:33:41.718523Z",
  "severity": "DEBUG",
  "labels": {
    "environment": "example-client"
  },
  "logName": "projects/grpc-greeter/logs/microservices.googleapis.com%2Fobservability%2Fgrpc",
  "receiveTimestamp": "2023-04-05T23:33:42.712682457Z"
}

推奨クエリ

マイクロサービス オブザーバビリティでは、Cloud Logging に次の推奨クエリが提供されます。

gRPC のヘッダーまたはトレーラー ログレコード

このクエリは RPC の基本ビューを提供し、ピア情報と RPC 結果を生成します。

log_id("microservices.googleapis.com/observability/grpc") AND
jsonPayload.type=("CLIENT_HEADER" OR "SERVER_TRAILER")

gRPC 呼び出しの失敗

このクエリは、OK 以外のステータスで終わる RPC を見つけます。

log_id("microservices.googleapis.com/observability/grpc") AND
jsonPayload.type="SERVER_TRAILER" AND
jsonPayload.payload.statusCode!="OK"

キャンセルされたまたは期限を超過した gRPC のログレコード

gRPC の過剰なキャンセルや期限超過から、パフォーマンスの低下や予期しないアプリケーションの動作に関して有用な情報が得られる場合があります。

log_id("microservices.googleapis.com/observability/grpc") AND
((jsonPayload.type="SERVER_TRAILER" AND jsonPayload.payload.statusCode=("CANCELLED" OR "DEADLINE_EXCEEDED")) OR (jsonPayload.type="CANCEL"))

ログとトレースを使用したトラブルシューティング

不正な動作を示す RPC イベントがある場合は、イベントの callid で確認できます。以下のクエリを使用して、単一 RPC かストリーミング RPC かにかかわらず、1 つの RPC で発生したすべてのイベントを表示します。例として、上記のログエントリが使用されています。

log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.callid="a358c7b80-3548-4bc8-a33f-b93ba1514904"

問題の範囲を決定するには、同じメソッドまたはロケーションのすべての RPC イベントを見つけます。次のクエリは、Greeter サービスを例として使用し、特定の RPC メソッドに関連するすべてのデバッグログを表示します。

log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.serviceName="helloworld.Greeter"
jsonPayload.methodName="SayHello"

特定のステータス コードの失敗した RPC を確認するには、フィルタ条件の一つとしてステータス コードを追加します。次のクエリは、OK 以外のステータスで終わるトレーラー イベントを表示します。

log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.payload.statusCode!="OK"
クエリ結果: 期限超過のステータス コード。
クエリ結果: 期限超過のステータス コード(クリックして拡大)

オブザーバビリティのオプション

マイクロサービス オブザーバビリティには次のオプションがあります。

カスタムラベルを定義する

カスタムラベルを定義して、ユーザー提供の情報をオブザーバビリティ データに追加できます。カスタムラベルは Key-Value ペアで構成されます。各 Key-Value ペアは、トレースデータ(スパンラベルとして)、指標データ(指標タグとして)、ロギングデータ(ログエントリ ラベルとして)に関連付けられます。

構成で、labels フィールドに Key-Value ペアのリストを使用してカスタムラベルを定義します。カスタムラベルのキーと値はすべて STRING 型です。この実装では、構成を読み取り、Key-Value ペアごとに個別のラベルを作成して、そのラベルをオブザーバビリティ データに関連付けます。

たとえば、ラベルの定義は次のようになります。

"labels": {
    "DATACENTER": "SAN_JOSE_DC",
    "APP_ID": "24512"
  }

各ログエントリには次のラベルがあります。

{
   "DATACENTER" : "SAN_JOSE_DC"
   "APP_ID" : "24512"
}
ログエントリ内のラベルのクエリ。
ログエントリのラベルのクエリ(クリックして拡大)
カスタムラベルとリソースラベルを示す折れ線グラフ。
カスタムラベルとリソースラベルを示す折れ線グラフ(クリックして拡大)

ペイロード ロギングを有効にする

ペイロード ロギングを有効にするには、ワークロードに提供する環境変数を使用します。HelloWorld メッセージとヘッダーのペイロード ロギングを有効にするには、gRPC の例で構成ファイル gcp_observability_server_config.jsongcp_observability_client_config.json、またはその両方を更新します。

{
   "cloud_monitoring":{
   },
   "cloud_trace":{
      "sampling_rate":1.0
   },
   "cloud_logging":{
      "client_rpc_events":[
         {
            "methods":[
               "helloworld.Greeter/*"
            ],
            "max_metadata_bytes":4096,
            "max_message_bytes":4096
         }
      ],
      "server_rpc_events":[
         {
            "methods":[
               "helloworld.Greeter/*"
            ],
            "max_metadata_bytes":4096,
            "max_message_bytes":4096
         }
      ]
   }
}

プロジェクト間のオブザーバビリティを設定する

環境変数 GRPC_GCP_OBSERVABILITY_CONFIG に設定された構成を使用して、宛先プロジェクトを明示的に設定できます。プロジェクトをまたぐオブザーバビリティを使用するには、適切なサービス アカウントの権限を設定する必要があります。宛先プロジェクト ID が core-platform-stats の場合、次の構成例を使用してプロジェクト間のオブザーバビリティを設定できます。

{
   "project_id":"core-platform-stats",
   "cloud_monitoring":{
   },
   "cloud_trace":{
      "sampling_rate":1.0
   },
   "cloud_logging":{
      "client_rpc_events":[
         {
            "methods":[
               "helloworld.Greeter/*"
            ]
         }
      ],
      "server_rpc_events":[
         {
            "methods":[
               "helloworld.Greeter/*"
            ]
         }
      ]
   }
}

ログの量を見積もる

このセクションでは、ログ取り込み量を見積もるために役立つ情報を提供します。サービスの RPC イベントに登録する前に見積もりを行うことができます。

項目 詳細
OK 単一呼び出しで生成されるイベント 6 つのイベント

OK 単一呼び出し RPC は、クライアントまたはサーバーに対して次の 6 つのイベントを生成します。

  • CLIENT_HEADER
  • SERVER_HEADER
  • CLIENT_MESSAGE
  • SERVER_MESSAGE
  • CLIENT_HALF_CLOSE
  • SERVER_TRAILER
ログエントリの平均サイズ デフォルトで 500 バイト

ログエントリは 1 つの RPC イベントにマッピングされます。RPC イベントには、そのイベント、リソースラベル、カスタムラベルの詳細なデバッグ情報が含まれています。
ペイロード ロギングのサイズ デフォルトは 0 です。

最大ペイロード サイズは、オブザーバビリティ構成で構成できます。デフォルトでは、ペイロードはログに記録されません。
カスタムラベルのサイズ デフォルトは 0 です。構成できます。

カスタムラベルは、環境変数を使用してアプリケーションに提供されます。指定しない場合、カスタムラベルは作成されません。

1 か月あたりのログ取り込みの合計サイズの見積もり式:

Monthly Log Ingestion = QPS * 6 * (500B + Payload Logging Size + Custom Labels Size) * 2592000

たとえば、単一呼び出しメソッドの QPS が 1 で、追加機能が有効になっていない場合、ログ取り込みの概算サイズは約 7.24 GiB になります。

次のステップ