Splunk Observability Cloud 用の Go インストルメンテーションを設定する 🔗
Splunk Distribution of OpenTelemetry Go は、インストルメンテーションのニーズに合わせて設定できます。
以下のセクションでは、Splunk Distribution of OpenTelemetry Go 独自の新機能を有効にするオプションを含め、Go インストルメンテーションを構成するために利用可能なすべての設定について説明します。
設定方法 🔗
インストルメンテーションの設定は2つの方法で変更できます:
環境変数を設定します。例:
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
$env:OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
// 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を使用して認証トークンを作成および管理する を参照してください。 |
|
組織のレルムの名前、例えば |
|
|
|
インストルメンテーションログ・メッセージのロギング・レベルを設定します。設定可能な値は、 |
トレース設定 🔗
以下の設定は、トレースの制限と属性を制御します:
環境変数 |
説明 |
---|---|
|
インストルメンテーションするサービスまたはアプリケーションの名前。 |
|
報告されたスパンごとに追加されるリソース属性のカンマ区切りリスト。例えば、 |
|
スパンごとの属性の最大数。デフォルト値は無制限です。 |
|
イベントごとの属性の最大数。デフォルト値は無制限です。 |
|
リンクあたりの最大属性数。デフォルト値は無制限です。 |
|
1スパンあたりの最大イベント数。デフォルト値は無制限です。 |
|
スパンあたりの最大リンク数。デフォルト値は |
|
span属性値の文字列の最大長。制限値より大きな値は切り捨てられます。デフォルト値は |
エクスポーターの設定 🔗
以下の設定は、トレースエクスポーターとそのエンドポイントをコントロールします:
環境変数 |
説明 |
---|---|
|
使用するトレースエクスポーター。デフォルト値は |
|
使用するメトリクス・エクスポーター。デフォルト値は |
|
2回のエクスポートの開始間隔をミリ秒単位で指定。デフォルト値は |
|
データのエクスポートに許容される最大時間(ミリ秒単位)。デフォルト値は |
|
OTLP エンドポイント。デフォルト値は |
|
トレース用の OTLP エンドポイント。デフォルト値は |
|
OTLP エンドポイント。デフォルト値は |
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{})
サーバートレース情報 🔗
モバイルアプリケーションやウェブアプリケーションからのリアルユーザーモニタリング(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ウェブサイトのServer-Timingとtraceparentのドキュメントを参照してください。