Splunk Observability Cloud に Go Lambda 関数をインストルメンテーションする

以下の手順に従って、OpenTelemetry を使用して AWS の Go Lambda 関数をインストルメンテーションし、Splunk Observability Cloud にトレースを送信します。

AWS Lambda for Splunk APM で Go 関数をインストルメンテーションするには、以下の手順に従います:

  1. 以下のコマンドを実行して、otellambda と Splunk OTel Go ディストリビューションをインストールします:

    go get -u go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-lambda-go/otellambda
    go get -u github.com/signalfx/splunk-otel-go/distro
  2. 関数のコードの中に、OpenTelemetry インストルメンテーションのラッパーを作成します。例:

    package main
    
    import (
       "context"
       "fmt"
    
       "github.com/aws/aws-lambda-go/lambda"
       "github.com/signalfx/splunk-otel-go/distro"
       "go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-lambda-go/otellambda"
       "go.opentelemetry.io/otel"
    )
    
    func main() {
       distro.Run()
       flusher := otel.GetTracerProvider().(otellambda.Flusher)
       lambda.Start(otellambda.InstrumentHandler(HandleRequest, otellambda.WithFlusher(flusher)))
    }
    
    type MyEvent struct {
       Name string `json:"name"`
    }
    
    func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
       return fmt.Sprintf("Hello %s!", name.Name), nil
    }
    注:
  3. OTEL_PROPAGTORS を設定して、W3C トレースコンテキスト、W3C バゲージ、AWS X-Ray 伝播を有効にします。
    OTEL_PROPAGATORS=tracecontext,baggage,xray
    注: 詳細については、「Propagator configiration」を参照してください。
  4. 必要な環境変数を設定します。「Splunk OpenTelemetry Lambda Layer を設定する」を参照してください。

詳細については、「AWS Lambda 関数を Splunk Observability Cloud にインストルメンテーションする」を参照してください。