Splunk Observability Cloud 用の Go インストルメンテーションを設定する

Splunk Distribution of OpenTelemetry Go を設定することで、トレースとログの関連付け、エクスポーターの有効化など、ほとんどのインストルメンテーションニーズに対応できます。

Splunk Distribution of OpenTelemetry Go は、インストルメンテーションのニーズに合わせて設定できます。

以下のセクションでは、Splunk Distribution of OpenTelemetry Go 独自の新機能を有効にするオプションを含め、Go インストルメンテーションを構成するために利用可能なすべての設定について説明します。

設定方法

インストルメンテーションの設定は2つの方法で変更できます:

  • 環境変数を設定します。例:

    Linux
    export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
    Windows PowerShell
    $env:OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
    Go
    // Before running distro.Run()
    os.Setenv("OTEL_EXPORTER_OTLP_ENDPOINT", "http://localhost:4317")

インストルメンテーションを構成するには、環境変数を使用します。コード内でオプションを指定して、既存の環境変数をオーバーライドします。

一般設定

以下の設定は、Splunk Distribution of OpenTelemetry Go 固有のものです:

環境変数

説明

SPLUNK_ACCESS_TOKEN

エクスポータがデータを Splunk Observability Cloud に直接送信するための Splunk 認証トークン。デフォルトでは設定されていません。Splunk Observability Cloud の取り込みエンドポイントにデータを送信する必要がある場合を除き、必要ありません。「Splunk Observability Cloud を使用して認証トークンを作成および管理する」を参照してください。

SPLUNK_REALM

組織のレルムの名前(us0 など)。レルムを設定すると、テレメトリは Splunk Distribution of OpenTelemetry Collector をバイパスして、Splunk Observability Cloud のインジェストエンドポイントに直接送信されます。この設定は、メトリクスとトレースにのみ適用され、ログに対しては機能しません。

SPLUNK_TRACE_RESPONSE_HEADER_ENABLED

net/http インストルメンテーション パッケージを使用して、HTTP レスポンスヘッダーにサーバートレース情報を追加できます。詳細については、「サーバートレース情報」を参照してください。デフォルト値は true です。

OTEL_LOG_LEVEL

インストルメンテーションログメッセージのロギングレベルを設定します。可能な値は、errorwarninfodebug です。デフォルト値は info です。WithLogger を使用してロガーを変更した場合、ログレベルが適用されない場合があります。

トレース設定

以下の設定は、トレースの制限と属性を制御します:

環境変数

説明

OTEL_SERVICE_NAME

インストルメンテーションしているサービスまたはアプリケーションの名前。OTEL_RESOURCE_ATTRIBUTES 変数で定義されたサービス名よりも優先されます。

OTEL_RESOURCE_ATTRIBUTES

報告されたスパンごとに追加されるリソース属性のカンマ区切りリスト。たとえば、key1=val1,key2=val2 のようになります。

OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT

スパンごとの属性の最大数。デフォルト値は [無制限] です。

OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT

イベントあたりの属性の最大数。デフォルト値は [無制限] です。

OTEL_LINK_ATTRIBUTE_COUNT_LIMIT

リンクごとの属性の最大数。デフォルト値は [無制限] です。

OTEL_SPAN_EVENT_COUNT_LIMIT

スパンあたりの最大イベント数。デフォルト値は [無制限] です。

OTEL_SPAN_LINK_COUNT_LIMIT

スパンあたりの最大リンク数。デフォルト値は 1000 です。

OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT

スパン属性値の文字列の最大長。上限より大きい値は切り捨てられます。デフォルト値は 12000 です。

エクスポーターの設定

以下の設定は、トレースエクスポーターとそのエンドポイントをコントロールします:

環境変数

説明

OTEL_TRACES_EXPORTER

使用するトレースエクスポータ。デフォルト値は otlp です。許容値は otlp および none です。 none を設定すると、トレースエクスポートが無効になります。

OTEL_METRICS_EXPORTER

使用するメトリクスエクスポータ。デフォルト値は otlp です。許容値は otlp および none です。 none を設定すると、メトリクスのエクスポートが非アクティブになります。

OTEL_LOGS_EXPORTER使用するログエクスポータ。デフォルト値は none です。許容値は otlp および none です。 none を設定すると、ログエクスポートが無効になります。

