- 重要な情報
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Datadog Forwarder Lambda 関数は、AWS Lambda トレース、拡張メトリクス、カスタムメトリクス、ログの取り込みに必要です。
Datadog Lambda ライブラリのインストール
Datadog Lambda ライブラリは、レイヤーまたは gem としてインストールできます。Datadog では、ほとんどの関数でライブラリをレイヤーとしてインストールすることを推奨しています。お使いの Lambda 関数がコンテナイメージとしてデプロイされている場合は、ライブラリを gem としてインストールする必要があります。
datadog-lambda
gem のマイナーバージョンは、常にレイヤーのバージョンに一致します。たとえば、datadog-lambda v0.5.0 は、レイヤーバージョン 5 のコンテンツに一致します。
オプション A: 以下のフォーマットで、ARN を使用して Lambda 関数にレイヤーを構成します。
# For regular regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Ruby2-7:13
# For us-gov regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Ruby2-7:13
<AWS_REGION>
を us-east-1
などの有効な AWS リージョンに置き換えてください。
オプション B: 構築済みの Datadog Lambda レイヤーを使用できない場合、代替として以下を Gemfile に追加することができます。
gem 'datadog-lambda'
gem 'ddtrace'
ddtrace
には、AWS Lambda で動作するよう Amazon Linux 用にコンパイルする必要のあるネイティブ拡張機能が含まれています。そのため、Datadog では Lambda をコンテナイメージとして構築しデプロイすることを推奨しています。AWS Lambda を使用するが関数をコンテナイメージとしてデプロイできない、という場合は、Lambda ライブラリを gem ではなくレイヤーとしてインストールすることをおすすめします。
お使いの関数の Dockerfile で bundle install
を実行する前に、gcc
、gmp-devel
、make
をインストールし、ネイティブ拡張機能を正常にコンパイルします。
FROM <base image>
# assemble your container image
RUN yum -y install gcc gmp-devel make
RUN bundle config set path 'vendor/bundle'
RUN bundle install
Lambda 関数を構成する
Datadog APM を有効にし、Datadog Lambda ライブラリが提供するラッパーを使用して Lambda ハンドラー関数をラップします。
require 'datadog/lambda'
Datadog::Lambda.configure_apm do |c|
# Enable the instrumentation
end
def handler(event:, context:)
Datadog::Lambda.wrap(event, context) do
return { statusCode: 200, body: 'Hello World' }
end
end
Datadog Forwarder をロググループにサブスクライブ
メトリクス、トレース、ログを Datadog へ送信するには、関数の各ロググループに Datadog Forwarder Lambda 関数をサブスクライブします。
カスタムメトリクスまたはスパンの送信をご希望の場合は、以下のコード例をご参照ください。
require 'ddtrace'
require 'datadog/lambda'
Datadog::Lambda.configure_apm do |c|
# インスツルメンテーションを有効にします
end
def handler(event:, context:)
# Datadog ラッパーを適用します
Datadog::Lambda::wrap(event, context) do
# Lambda 関数スパンにカスタムタグを追加します
# X-Ray トレーシングが有効になっている場合は機能しません
current_span = Datadog::Tracing.active_span
current_span.set_tag('customer.id', '123456')
some_operation()
Datadog::Tracing.trace('hello.world') do |span|
puts "Hello, World!"
end
# カスタムメトリクスを送信します
Datadog::Lambda.metric(
'coffee_house.order_value', # メトリクス名
12.45, # メトリクス値
time: Time.now.utc, # オプション、過去 20 分以内である必要があります
"product":"latte", # タグ
"order":"online" # タグ
)
end
end
# 関数をインスツルメントします
def some_operation()
Datadog::Tracing.trace('some_operation') do |span|
# ここで何かをします
end
end
カスタムメトリクス送信の詳細については、Serverless Custom Metrics を参照してください。カスタムインスツルメンテーションの詳細については、カスタムインスツルメンテーションの Datadog APM ドキュメントを参照してください。