このドキュメントでは、OpenTelemetry を使用して、オブザーバビリティ コードをアプリケーションに追加する方法について説明します。OpenTelemetry は、一般的なフレームワークのテレメトリーを生成する計測ライブラリを備えています。アプリ固有の動作を測定するカスタム計測を追加することで、ライブラリで生成されたテレメトリーを拡張できます。
このドキュメントで説明する原則とコンセプトは、OpenTelemetry でサポートされているすべての言語で記述されたアプリに適用できます。計測について詳しくは、次のドキュメントをご覧ください。
サンプルコードは GitHub で入手できます。これは、Go 計測サンプルで説明されている Go アプリと同じものです。サンプル全体を表示するには、more_vert(その他)をクリックして、[GitHub で表示] を選択します。
始める前に
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
Roles required to enable APIs
          To enable APIs, you need the Service Usage Admin IAM
          role (roles/serviceusage.serviceUsageAdmin), which
          contains the serviceusage.services.enable permission. Learn how to grant
          roles.
        
カスタム トレースを作成する
アプリケーションからカスタム トレースを生成するには、OpenTelemetry スパンを作成する計測コードを追加します。OpenTelemetry では、スパンはトレースの構成要素です。
スパンは次の手順で作成します。
- OpenTelemetry - Tracerを取得するようにアプリを変更します。OpenTelemetry では、トレーサーはスパンを作成します。次のコードに示すように、トレーサーを取得できます。- scopeNameで表されるトレーサー名は、生成されたトレースの計測スコープを識別します。
- tracerインスタンスを使用してスパンを作成します。次のコードサンプルでは、- computeSubrequests関数が呼び出されるたびにスパンを生成します。- 上記のコードサンプルでは、 - computeSubrequests関数によって生成されたスパンは、関数全体で行われた処理を表します。これは、関数の最初のステップで- tracer.Startを使用して新しいスパンが開始され、- span.End()の前の- deferキーワードによって、関数が終了する直前にスパンが終了するようにするためです。
カスタム指標を作成する
アプリケーションで指標を生成するには、アプリの実行中に取得した測定値を記録する計測コードを追加します。
指標を作成するには、次の手順を行います。
- OpenTelemetry - Meterを取得するようにアプリを変更します。OpenTelemetry では、メーターが指標を記録するための指標計測へのアクセス権を付与します。次のコードに示すように、メーターを取得できます。- メーター名( - scopeNameで表される)は、生成された指標の計測スコープを識別します。
- meterインスタンスを使用して、指標を記録できる計測を作成します。たとえば、次のコードでは、- meterを使用して OpenTelemetry ヒストグラムを作成しています。- 上記のコードによって、 - sleepHistogramという名前のヒストグラムが生成されます。
- sleepHistogramインスタンスを使用して、関数- randomSleepが呼び出されたときに決定されるスリープ時間を記録します。- これらの計測によって記録された指標は、OpenTelemetry エクスポータの構成に基づいてアプリケーションからエクスポートされます。