CloudwatchLogsをDatadogへ連携する

AWSのCloudwatchLogsやs3上のログを、DatadogのLogManagementまで連携するための設定を調べてみました。公式のマニュアルはこちら。

AWS

連携用Lambdaファンクションを用意

まずAWSから各種ログを、Datadogまで連携するためのLambdaファンクションを用意してあげる必要があります。

コードを用意

ファンクション作成用のserverless repositoryが公開されており、ここからデプロイすれば該当となるLambdaファンクションをCloudFormation経由で作ってくれます。

Serverless

コードはGithubにて公開されているため、それを利用して作成することも可能です。

datadog-serverless-functions/lambda_function.py at master · DataDog/datadog-serverless-functions · GitHub

Lambda基本設定

利用するメモリサイズは1GB、タイムアウト値は120秒とするのが推奨のようです。

f:id:goodbyegangster:20190331002205p:plain

Lambda環境変数の設定

Datadog APIキー情報を、Lambda環境変数として設定する必要があります。APIキーを与える方法として、以下の3つがあります。

今回はKMSの設定を採用しています。

f:id:goodbyegangster:20190331002253p:plain

Metadataの設定

コード内の metadata に追加することで、取込むログレコードに独自の文字列(メタデータ)を追加できます。

metadata = {
    "ddsourcecategory": "aws",
    "metadata": "test"
}

カスタムタグの設定

Datadogに取込むログレコードに、独自のタグを設定できます。Lambdaの環境変数にKey値 DD_TAGS として登録したValue値が、カスタムタグとして設定されます。

Lambdaファンクションのテスト

Event Templateを Cloudwatch Logs にして、テストを実行、エラーが発生しないことを確認します。尚このテストでは、Datadog側には何も出力されていません。

作成したLambdaファンクションに連携したいログを設定

作成したLambdaファンクションのトリガーとして、CloudwatchLogsまたはs3を設定することで、トリガーとして指定したログをDatadogに連携されるようになります。公式手順はこちらです。

AWS

簡単ですね。