EC2でCloudWatchエージェント設定時、ロググループの保持期間が反映されない

記事タイトルとURLをコピーする

こんにちは。東北のサウナー小菅です。
仙台に引っ越してきて約3ヵ月が経ちますが、
関東圏のサウナに思いを馳せる今日この頃です。

さて、本日はEC2でCloudWatchエージェントをインストールし、
エージェントの設定ファイルでロググループの保持期間を『3 months (90日)』にしたものの、
AWSコンソール上から見たら『失効しない(=無期限)』になってたお話をします。

Amazon CloudWatch Logsとは

docs.aws.amazon.com

Amazon CloudWatch Logs を使用して、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、AWS CloudTrail、Route 53 およびその他のソースからログファイルをモニタリング、保存、およびアクセスすることができます。

docs.aws.amazon.com

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の公式ページにもしっかり書いてあるので読まなきゃですね。

docs.aws.amazon.com

CloudWatch エージェントを構成して、ログイベントの送信先となるロググループ用の保持ポリシーを設定できます。これを実行する場合は、エージェントが使用する IAM ロールまたはユーザに logs:PutRetentionPolicy を付与する必要があります。エージェントは IAM ロールを使用して Amazon EC2 インスタンスで実行し、オンプレミスのサーバーに IAM ユーザーを使用します。

同じところで詰まってる方のお役に立てれば幸いです。

小菅 信幸(執筆記事の一覧)

仙台在住/AWS認定資格 12冠

サウナをこよなく愛するエンジニア