Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

CloudWatchLogsのログをDatadogに取り込んでみた

こんにちは、ヤプリでインフラエンジニアをしている羽渕です!
今回はDatadogの公式ドキュメントを参考にCloudWatchLogsのログをDatadogに取り込んでみたので、簡単にご紹介します。

f:id:modokkin:20181122173633p:plain

はじめに

まず、Datadogのログ取得はagentから直接出力するパターンと、CloudWatchLogsやS3など別の場所に出力したログを取り込むパターンがありますが、今回はFargateのログが欲しかったので手っ取り早いCloudWatchLogsから取得する方法を試しました。
なお、本記事ではDatadogのIntegration設定については設定済みであることを前提としています。

参照した公式ドキュメント - Log collection docs.datadoghq.com

やってみた

  1. Lambdaに割り当てるIAM Roleを作成する。
    今回は下記2点のポリシーを割り当てます。

    • AWSLambdaBasicExecutionRole
      • LambdaFunction自体のログをCloudWatchLogsに出力するためのポリシー
    • AmazonS3ReadOnlyAccess
      • S3に保存されているログを参照するためのポリシー
        ※今回は検証のためマネージドポリシーを利用していますが、バケットの絞り込みは適切に行なってください。

    f:id:modokkin:20181025153731p:plain
    DatadogLambdaRole

    また、Lambdaサービスがこのロールを使用できるようにするため、Trusted entitiesにlambda.amazonaws.comを指定しておきます(ダイアログにしたがって作成する場合はLambda用ロールとして作成すればOK)。

  2. 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のダミーの実行結果を出力するテストを行なっています。

  3. LambdaFunctionにCloudWatchLogsのログを収集するためのトリガーを設定します。

    • Log group 対象となるロググループを指定
    • Filter name 任意の名前を指定
    • Filter pattern 今回は空欄
  4. Datadogに出力されているか確認する。
    DatadogのLog Explorerを確認すると正常に出力されていました。 f:id:modokkin:20181025170622p:plain

まとめ

以上のように簡単ではありますが公式ドキュメントに沿ってぽちぽちするだけで、LambdaFunctionのトリガーに指定したロググループのログをDatadogに出力するとができました。 気になる方はぜひお試しください。