AuditDecision
ガイド一覧に戻る
お役立ちガイド

クラウド時代のログ管理ベストプラクティス (AWS/GCP)

最終更新: 2026-02-06
### このガイドの目的 クラウドネイティブ(Docker, K8s, Lambda)な環境において、レガシーな「ファイルにログを吐く」運用から脱却し、取りこぼしのないログ基盤を作るための設計指針です。 ### ベストプラクティス 3選 #### 1. 標準出力(Stdout/Stderr)への集約 **原則**: アプリケーションはログの「保存場所」を意識してはいけません。 **理由**: コンテナやLambdaは使い捨て(Ephemeral)です。コンテナ内のファイル `/var/log/app.log` に書いても、コンテナが死ねばログも消えます。 **実装**: 全てのログを `console.log` (Node) や `logging.StreamHandler` (Python) に流し、収集はDockerデーモンやFluent Bit(Sidecar)に任せましょう。これを「ログルーターパターン」と呼びます。 #### 2. 構造化ログ(JSON)の徹底 **原則**: `grep` ではなくクエリで検索できるようにする。 **NG例**: `[Info] 2024/02/06 User 123 login failed` (ただの文字列) **OK例**: `{"level": "info", "ts": "2024-02-06...", "user_id": 123, "event": "login_failed"}` **理由**: DatadogやCloudWatch Insightsで `user_id=123` と検索した時、JSONなら100%ヒットしますが、テキストgrepは誤検知やパースエラーの元です。分析コストが劇的に下がります。 #### 3. Trace IDによる分散トレーシング **原則**: リクエストの「一連の流れ」を追えるようにする。 **課題**: マイクロサービスでは、Frontendのエラーの原因が、Backendのその奥のDBにあることが多々あります。 **解決**: ロードバランサー(ALB)が付与する `X-Amzn-Trace-Id` や、OpenTelemetryのTrace IDを、アプリ内の全てのログ出力に含めてください。これにより、一つの検索IDでシステム全体を串刺し検索できます。 ### 構成例 (AWS) - **小規模**: CloudWatch Logs Agent (EC2) / FireLens (ECS) -> CloudWatch Logs - **中規模**: Fluent Bit -> Kinesis Firehose -> S3 (保存) + OpenSearch (検索) - **大規模**: Datadog Agent -> Datadog (サンプリング有効化) ### 次のアクション - [診断:監査ログ自己チェック](/diagnosis/audit-log-self-check/) で現状の構成を評価する。

この記事について

想定読者

ログ基盤の設計・運用を担当するSRE、インフラエンジニア

記事の目的

ログ管理における過剰投資を防ぎ、監査対応に必要な最低限の要件を整理する

根拠・参照情報
最終更新日

2026-02-06

免責事項: 本記事は監査対応における判断支援を目的としており、法的・監査上の最終判断を保証するものではありません。 最終的な意思決定は、必ず関連規格(PCI DSS, SOC2等)の公式文書や、貴社の法務・監査部門の判断を参照してください。


関連リンク