Lambda 関数によるログ収集のトラブルシューティングガイド

ログエクスプローラーに、Datadog Forwarder の Lambda 関数から転送されたログが表示されない場合は、以下のトラブルシューティングを実行してください。それでも問題が解決しない場合は、Datadog サポートまでお問い合わせください。

Datadog にログが送信されたかを確認する

  1. ログエクスプローラーの Live Tail ビューを開きます。
  2. 検索バーで Live Tail ビューにフィルターを適用し、Lambda 関数経由で送られたログのみを表示します。検索には以下のようなクエリを利用できます。
    • ソースで検索: ソースは通常 source:lambdasource:aws または source:cloudwatch に設定されています。Lambda 関数parse_event_source 関数にあるソースも設定可能です。
    • Forwarder 名で検索: Lambda 関数は転送するすべてのログに対して forwardername タグを付加します。このタグを forwardername:* または forwardername:<FORWARDER_FUNCTION_NAME> で絞り込み、検索できます。
  3. ログエクスプローラーではなく Live Tail にログが表示される場合は、ログインデックスに除外フィルターが設定されています。このフィルターによりログが除外されているのです。
  4. Live Tail にログが表示されない場合は、ログが Datadog に到達していません。

Lambda 関数の Monitoring タブを確認する

AWS コンソールから

  1. Forwarder の Lambda 関数を開きます。

  2. Monitoring タブをクリックします。

    Monitoring タブ
  3. Monitoring タブには、Lambda 関数に関する以下の情報を示す一連のグラフが表示されます。

    • 呼び出し
    • エラー
    • logs
  4. Invocations グラフにデータポイントが表示されない場合は、関数に対して設定したトリガーに問題が発生している可能性があります。関数のトリガーを管理する を参照してください。Monitoring タブを使用せずに Lambda 関数の呼び出しについてのインサイトを取得する場合は、[Datadog で Lambda メトリクスを表示する](#Datadog で Lambda メトリクスを表示する) をご確認ください。

  5. 「Error count and success rate」グラフにデータポイントが表示されている場合は、[Lambda 関数のログを確認する](#Lambda 関数のログを確認する) で報告されたエラーメッセージの内容を確認してください。

Datadog で Lambda メトリクスを表示する

AWS Lambda 関数を有効にすると、Datadog 内での Lambda 関数の呼び出しとエラーに関連するメトリクスを確認することができます。以下のメトリクスはすべて functionname でタグ付けされています。

メトリクス説明
aws.lambda.invocationsLambda 関数がトリガー/呼び出された回数
aws.lambda.errors関数が呼び出された際に起こったエラー数
aws.lambda.durationLambda 関数の実行完了までに要した平均時間 (ミリ秒)
aws.lambda.duration.maximumLambda 関数の実行完了までに要した最大時間 (ミリ秒)
aws.lambda.throttles呼び出し率が既定の上限を超えたために抑制された呼び出し試行回数

これらおよびその他の AWS Lambda メトリクスについては、AWS Lambda のメトリクスを参照してください。

関数のトリガーを管理する

ログが転送されるには、Forwarder の Lambda 関数にトリガー (CloudWatch ログまたは S3) が設定されている必要があります。以下のステップに従い、トリガーを正しく設定してください。

  1. ログのソース (CloudWatch ロググループまたは S3 バケット) が、Forwarder の Lambda コンソールで “Triggers” リストに表示されますか?表示される場合は、有効であることを確認します。表示されない場合は、以下のステップに従い S3 または CloudWatch ロググループコンソールを確認します。Lambda コンソールに表示される “Triggers” リストは包括的でないことがあります。

  2. S3 バケットの場合は、バケットの “Properties” タブへ移動し、スクロールして “Advanced settings” の “Events” タイルを表示するか、以下の AWS CLI コマンドを使用してクエリを作成します。Forwarder の Lambda 関数をトリガーするよう構成されたイベント通知が表示されますか?表示されない場合は、トリガーを構成する必要があります。

    aws s3api get-bucket-notification-configuration --bucket <BUCKET_NAME>
    
  3. CloudWatch ロググループの場合は、ロググループのコンソールで “Log group details” セクションにある “Subscriptions” フィールドに移動します。または、以下の AWS CLI コマンドを使用してクエリを作成します。ロググループが Forwarder の Lambda 関数によりサブスクライブされていない場合は、トリガーを構成する必要があります。

    aws logs describe-subscription-filters --log-group-name <LOG_GROUP_NAME>
    
  4. トリガーを自動または手動で設定します。

CloudWatch ロググループの場合は、Datadog のプラットフォーム内で以下のメトリクスを使用して、ログがロググループから Forwarder の Lambda 関数へ送信されたことを確認できます。メトリクスを表示する際は、log_group タグでデータを絞り込みます。

メトリクス説明
aws.logs.incoming_log_eventsCloudWatch ログにアップロードされたログイベントの数
aws.logs.forwarded_log_eventsサブスクリプションの送信先に転送されたログイベントの数
aws.logs.delivery_errorsサブスクリプション先への送信に失敗したログイベントの数
aws.logs.delivery_throttlingサブスクリプションの先への送信を制限されたログイベントの数

Lambda 関数のログを確認する

  1. Monitoring タブで View logs in Cloudwatch をクリックします。
Cloudwatch 内での Lambda ログ
  1. 最新のログストリームを確認。

  2. エラーが発生した場合は、"?ERROR ?Error ?error" で検索してみてください。

  3. Forwarder の Lambda 関数で、環境変数 “DD_LOG_LEVEL” を “debug” に設定してデバッグログを有効にし、さらなるデバッグを実行します。デバッグログは非常に詳細になるため、デバッグが終了したら無効にしましょう。

その他の参考資料

PREVIEWING: may/unit-testing