こんにちは、ヤプリでインフラエンジニアをしている羽渕です!
今回はDatadogの公式ドキュメントを参考にCloudWatchLogsのログをDatadogに取り込んでみたので、簡単にご紹介します。
はじめに
まず、Datadogのログ取得はagentから直接出力するパターンと、CloudWatchLogsやS3など別の場所に出力したログを取り込むパターンがありますが、今回はFargateのログが欲しかったので手っ取り早いCloudWatchLogsから取得する方法を試しました。
なお、本記事ではDatadogのIntegration設定については設定済みであることを前提としています。
参照した公式ドキュメント - Log collection docs.datadoghq.com
やってみた
Lambdaに割り当てるIAM Roleを作成する。
今回は下記2点のポリシーを割り当てます。- AWSLambdaBasicExecutionRole
- LambdaFunction自体のログをCloudWatchLogsに出力するためのポリシー
- AmazonS3ReadOnlyAccess
- S3に保存されているログを参照するためのポリシー
※今回は検証のためマネージドポリシーを利用していますが、バケットの絞り込みは適切に行なってください。
- S3に保存されているログを参照するためのポリシー
また、Lambdaサービスがこのロールを使用できるようにするため、Trusted entitiesにlambda.amazonaws.comを指定しておきます(ダイアログにしたがって作成する場合はLambda用ロールとして作成すればOK)。
- AWSLambdaBasicExecutionRole
DatadogLambdaFunctionを作成する。
公式ドキュメントに記載されている通りLambdaFunctionを作成します。
パラメータは下記の通りとしました。- ソースコード中のDD_API_KEYを自分のDatadogのAPI KEYに変更
- Runtime Python2.7
- Handler lambda_function.lambda_handler
- Role DatadogLambdaRole (先ほど作成したロール)
- Memory 512MB
- Timeout 2min
作成できたらLambdaFunctionをテスト実行し異常がないことを確認します。公式ドキュメントではCloudWatchLogsにLambdaFunctionのダミーの実行結果を出力するテストを行なっています。
LambdaFunctionにCloudWatchLogsのログを収集するためのトリガーを設定します。
- Log group 対象となるロググループを指定
- Filter name 任意の名前を指定
- Filter pattern 今回は空欄
Datadogに出力されているか確認する。
DatadogのLog Explorerを確認すると正常に出力されていました。
まとめ
以上のように簡単ではありますが公式ドキュメントに沿ってぽちぽちするだけで、LambdaFunctionのトリガーに指定したロググループのログをDatadogに出力するとができました。 気になる方はぜひお試しください。