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 Observability Cloud に直接送信するための Splunk 認証トークン。デフォルトでは設定されていません。Splunk Observability Cloud の取り込みエンドポイントにデータを送信する必要がある場合を除き、必要ありません。「Splunk Observability Cloud を使用して認証トークンを作成および管理する」を参照してください。 |
|
|
組織のレルムの名前( |
|
|
|
|
|
インストルメンテーションログメッセージのロギングレベルを設定します。可能な値は、 |
トレース設定
以下の設定は、トレースの制限と属性を制御します:
|
環境変数 |
説明 |
|---|---|
|
|
インストルメンテーションしているサービスまたはアプリケーションの名前。 |
|
|
報告されたスパンごとに追加されるリソース属性のカンマ区切りリスト。たとえば、 |
|
|
スパンごとの属性の最大数。デフォルト値は [無制限] です。 |
|
|
イベントあたりの属性の最大数。デフォルト値は [無制限] です。 |
|
|
リンクごとの属性の最大数。デフォルト値は [無制限] です。 |
|
|
スパンあたりの最大イベント数。デフォルト値は [無制限] です。 |
|
|
スパンあたりの最大リンク数。デフォルト値は |
|
|
スパン属性値の文字列の最大長。上限より大きい値は切り捨てられます。デフォルト値は |
エクスポーターの設定
以下の設定は、トレースエクスポーターとそのエンドポイントをコントロールします:
|
環境変数 |
説明 |
|---|---|
|
|
使用するトレースエクスポータ。デフォルト値は |
|
|
使用するメトリクスエクスポータ。デフォルト値は |
OTEL_LOGS_EXPORTER | 使用するログエクスポータ。デフォルト値は none です。許容値は otlp および none です。 none を設定すると、ログエクスポートが無効になります。 |
|
|
2 回のエクスポートの開始間隔(ミリ秒単位)。デフォルト値は |
|
|
データのエクスポートに許容される最大時間(ミリ秒単位)。デフォルト値は |
|
|
OTLP エンドポイント。デフォルト値は |
|
|
トレース用の OTLP エンドポイント。デフォルト値は |
|
|
OTLP エンドポイント。デフォルト値は |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | OTLP エンドポイント。デフォルト値は http://localhost:4317 です。 |
データを Splunk Observability Cloud に直接送信するには、「Splunk Observability Cloud にデータを直接送信する」を参照してください。
サンプラーの設定
以下の設定はトレースサンプリングをコントロールします:
|
環境変数 |
説明 |
|---|---|
|
|
使用するサンプラー。デフォルト値は |
TLS接続を設定する
デフォルトでは、エクスポータは TLS 接続を使用しません。TLS 接続を設定するには、コードに WithTLSConfig オプションを設定します。「設定方法」を参照してください。
バッチプロセッサーの設定
以下の設定は BatchSpanProcessor 構成をコントロールします:
|
環境変数 |
説明 |
|---|---|
|
|
連続する 2 つのエクスポート間の遅延(ミリ秒単位)。デフォルト値は |
|
|
データのエクスポートに許容される最大時間(ミリ秒単位)。デフォルト値は |
|
|
最大キューサイズ。デフォルト値は |
|
|
最大バッチサイズ。デフォルト値は |
プロパゲータの構成
以下の設定はトレース伝搬をコントロールします:
|
環境変数 |
説明 |
|---|---|
|
|
使用するプロパゲータのカンマ区切りリスト。デフォルト値は |
インストルメンテーションは以下のプロパゲーターをサポートしています:
-
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 ヘッダーには traceId と spanId が traceparent 形式で含まれます。詳しくは、W3C Web サイトの Server-Timing と traceparent のドキュメントを参照してください。