Go アプリケーションのインスツルメンテーション
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

Go アプリケーションのインスツルメンテーション

AWS インテグレーションDatadog Forwarder をインストールしたら、以下の手順に従ってアプリケーションをインスツルメントし、Datadog にメトリクス、ログ、トレースを送信します。

構成

Datadog Lambda ライブラリのインストール

以下のコマンドを実行し、Datadog Lambda ライブラリをローカルでインポートできます。

go get github.com/DataDog/datadog-lambda-go

関数の構成

  1. 環境変数 DD_FLUSH_TO_LOGtrue に設定します。
  2. Lambda 関数の AWS X-Ray アクティブトレースを有効にします。

Datadog Forwarder をロググループにサブスクライブ

メトリクス、トレース、ログを Datadog へ送信するには、関数の各ロググループに Datadog Forwarder Lambda 関数をサブスクライブする必要があります。

  1. まだの場合は、Datadog Forwarder をインストールします
  2. [DdFetchLambdaTags のオプションが有効であることを確認します5
  3. Datadog Forwarder を関数のロググループにサブスクライブします

Datadog サーバーレスモニタリングの利用

以上の方法で関数を構成すると、Serverless Homepage でメトリクス、ログ、トレースを確認できるようになるはずです。

カスタムメトリクスの送信をご希望の場合は、以下のコード例をご参照ください。

package main

import (
  "github.com/aws/aws-lambda-go/lambda"
  "github.com/DataDog/datadog-lambda-go"
)

func main() {
  // ハンドラー関数をラップします
  lambda.Start(ddlambda.WrapHandler(myHandler, nil))
}

func myHandler(ctx context.Context, event MyEvent) (string, error) {
  // カスタムメトリクスを送信します
  ddlambda.Metric(
    "coffee_house.order_value", // メトリクス名
    12.45, // メトリクス値
    "product:latte", "order:online" // 関連タグ
  )

  req, err := http.NewRequest("GET", "http://example.com/status")

  // Datadog 分散型トレーシングヘッダを追加
  ddlambda.AddTraceHeaders(ctx, req)

  client := http.Client{}
  client.Do(req)
}