OTEL_METRIC_EXPORT_INTERVAL

2 回のエクスポートの開始間隔(ミリ秒単位)。デフォルト値は 60000 です。

OTEL_METRIC_EXPORT_TIMEOUT

データのエクスポートに許容される最大時間(ミリ秒単位)。デフォルト値は 30000 です。

OTEL_EXPORTER_OTLP_ENDPOINT

OTLP エンドポイント。デフォルト値は http://localhost:4317 です。

OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

トレース用の OTLP エンドポイント。デフォルト値は http://localhost:4317 です。

OTEL_EXPORTER_OTLP_METRICS_ENDPOINT

OTLP エンドポイント。デフォルト値は http://localhost:4317 です。

OTEL_EXPORTER_OTLP_LOGS_ENDPOINTOTLP エンドポイント。デフォルト値は http://localhost:4317 です。

データを Splunk Observability Cloud に直接送信するには、「Splunk Observability Cloud にデータを直接送信する」を参照してください。

サンプラーの設定

以下の設定はトレースサンプリングをコントロールします:

環境変数

説明

OTEL_TRACES_SAMPLER

使用するサンプラー。デフォルト値は always_on です。サポートされる値は parentbased_always_onalways_offtraceidratioparentbased_always_onparentbased_always_offparentbased_traceidratio です。

TLS接続を設定する

デフォルトでは、エクスポータは TLS 接続を使用しません。TLS 接続を設定するには、コードに WithTLSConfig オプションを設定します。「設定方法」を参照してください。

バッチプロセッサーの設定

以下の設定は BatchSpanProcessor 構成をコントロールします:

環境変数

説明

OTEL_BSP_SCHEDULE_DELAY

連続する 2 つのエクスポート間の遅延(ミリ秒単位)。デフォルト値は 5000 です。

OTEL_BSP_EXPORT_TIMEOUT

データのエクスポートに許容される最大時間(ミリ秒単位)。デフォルト値は 30000 です。

OTEL_BSP_MAX_QUEUE_SIZE

最大キューサイズ。デフォルト値は 2048 です。

OTEL_BSP_MAX_EXPORT_BATCH_SIZE

最大バッチサイズ。デフォルト値は 512 です。

プロパゲータの構成

以下の設定はトレース伝搬をコントロールします:

環境変数

説明

OTEL_PROPAGATORS

使用するプロパゲータのカンマ区切りリスト。デフォルト値は tracecontext,baggage です。値をカンマ(,)で結合して、コンポジット TextMapPropagator を生成できます。

インストルメンテーションは以下のプロパゲーターをサポートしています:

  • tracecontext: W3Cトレースコンテキスト

  • baggage: W3C baggage

  • b3:B3シングルヘッダー形式

  • b3multi:B3マルチヘッダー形式

  • xray: AWS X-Ray

  • ottrace: OpenTracing

  • none: なし

また、otel.SetTextMapPropagator を使用してトレースプロパゲータを変更することもできます。例:

distro.Run()
// Change propagator after distro.Run() has been invoked
otel.SetTextMapPropagator(propagation.TraceContext{})

サーバートレース情報

モバイルアプリケーションやウェブアプリケーションからの Real User Monitoring(RUM)リクエストとサーバートレースデータを接続するには、HTTP インストルメンテーションパッケージをコードに追加します。例:

package main

import (
   "net/http"
   "github.com/signalfx/splunk-otel-go/distro" 
   "github.com/signalfx/splunk-otel-go/instrumentation/net/http/splunkhttp"
   "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
)

func main() {
   distro.Run()
   var handler http.Handler = http.HandlerFunc(
      func(w http.ResponseWriter, r *http.Request) {
         w.Write([]byte("Hello"))
      }
   )
   handler = splunkhttp.NewHandler(handler)
   handler = otelhttp.NewHandler(handler, "my-service")
   http.ListenAndServe(":9090", handler)
}

アプリケーション・インストルメンテーションは、HTTPレスポンスに以下のレスポンス・ヘッダーを追加します:

Access-Control-Expose-Headers: Server-Timing
Server-Timing: traceparent;desc="00-<serverTraceId>-<serverSpanId>-01"

Server-Timing ヘッダーには traceIdspanIdtraceparent 形式で含まれます。詳しくは、W3C Web サイトの Server-Timing と traceparent のドキュメントを参照してください。