CloudWatch Logs データ転送パターン完全ガイド ​

「CloudWatch Logsにログを集めたいが、サービスごとに設定方法が違って混乱する」 そんなエンジニアのために、主要なAWSサービスからのログ転送パターンを網羅的に整理しました。

ログ転送パターン・サマリー ​

AWSサービスがCloudWatch Logsにログを送る方法は、主に以下の3パターンに分類されます。

パターン概要代表的なサービス設定の難易度
1. Direct Integrationサービスの管理コンソールで「送信先」を選ぶだけLambda, VPC Flow Logs, API Gateway, Route 53★☆☆ (簡単)
2. Agent Basedサーバー内部にエージェントをインストールして送信EC2, On-Premises, ECS (EC2 launch type)★★☆ (手間)
3. Export / Subscription一度別の場所に吐かれたログを転送設定で送るRDS (一部), S3バケットのログ★★★ (複雑)

パターン別アーキテクチャと設定方法 ​

1. Direct Integration (ネイティブ統合) ​

最も簡単なパターンです。サービス自体がCloudWatch Logsへの書き出し機能を持っています。

設定例: VPC Flow Logs ​

VPCの画面から「フローログの作成」を選び、送信先に「CloudWatch Logs」を指定するだけです。

  • 必要なもの: CloudWatch Logsへの書き込み権限を持つIAMロール。

設定例: Lambda ​

何もしなくてOKです。関数を作成すると自動的に /aws/lambda/<関数名> というロググループが作成され、print() や console.log() の内容が転送されます。

2. Agent Based (エージェント経由) ​

OSやコンテナ内部のファイルとして出力されるログを、エージェントが拾って送信します。

設定例: EC2 ​

CloudWatch Agentをインストールし、config.json で「どのファイルを」「どのロググループに」送るか定義します。 詳細: CloudWatch Agent 完全ガイド

設定例: ECS / EKS (FireLens) ​

コンテナの標準出力(stdout)を、サイドカーコンテナ(Fluent Bitなど)が拾ってCloudWatchへ送ります。 ECSタスク定義で awslogs ログドライバーを指定するのが最も簡単です。

json
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "/ecs/my-app",
        "awslogs-region": "ap-northeast-1",
        "awslogs-stream-prefix": "ecs"
    }
}

3. Database & Exports (RDS / Aurora) ​

RDSやAuroraは少し特殊的です。

設定方法 ​

RDSのコンソールで「変更」をクリックし、「ログのエクスポート」セクションで送信したいログ(Postgresql log, Error log, Slow query logなど)にチェックを入れます。 ※ 注意: 再起動が必要な場合があります(パラメータグループ変更を伴う場合)。


サービス別リファレンス(主要なもの) ​

サービスログの種類設定箇所備考
EC2Syslog, App LogsEC2内部 (Agent)IAMロール権限が必要
Lambda実行ログ自動 (IAMロール)デフォルトで有効
VPCFlow LogsVPCコンソールENI単位でも設定可
Route 53Query LogsRoute 53 Resolverクエリごとの課金に注意
CloudTrailAudit LogsCloudTrail Trails「CloudWatch Logsへの送信」をONにする
RDSError, Slow QueryRDSコンソールエンジンにより出力可能ログが異なる
ECSStdout/Stderrタスク定義FargateならFireLensも利用可能
WAFACL TrafficWAF LoggingKinesis Data Firehose経由になることが多い
S3Access LogsS3バケット設定S3への保存が基本。CW LogsへはLambda転送が必要

まとめ ​

「ログをCloudWatchで見たい」と思ったら、まずはそのサービスが「Direct Integration」に対応しているか確認しましょう。 対応していない(EC2上のアプリログなど)場合は、Agentの導入を検討します。 S3アクセスログなどの大量データは、コストの観点からCloudWatch LogsではなくS3に直接保存し、Athenaで分析するほうが適している場合もあります。