このドキュメントでは、OpenTelemetry を使用して、オブザーバビリティ コードをアプリケーションに追加する方法について説明します。OpenTelemetry は、一般的なフレームワークのテレメトリーを生成する計測ライブラリを備えています。アプリ固有の動作を測定するカスタム計測を追加することで、ライブラリで生成されたテレメトリーを拡張できます。
このドキュメントで説明する原則とコンセプトは、OpenTelemetry でサポートされているすべての言語で記述されたアプリに適用できます。計測について詳しくは、次のドキュメントをご覧ください。
サンプルコードは GitHub で入手できます。これは、Go でトレースと指標を生成するで説明されている Go アプリと同じものです。サンプル全体を表示するには、more_vert(その他)をクリックして、[GitHub で表示] を選択します。
始める前に
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
カスタム トレースを作成する
アプリケーションからカスタム トレースを生成するには、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 エクスポータの構成に基づいてアプリケーションからエクスポートされます。