AWSにおけるログの出力先、可視化、監視のまとめ

# はじめに
AWSにおける主要サービスのログの出力先をまとめていきます。

# ログの種類と出力先
ログと出力先、S3に関しては対応する暗号化方式を記載します。
S3の場合、バケットポリシー、KMSを利用する場合キーポリシーの編集が必要ですので、参考のURLを見て設定を忘れないようにしましょう。
| ログの種類 | 出力先 | 概要 | 備考 |
| --- | --- | --- | --- |
| CloudWatchAgent経由のログ（OSログ等） | CloudWatchLogs | EC2等でCloudWatchAgent経由でログ転送するもの | [CloudWatchAgent設定](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html) |
| Lambda関数ログ | CloudWatchLogs | Lambda関数の実行時のログ | [Lambdaログ](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/monitoring-cloudwatchlogs.html) |
| APIGateway APIログ | CloudWatchLogs | APIGatwayのAPI実行、アクセスログ | [APIGatewayログ](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/set-up-logging.html) |
| RDS・Auroraログ | CloudWatchLogs | RDS、Aurora等でのDB、slowログ | [RDSログ](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_LogAccess.html) |
| VPCフローログ | CloudWatchLogs/S3(SSE-S3/SSE-KMS) | VPC上のパケットのフローログ | [VPCフローログ](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-logs.html) |
| CloudTrail | CloudWatchLogs/S3(SSE-KMS) | AWS上でのAPI操作ログ | [CloudTrailログ](https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html)|
| GuardDutyログ | S3(SSE-KMS)  | GuardDutyの検出ログ| [GuardDuty検出ログ](https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_exportfindings.html) |
| S3アクセスログ | S3(SSE-S3) | S3へのアクセスログ | [S3アクセスログ](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/enable-server-access-logging.html) |
| AWSConfigログ | S3(SSE-S3/SSE-KMS) | Configスナップショットの格納先（AWS上での構成情報） | [AWS Configスナップショット](https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/deliver-snapshot-cli.html) |
| ELBアクセスログ | S3(SSE-S3) | ALB・NLBへのアクセスログ | [ALBアクセスログ](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html) |
| CloudFrontアクセスログ | S3(SSE-S3/SSE-KMS)  | CloudFrontへのアクセスログ| [CloudFrontアクセスログ](https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html)|
| AWSWAFログ | CloudWatchLogs/S3(SSE-S3/SSE-KMS)/KinesisDataFirehose | WAFの処理ログ | [AWSWAFログ](https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/logging.html) |

# 出力から監視、可視化までのまとめ
１枚の絵にしてみました。
CloudWatchLogsに入ったものは、そのままでもLogsInsightの機能で分析や可視化が可能です。
また、ログのメッセージに応じて、アラートを出すというアクションも可能になります。
また、OpenSearch等で詳細な可視化分析をしたい場合ストリーミングも可能ですし、KinesisDataFirehoseへのストリーミングも可能です。

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/CWL_OpenSearch_Stream.html

S3に出力したものは、そのままライフサイクルルールでGlacierへの長期保管も可能ですし、Athenaを利用し、分析をかけることも可能です。Athenaを利用したQuickSightでの分析、可視化も可能ですし、OpenSearchでのデータのインポートも可能です。

![スクリーンショット 2023-01-09 15.20.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/a60a29ae-bdea-0f8b-e008-09606722c861.png)

# まとめ
サービスごとにCloudWatchLogs、S3と出力先が異なります。
両方に出力可能なサービスについては、ログの保管目的を考慮し出力先を選定しましょう。
例えば、保管だけを目的にするのであれば、S3で十分です。料金としても、CloudWatchLogsとS3では、S3のほうがコストが低くすみます。一方で、ログのメッセージに応じた監視を行いたい、Insightでリアルタイムにログがみたいなどの場合はCloudWatchLogsに転送しましょう。その先はどちらもそれほど変わりませんが、詳細な分析や可視化をしたい場合は、OpenSearch、Athena、QuickSight、データ変換の必要に応じてKinesisやLambda、Glueを組み合わせて利用しましょう。また、CloudWatchLogsの保管料金を削減するために、LogsからS3に転送する方法もいくつかあります。（これは別途書こうと思います。）コスト、要件に応じて適切に選択しましょう。