GoアプリケーションをSplunk Observability Cloudにインストルメンテーションする 🔗
注釈
Due to changes in the upstream OpenTelemetry documentation, 「automatic instrumentation」 has been changed to 「zero-code instrumentation」. For more information, see Instrumentation methods for Splunk Observability Cloud.
Splunk Distribution of OpenTelemetry Go は、Go アプリケーションやサービスをインストルメンテーションすることができます。開始するには、ガイド付きセットアップを使用するか、手動で手順に従ってください。
ガイド付きセットアップを使用してカスタマイズされた指示を生成する 🔗
環境とアプリケーションの基本的なインストールコマンドをすべて生成するには、Go ガイド付きセットアップを使用します。Goガイド付きセットアップにアクセスするには、以下の手順に従ってください:
Splunk Observability Cloud にログインします。
Go ガイド付きセットアップ を開きます。オプションで、ガイド付きセットアップに自分で移動することもできます:
ナビゲーションメニューで、
を選択します。Go to the Available integrations tab, or select Add Integration in the Deployed integrations tab.
インテグレーションフィルターーメニューで、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>"
Add the instrumentation using the
distro
package. The following example shows how to instrument a basic function.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 に直接データを送信する 🔗
デフォルトでは、すべてのテレメトリは Splunk Distribution of OpenTelemetry Collector のローカルインスタンスに送信されます。
Splunk Observability Cloud に直接データを送信する必要がある場合は、以下の環境変数を設定します:
export SPLUNK_ACCESS_TOKEN=<access_token>
export SPLUNK_REALM=<realm>
export OTEL_METRICS_EXPORTER=none
$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>