Splunk Observability Cloud 用のカスタム Go インストルメンテーション
スパンにカスタム属性を追加する必要がある場合、またはスパンとメトリクスを手動で生成する必要がある場合は、Go アプリケーション用にカスタム インストルメンテーションを記述します。
Splunk Distribution of OpenTelemetry Go およびインストルメンテーションライブラリを使用したアプリケーションのインストルメントは、ほとんどのニーズに対応します。アプリケーション用カスタムインストルメンテーションの記述は、たとえば、スパンにカスタム属性を追加する必要がある場合、またはスパンとメトリクスを手動で生成する必要がある場合にのみ必要です。
カスタムトレースの作成
カスタムのスパンとトレースを作成するには、以下の手順に従ってください:
-
OpenTelemetry API をインポートします:
import "go.opentelemetry.io/otel" -
スパンのトレーサーを作成します:
tracer := otel.Tracer("ExampleService") -
スパンを作成するには、
context.Contextインスタンスのハンドルが必要です。タグを設定することもできます。例:func() { ctx, span := tracer.Start(ctx, "hello", trace.WithAttributes(attribute.String("foo", "bar"))) defer span.End() // your logic for "hello" span }()
詳細は、「OpenTelemetry Traces API のドキュメント」を参照してください。
カスタムメトリクスの作成
カウンター(デルタ集計の一時性を持つ合計)、累積カウンター(合計)、およびゲージのタイプのカスタムメトリクスを作成できます。
カスタムメトリクスを作成するには、以下の手順に従います:
-
OpenTelemetry API をインポートします:
import "go.opentelemetry.io/otel" -
メーターを作ります:
meter := otel.Meter("ExampleService") -
測定を行うインストルメンテーションを作成します:
counter, err := meter.Int64Counter( "business.requests.count", metric.WithUnit("{request}"), metric.WithDescription("The numer of business requests."), ) if err != nil { // handle error (e.g. log it) } -
測定を行います:
counter.Add(ctx, 1);
詳細は、「OpenTelemetry Metrics API のドキュメント」を参照してください。
OpenTelemetry Go インストルメンテーションの種類
次の表は、OpenTelemetry のインストルメンテーションタイプと Splunk Observability Cloud のメトリクスタイプの等価性を示しています。
|
OpenTelemetry Go |
Splunk Observability Cloud |
|---|---|
|
|
累積カウンター |
|
|
ヒストグラムタイプは、Splunk Observability Cloud で3つの別々のメトリクスを生成します:
バケットには、 |
|
|
累積カウンター |
|
|
ゲージ |
|
|
ゲージ |
|
|
ゲージ |
|
|
累積カウンター |
|
|
ヒストグラムタイプは、Splunk Observability Cloud で以下の個別のメトリクスを生成します:
バケットには、 |
|
|
累積カウンター |
|
|
ゲージ |
|
|
ゲージ |
|
|
ゲージ |