Docs » Splunk Observability Cloud でサポートされているインテグレーション » バックエンドアプリケーションをインストルメンテーションして、スパンを Splunk APM に送信する » Splunk Observability Cloud けに Go アプリケーションをインストルメンテーションする » Splunk Observability Cloud 用の Go インストルメンテーションを設定する

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

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

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

設定方法 🔗

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

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

    export 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

インストルメンテーションログ・メッセージのロギング・レベルを設定します。設定可能な値は、errorwarninfo 、および debug です。デフォルト値は 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

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

OTEL_SPAN_LINK_COUNT_LIMIT

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

OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT

span属性値の文字列の最大長。制限値より大きな値は切り捨てられます。デフォルト値は 12000 です。

エクスポーターの設定 🔗

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

環境変数

説明

OTEL_TRACES_EXPORTER

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

OTEL_METRICS_EXPORTER

使用するメトリクス・エクスポーター。デフォルト値は otlp です。使用可能な値は 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 です。

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{})

サーバートレース情報 🔗

モバイルアプリケーションやウェブアプリケーションからのリアルユーザーモニタリング(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ウェブサイトのServer-Timingとtraceparentのドキュメントを参照してください。

このページは 2023年12月20日 に最終更新されました。