こんにちは。東北のサウナー小菅です。
仙台に引っ越してきて約3ヵ月が経ちますが、
関東圏のサウナに思いを馳せる今日この頃です。
さて、本日はEC2でCloudWatchエージェントをインストールし、
エージェントの設定ファイルでロググループの保持期間を『3 months (90日)』にしたものの、
AWSコンソール上から見たら『失効しない(=無期限)』になってたお話をします。
Amazon CloudWatch Logsとは
Amazon CloudWatch Logs を使用して、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、AWS CloudTrail、Route 53 およびその他のソースからログファイルをモニタリング、保存、およびアクセスすることができます。
EC2インスタンスにCloudWatchエージェントをインストールし設定をすることで
内部で収集したメトリクスやログをCloudWatch Logsに保存し可視化することができます。
起こったこと
※インストール~設定については割愛させていただきます。
EC2にCloudWatchエージェントをインストールし、
/var/log/messages
をCloudWatch Logsで見れるように設定してました。
『CloudWatchAgentServerPolicy』ポリシーのみアタッチしたIAM Roleを
EC2にアタッチし意気揚々とCloudWatchエージェントの設定。
設定ファイルの中身は以下の通り。
$ cat /opt/aws/amazon-cloudwatch-agent/bin/config.json { "agent": { "run_as_user": "root" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/messages", "log_group_name": "messages", "log_stream_name": "{instance_id}", "retention_in_days": 90 } ] } } }
"retention_in_days": 90
が保持期間の設定となるため、
エージェントが起動されるとロググループが生成され保持期間が『3 months (90日)』で設定される想定です。
エージェントを起動しCloudWatch Logsのコンソール画面を確認してみると、、、
ロググループは作成されていましたが、
指定した保持期間が反映されておらず『失効しない』になってました。
わかったこと
調べてみたところ、どうやらエージェントがロググループの保持期間を設定できるようにするには
logs:PutRetentionPolicy
をIAMロールに付与する必要があるとのことでした。
てっきり『CloudWatchAgentServerPolicy』ポリシーで事足りると思い込んでましたがどうやら不足してるみたいです。
AWSの公式ページにもしっかり書いてあるので読まなきゃですね。
CloudWatch エージェントを構成して、ログイベントの送信先となるロググループ用の保持ポリシーを設定できます。これを実行する場合は、エージェントが使用する IAM ロールまたはユーザに logs:PutRetentionPolicy を付与する必要があります。エージェントは IAM ロールを使用して Amazon EC2 インスタンスで実行し、オンプレミスのサーバーに IAM ユーザーを使用します。
同じところで詰まってる方のお役に立てれば幸いです。
小菅 信幸(執筆記事の一覧)
仙台在住/サウナをこよなく愛するエンジニア
2024 Japan AWS All Certifications Engineers