GoアプリケーションをSplunk Observability Cloudにインストルメンテーションする 🔗
注釈
アップストリームのOpenTelemetryのドキュメントに変更があったため、「自動インストルメンテーション」は「ゼロコードインストルメンテーション」に変更されました。詳細は Splunk Observability Cloud のインストルメンテーションの方法 を参照してください。
Splunk Distribution of OpenTelemetry Go は、Go アプリケーションやサービスをインストルメンテーションすることができます。開始するには、ガイド付きセットアップを使用するか、手動で手順に従ってください。
ガイド付きセットアップを使用してカスタマイズされた指示を生成する 🔗
環境とアプリケーションの基本的なインストールコマンドをすべて生成するには、Go ガイド付きセットアップを使用します。Goガイド付きセットアップにアクセスするには、以下の手順に従ってください:
Splunk Observability Cloud にログインします。
Go ガイド付きセットアップ を開きます。オプションで、ガイド付きセットアップに自分で移動することもできます:
ナビゲーションメニューで、
を選択します。Available integrations タブにアクセスするか、Deployed integrations タブで Add Integration を選択します。
インテグレーションフィルターメニューで、By Product を選択します。
APM 製品を選択します。
Go タイルを選択し、Go ガイドセットアップを開きます。
Splunk Distribution of OpenTelemetry Go を手動でインストールする 🔗
ガイド付きセットアップを使用しない場合は、以下の手順に従って手動で Splunk Distribution of OpenTelemetry Go をインストールしてください。
Goインストルメンテーションをインストールしてアクティブにする 🔗
以下の手順に従って、Goインストルメンテーションを使用してアプリケーションをインストルメンテーションしてください:
条件を満たしているか確認してください。Goインストルメンテーションの互換性と要件 を参照してください。
ディストリビューションをインストールします:
go get github.com/signalfx/splunk-otel-go/distro
OTEL_SERVICE_NAME
環境変数を設定します:export OTEL_SERVICE_NAME=<yourServiceName>
$env:OTEL_SERVICE_NAME=<yourServiceName>
(オプション) Splunk Distribution of OpenTelemetry Collectorが別のホストで実行されている場合は、エンドポイント URL を設定します:
export OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
$env:OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
(オプション)バージョンと環境名を設定します:
export OTEL_RESOURCE_ATTRIBUTES="service.version=<version>,deployment.environment=<environment>"
$env:OTEL_RESOURCE_ATTRIBUTES="service.version=<version>,deployment.environment=<environment>"
distro
パッケージを使用してインストルメンテーションを追加します。次の例は、基本的な関数をインストルメンテーションする方法を示しています。package main import ( "context" "github.com/signalfx/splunk-otel-go/distro" ) func main() { sdk, err := distro.Run() if err != nil { panic(err) } // Flush all spans before the application exits defer func() { if err := sdk.Shutdown(context.Background()); err != nil { panic(err) } }() // ...
追加インストルメンテーションを有効にします。詳細は サポートされているライブラリとフレームワーク を参照してください。
(オプション)APMとRUMのデータをリンクするには、HTTPインストルメンテーションを有効にします。サーバートレース情報 を参照してください。
APM にデータが表示されない場合は、Splunk Observability Cloud の Go インストルメンテーションのトラブルシューティング を参照してください。
注釈
スパンにカスタム属性を追加する必要がある場合、またはスパンを手動で生成する場合は、Go アプリケーションまたはサービスを手動でインストルメンテーションしてください。Splunk Observability Cloud 用のカスタム Go インストルメンテーション を参照してください。
GoインストルメンテーションをKubernetesまたはAzureにデプロイする 🔗
GoインストルメンテーションをKubernetesまたはAzureにデプロイするには、KubernetesダウンワードAPIを設定して、Kubernetesリソースに環境変数を公開します。
次の例では、.spec.template.spec.containers.env
セクションの下に OTel 設定を追加して、環境変数を公開するようにデプロイを更新する方法を示します:
apiVersion: apps/v1
kind: Deployment
spec:
selector:
matchLabels:
app: your-application
template:
spec:
containers:
- name: myapp
env:
- name: SPLUNK_OTEL_AGENT
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://$(SPLUNK_OTEL_AGENT):4317"
- name: OTEL_SERVICE_NAME
value: "<serviceName>"
- name: OTEL_RESOURCE_ATTRIBUTES
value: "deployment.environment=<environmentName>"
Splunk Observability Cloud に直接データを送信する 🔗
By default, all telemetry is sent to the local OpenTelemetry Collector before being forwarded to Splunk Observability Cloud. It is also possible to send data directly to Splunk Observability Cloud without using the OpenTelemetry Collector. .. note:: Sending data directly to Splunk Observability Cloud is supported only for traces and metrics. Logs cannot be sent using this method.
Splunk Observability Cloud に直接データを送信する必要がある場合は、以下の環境変数を設定します:
export SPLUNK_ACCESS_TOKEN=<access_token>
export SPLUNK_REALM=<realm>
$env:SPLUNK_ACCESS_TOKEN=<access_token>
$env:SPLUNK_REALM=<realm>
アクセストークンを取得するには、Splunk Observability Cloudを使用したユーザー APIアクセストークンの取得と管理 を参照してください。
Splunk レルムを見つけるには、レルムに関する注意事項 を参照してください。
インジェスト API エンドポイントの詳細については、APMのトレースの送信 および データポイントの送信 を参照してください。
ソースホストの指定 🔗
エージェントが使用するホストを上書きするには、環境変数 OTEL_RESOURCE_ATTRIBUTES
を使用して、ホストの名前を希望するソースに設定します:
$env:OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>
export OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>