GoアプリケーションをSplunk Observability Cloudにインストルメンテーションする

Splunk Distribution of OpenTelemetry Go は、Go アプリケーションやサービスをインストルメントできます。次の手順に従って、操作を開始します。

注: 元の OpenTelemetry ドキュメントに変更があったため、「自動インストルメンテーション」は「ゼロコード インストルメンテーション」に変更されました。詳細については、「Splunk Observability Cloud のインストルメンテーションの方法」を参照してください。

Splunk Distribution of OpenTelemetry Go は、Go アプリケーションやサービスをインストルメントできます。開始するには、ガイド付きセットアップを使用するか、手動で指示に従ってください。

ガイド付きセットアップを使用してカスタマイズされた指示を生成する

環境とアプリケーションのための基本的なインストールコマンドをすべて生成するには、Go ガイド付きセットアップを使用してください。Go ガイド付きセットアップにアクセスするには、次の手順に従ってください:

  1. Splunk Observability Cloud にログインします。

  2. Go ガイド付きセットアップを開きます。オプションで、ガイド付きセットアップに自分で移動することもできます:

    1. ナビゲーションメニューで、Data Management を選択します。

    2. Available integrations タブにアクセスするか、Deployed integrations タブで Add Integration を選択します。

    3. インテグレーションフィルターメニューで、By Product を選択します。

    4. APM 製品を選択します。

    5. Go タイルを選択し、Go ガイドセットアップを開きます。

Splunk Distribution of OpenTelemetry Go を手動でインストールする

ガイド付きセットアップを使用しない場合は、以下の手順に従って Splunk Distribution of OpenTelemetry Go を手動でインストールしてください。

Goインストルメンテーションをインストールしてアクティブにする

以下の手順に従って、Goインストルメンテーションを使用してアプリケーションをインストルメンテーションしてください:

  1. 要件を満たしているか確認してください。「Go インストルメンテーションの互換性と要件」を参照してください。

  2. ディストリビューションをインストールします:

    go get github.com/signalfx/splunk-otel-go/distro
  3. OTEL_SERVICE_NAME 環境変数を設定します:

    Linux
    export OTEL_SERVICE_NAME=<yourServiceName>
    Windows PowerShell
    $env:OTEL_SERVICE_NAME=<yourServiceName>
  4. (オプション) Splunk Distribution of OpenTelemetry Collectorが別のホストで実行されている場合は、エンドポイント URL を設定します:

    Linux
    export OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
    Windows PowerShell
    $env:OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
  5. (オプション)バージョンと環境名を設定します:

    Linux
    export OTEL_RESOURCE_ATTRIBUTES="service.version=<version>,deployment.environment=<environment>"
    Windows PowerShell
    $env:OTEL_RESOURCE_ATTRIBUTES="service.version=<version>,deployment.environment=<environment>"
  6. 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)
          }
       }()
    
       // ...
  7. 追加のインストルメンテーションを有効にします。詳細については、「サポートされているライブラリとフレームワーク」を参照してください。

  8. (オプション)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 Observability Cloud に転送される前にローカルの OpenTelemetry Collector に送信されます。

OpenTelemetry Collector を使用せずに、Splunk Observability Cloud に直接データを送信することもできます。
注: Splunk Observability Cloud へのデータの直接送信は、トレースとメトリクスについてのみサポートされています。この方法を使用してログを送信することはできません。

Splunk Observability Cloud に直接データを送信する必要がある場合は、以下の環境変数を設定します:

Linux
export SPLUNK_ACCESS_TOKEN=<access_token>
export SPLUNK_REALM=<realm>
Windows PowerShell
$env:SPLUNK_ACCESS_TOKEN=<access_token>
$env:SPLUNK_REALM=<realm>

アクセストークンを取得するには、「Splunk Observability Cloud を使用したユーザー API アクセストークンの取得と管理」を参照してください。

Splunk レルムを見つけるには、「Set up a default SSO role」を参照してください。

インジェスト API エンドポイントの詳細については、「APM トレースの送信」および「データポイントの送信」を参照してください。

ソースホストの指定

エージェントが使用するホストを上書きするには、環境変数 OTEL_RESOURCE_ATTRIBUTES を使用して、ホストの名前を希望するソースに設定します。

Windows PowerShell
$env:OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>
Linux
export OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>