Datadog Lambda ライブラリ
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

Datadog Lambda ライブラリ

Datadog Lambda ライブラリでは以下を実行します。

  • 呼び出し、エラー、コールドスタートなどのリアルタイム拡張 Lambda メトリクスを生成する
  • カスタムメトリクスの送信(同期および非同期)
  • アップストリームのリクエストからダウンストリームのサービスにトレースヘッダーを自動的に伝播します。これにより、Lambda 関数、ホスト、コンテナ、および Datadog Agent を実行している他のインフラストラクチャ全体で完全に分散されたトレースが可能になります。
  • dd-trace ライブラリをパッケージ化すると、Datadog のトレースライブラリを使用して Lambda 関数をトレースできるようになります。現在、Node.js、Python、Ruby で利用可能で、今後ランタイムは増える予定です。

Datadog では、Python、Node.js、および Ruby 用の Lambda レイヤーおよびオープンソースパッケージとして Lambda ライブラリを配布しています。プロジェクトにパッケージを含めることで Go もサポートされます。Datadog は新しい言語とランタイムのサポートに取り組んでいます。ほかにも Datadog のサポートを希望するランタイムがある場合は、Datadog のサポートチームまでお問い合わせください。

セットアップ

AWS コンソール

Datadog Lambda レイヤー ARN には、リージョン、言語ランタイム、バージョンが含まれます。次の形式で作成します。

arn:aws:lambda:<AWS_リージョン>:464622532012:layer:Datadog-<ランタイム>:<バージョン>

例:

arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python37:11
言語ランタイムリリース
PythonPython27Python36Python37Python38最新リリース
Node.jsNode8-10Node10-xNode12-x最新リリース
RubyRuby最新リリース

Golang: Go バイナリは静的にリンクされているため、Datadog ではプロジェクトにインポートできるパッケージを提供しています。Lambda レイヤーは必要ありません。

Java: Datadog では、プロジェクトにインポートできるライブラリを提供しています。Lambda レイヤーは必要ありません。

注: Datadog Lambda レイヤーとクライアントライブラリには依存関係として X-Ray SDK が含まれているため、プロジェクトに明示的にインストールする必要はありません。

インストール手順:

  1. AWS コンソールでレイヤーを追加する対象の Lambda 関数に移動します。
  2. 関数のメインページで Layers をクリックします。
  3. 下にスクロールして、Add a Layer をクリックします。
  4. オプション Provide a layer version ARN を選択します。
  5. 上記の表から Datadog Lambda レイヤー ARN を入力します。
  6. 関数の環境変数セクションに移動して、Datadog API キーおよびその他のオプションを構成します(下記の表を参照)。

Serverless Framework

このプラグインは、レイヤーを使用して Node.js と Python 用の Datadog Lambda ライブラリを関数にアタッチします。デプロイ時に、既存の関数をラップする新しいハンドラー関数を生成し、Lambda ライブラリを初期化します。

次のいずれかのコマンドでプラグインをインストールできます。

npm install --save-dev serverless-plugin-datadog  # NPM ユーザーの場合
yarn add --dev serverless-plugin-datadog          # Yarn ユーザーの場合

次に、serverless.yml に以下を追加します。

plugins:
    - serverless-plugin-datadog

次のセクションを serverless.yml に追加してライブラリを構成します。デフォルト値と、フィールドが必須かどうかがリストされています。

custom:
  datadog:
    # Lambda レイヤーを追加するか、ユーザーが独自に持ってくることを期待するか。デフォルトは true です。
    addLayers: true

    # ログレベル。拡張ログの場合は DEBUG に設定します。デフォルトは info です。
    logLevel: "info"

    # Datadog Forwarder Lambda 関数を使用して、ログを介してカスタムカスタムメトリクスを送信します (推奨)。 デフォルトは false です。
    flushMetricsToLogs: false

    # データ送信先の Datadog サイト。flushMetricsToLogs が false の場合にのみ必要です。デフォルトは datadoghq.com です。
    site: datadoghq.com # datadoghq.eu for Datadog EU

    # Datadog API キー。flushMetricsToLogs が false の場合にのみ必要です。
    apiKey: ""

    # KMS を使用して暗号化された Datadog API キー。flushMetricsToLogs が false の場合にのみ必要です。
    apiKMSKey: ""

    # Lambda 関数と API Gateway インテグレーションのトレースを有効にします。デフォルトは true です。
    enableXrayTracing: true

    # dd-trace、datadog の APM ライブラリを使用して、Lambda 関数のトレースを有効にします。datadog log forwarder をセットアップする必要があります。デフォルトは true です。
    enableDDTracing: true

    # 設定すると、プラグインは lambda の cloudwatch ロググループを指定された arn でフォワーダーにサブスクライブしようとします。
    forwarder: arn:aws:lambda:us-east-1:000000000000:function:datadog-forwarder

Datadog Forwarder を利用して CloudWatch ログを介してカスタムメトリクスを送信する場合は、flushMetricsToLogs: true を設定することをお勧めします。

Serverless Framework ドキュメント

<!–## AWS SAM

Lambda 関数および API ゲートウェイに、デフォルトで X-Ray トレーシングを有効にするには、template.yamlGlobals セクションFunction::TracingApi::TracingEnabled のキーを追加します。また、Datadog API キーと他の環境変数も追加します (以下の表を参照)。

Globals:
    Function:
        Tracing: Active
        Environment:
            Variables:
                DD_API_KEY: YOUR_DATADOG_API_KEY
    Api:
        TracingEnabled: true

AWS SAM ドキュメント

ローカル開発

ソースから、またはランタイムの標準パッケージマネージャーを使用して、プロジェクトに直接 Datadog Lambda ライブラリを含めることもできます。

言語リポジトリおおよそのサイズ
Node.jsGitHub2.6 MB
PythonGitHub10 MB
RubyGitHub2.3 MB
GoGitHub68 KB
JavaGitHub51 KB

注: AWS SAM は、ローカル開発用に Lambda レイヤーのダウンロードをサポートしています。

環境変数

Lambda 関数に環境変数を追加することで、Datadog Lambda ライブラリを構成できます。

環境変数説明必須デフォルト許容値
DD_API_KEYDatadog API キーDatadog API キー
DD_KMS_API_KEYKMS を使用する場合は、DD_API_KEY の代わりに使用KMS で暗号化された Datadog API キー
DD_SITEDatadog の EU インスタンスを使用する場合に設定datadoghq.comdatadoghq.eudatadoghq.com
DD_FLUSH_TO_LOGゼロレイテンシー非同期カスタムメトリクスを有効化FalseTrueFalse
DD_LOG_LEVELDatadog Lambda レイヤーの詳細ログを有効化INFOINFODEBUG

その他の参考資料

お役に立つドキュメント、リンクや記事: