- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
AWS サービスログは、Datadog Forwarder Lambda 関数を使用して収集できます。S3 Buckets、CloudWatch ロググループ、および EventBridge イベントでトリガーするこの Lambda は、ログを Datadog に転送します。
AWS サービスからログの収集を開始するには
注: AWS us-east-1
リージョンにいる場合は、Datadog-AWS Private Link を利用してください。
注: Cloudformation は、すべてのリソースに対して KMS:Decrypt を含む IAM ポリシーを作成し、AWS Security Hub のベストプラクティスと一致しません。この権限は、Lambda 関数を設定するために KMS で暗号化された S3 バケットからオブジェクトを復号するために使用され、どの KMS キーが S3 バケットの暗号化に使用されているかは予測できません。インストーラーが正常に終了したら、この権限を安全に削除することができます。
S3 バケットまたは CloudWatch ロググループにログを生成する AWS サービスがサポートされています。以下の表で、よく使用されるサービスのセットアップ手順を参照してください。
AWS サービス | AWS サービス ログを有効にする | AWS ログを Datadog に送信する |
---|---|---|
API Gateway | Amazon API Gateway ログを有効にする | 手動および自動ログコレクション。 |
Cloudfront | Amazon CloudFront ログを有効にする | 手動および自動ログコレクション。 |
CloudTrail | AWS CloudTrail ログを有効にする | 手動ログコレクション。AWS CloudTrail for Cloud SIEM を設定する場合は、AWS Configuration for Cloud SIEM11 を参照してください。 |
DynamoDB | Amazon DynamoDB ログを有効にする | 手動ログコレクション。 |
EC2 | - | Datadog Agent を使用してログを Datadog に送信します。 |
ECS | - | docker Agent を使用してログを収集します。 |
Elastic Load Balancing (ELB) | Amazon ELB ログを有効にする | 手動および自動ログコレクション。 |
Lambda | - | 手動および自動ログコレクション。 |
RDS | Amazon RDS ログを有効にする | 手動ログコレクション。 |
Route 53 | Amazon Route 53 ログを有効にする | 手動ログコレクション。 |
S3 | Amazon S3 ログを有効にする | 手動および自動ログコレクション。 |
SNS | SNS はログを提供しませんが、SNS サービスに送信されるログとイベントを処理することができます。 | 手動ログコレクション。 |
RedShift | Amazon Redshift ログを有効にする | 手動および自動ログコレクション。 |
Verified Access | Verified Access ログを有効にする | 手動ログコレクション。 |
VPC | Amazon VPC ログを有効にする | 手動ログコレクション。 |
Datadog Forwarder Lambda 関数でトリガーを構成する場合、オプションは 2 つあります。
Datadog は、Datadog Forwarder Lambda 関数にトリガーを自動的に構成し、以下のソースとロケーションから AWS ログを収集することができます。
ソース | 場所 |
---|---|
APIKEY を AccessKey ボックスに貼り付けます (Datadog API 設定ページから API キーを取得できます)。 | CloudWatch |
API ゲートウェイの実行ログ | CloudWatch |
アプリケーション ELB アクセスログ | 注: 2 つ以上のソースにサブスクライブする場合、このセットアップを完了後、新しい Kinesis ストリームにサブスクライブすることができます。 |
クラシック ELB アクセスログ | 注: 2 つ以上のソースにサブスクライブする場合、このセットアップを完了後、新しい Kinesis ストリームにサブスクライブすることができます。 |
CloudFront のアクセスログ | 注: 2 つ以上のソースにサブスクライブする場合、このセットアップを完了後、新しい Kinesis ストリームにサブスクライブすることができます。 |
Lambda ログ | CloudWatch |
Redshift ログ | 注: 2 つ以上のソースにサブスクライブする場合、このセットアップを完了後、新しい Kinesis ストリームにサブスクライブすることができます。 |
S3 アクセスログ | 注: 2 つ以上のソースにサブスクライブする場合、このセットアップを完了後、新しい Kinesis ストリームにサブスクライブすることができます。 |
注: サブスクリプション フィルターは、DatadogForwarder によって自動的に作成されません。ロググループで直接作成してください。
Datadog ログコレクション AWS Lambda 関数をまだセットアップしていない場合は、セットアップします。
Datadog と AWS のインテグレーションに使用する IAM ロールのポリシーに、次のアクセス許可があることを確認します。この許可の使用方法については、以下に説明されています。
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeLoadBalancerAttributes",
"lambda:List*",
"lambda:GetPolicy",
"redshift:DescribeClusters",
"redshift:DescribeLoggingStatus",
"s3:GetBucketLogging",
"s3:GetBucketLocation",
"s3:GetBucketNotification",
"s3:ListAllMyBuckets",
"s3:PutBucketNotification",
"logs:PutSubscriptionFilter",
"logs:DeleteSubscriptionFilter",
"logs:DescribeSubscriptionFilters"
AWS アクセス許可 | 説明 |
---|---|
cloudfront:GetDistributionConfig | CloudFront アクセスログを含む S3 バケットの名前を取得します。 |
cloudfront:ListDistributions | すべての CloudFront ディストリビューションを一覧表示します。 |
elasticloadbalancing: DescribeLoadBalancers | すべてのロードバランサーを一覧表示します。 |
ロググループインデックスページ の Subscriptions をチェックして、新しい Kinesis ストリームがロググループをサブスクライブしているかを確認します。 | |
lambda:List* | すべての Lambda 関数を一覧表示します。 |
lambda:GetPolicy | トリガーが解除された際に Lambda ポリシーを取得します。 |
redshift:DescribeClusters | すべての Redshift クラスターを一覧表示します。 |
redshift:DescribeLoggingStatus | Redshift ログを含む S3 バケットの名前を取得します。 |
s3:GetBucketLogging | S3 アクセスログを含む S3 バケットの名前を取得します。 |
s3:GetBucketLocation | S3 アクセスログを含む S3 バケットのリージョンを取得します。 |
s3:GetBucketNotification | 既存の Lambda トリガーコンフィギュレーションを取得します。 |
お役に立つドキュメント、リンクや記事: | |
s3:PutBucketNotification | S3 バケットのイベントに基づいて Lambda トリガーを追加または削除します。 |
logs:PutSubscriptionFilter | CloudWatch ログのイベントに基づいて Lambda トリガーを追加します。 |
logs:DeleteSubscriptionFilter | CloudWatch ログのイベントに基づいて Lambda トリガーを削除します。 |
logs:DescribeSubscriptionFilters | 特定のロググループのサブスクリプションフィルターを一覧表示します。 |
AWS インテグレーションページで、ログを収集する AWS アカウントを選択し、Log Collection タブをクリックします。
前のセクションで作成した Lambda の ARN を入力し、Add をクリックします。
ログを収集するサービスを選択し、Save をクリックします。特定のサービスからのログの収集を停止するには、ログソースの選択を解除します。
複数のリージョンにログがある場合は、そのリージョンに追加の Lambda 関数を作成して、このページに入力する必要があります。
すべての AWS ログの収集を停止するには、Lambda にカーソルを合わせ、Delete アイコンをクリックします。その関数のトリガーがすべて削除されます。
この初期のセットアップから数分以内に、AWS ログが Datadog ログエクスプローラーに表示されるようになります。
CloudWatch のロググループからログを収集している場合、以下のいずれかの方法で Datadog Forwarder Lambda 関数へのトリガーを構成します。
Terraform ユーザーは、aws_cloudwatch_log_subscription_filter リソースを使いトリガーのプロビジョニングと管理ができます。以下のサンプルコードを参照してください。
resource "aws_cloudwatch_log_subscription_filter" "datadog_log_subscription_filter" {
name = "datadog_log_subscription_filter"
log_group_name = <CLOUDWATCH_LOG_GROUP_NAME> # 例: /aws/lambda/my_lambda_name
destination_arn = <DATADOG_FORWARDER_ARN> # 例: arn:aws:lambda:us-east-1:123:function:datadog-forwarder
filter_pattern = ""
}
AWS CloudFormation ユーザーは、CloudFormation AWS::Logs::SubscriptionFilter リソースを使いトリガーのプロビジョニングと管理ができます。以下のサンプルコードを参照してください。
このサンプルコードは、AWS の SAM と Serverless Framework でも動作します。Serverless Framework の場合は、serverless.yml
の resources セクションにコードを記述してください。
Resources:
MyLogSubscriptionFilter:
Type: "AWS::Logs::SubscriptionFilter"
Properties:
DestinationArn: "<DATADOG_FORWARDER_ARN>"
LogGroupName: "<CLOUDWATCH_LOG_GROUP_NAME>"
FilterPattern: ""
S3 バケットからログを収集している場合、以下のいずれかの方法で Datadog Forwarder Lambda 関数へのトリガーを構成します。
完了したら、Datadog Log セクションに移動し、ログを確認します。
Terraform ユーザーは、aws_s3_bucket_notification リソースを使用してトリガーのプロビジョニングと管理ができます。以下のサンプルコードを参照してください。
resource "aws_s3_bucket_notification" "my_bucket_notification" {
bucket = my_bucket
lambda_function {
lambda_function_arn = "<DATADOG_FORWARDER_ARN>"
events = ["s3:ObjectCreated:*"]
filter_prefix = "AWSLogs/"
filter_suffix = ".log"
}
}
CloudFormation をご利用の方は、S3 バケットの CloudFormation NotificationConfiguration を利用してトリガーを構成することが可能です。以下のサンプルコードをご参照ください。
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: "<MY_BUCKET>"
NotificationConfiguration:
LambdaConfigurations:
- Event: 's3:ObjectCreated:*'
Function: "<DATADOG_FORWARDER_ARN>"
Lambda 関数から送信されるログからメールや IP アドレスをスクラブしたり、カスタムスクラブルールを Lambda パラメーターで定義することができます。 また、フィルターオプションを使用して、特定のパターンに一致するログのみを除外または送信することができます。