[小ネタ]EC2のロググループの保持期間はCloudWatch エージェントの設定ファイルで設定しよう

2022/2/25以降にCloudWatchAgentをインストールしたEC2インスタンスを使用している方は要注意です。
2023.01.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!AWS事業本部のおつまみです。

みなさん、EC2インスタンスのログをCloudWatchLogsに転送していますか?

2022/2/25のアップデートでロググループの保持期間をCloudWatchエージェントの設定ファイルで設定できるようになっています。

こちらが検証したブログです。

さて、設定ファイルで保持期間をしている場合にCloduWatchコンソールでログの保持期間を変更した場合はどうなるでしょうか?

いきなり結論

  • 2022/2/25以降にCloudWatchAgentをインストールかつウィザード形式で設定した場合は、CloudWatchLogsの保持期間が設定ファイルにデフォルトで指定されている。
  • CloduWatchコンソールでログの保持期間を変更しても、エージェントが再起動されると設定ファイルの値に戻ってしまう。(当たり前かもしれませんが、設定ファイルの値が優先されます。)
  • CloudWatchLogsの保持期間は設定ファイルで指定しようね。

検証してみた

先ほどご紹介したブログと同様に、ウィザードを使用して設定ファイル(Config.json)を作成します。

今回は"retention_in_days": 7で設定してみました。(下記は設定ファイル内の"logs"のみ抜粋しています。)

{
    "logs": {
            "logs_collected": {
                    "files": {
                            "collect_list": [
                                    {
                                            "file_path": "/var/log/messages",
                                            "log_group_name": "messages",
                                            "log_stream_name": "{instance_id}",
                                            "retention_in_days": 7
                                    }
                            ]
                    }
            }
    }

設定ファイルを読み込み、エージェントを起動させます。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
sudo systemctl restart amazon-cloudwatch-agent.service

CloudWatchコンソールを見てみましょう。
保持が7日間(1週間)に設定されてますね。

ここでコンソールから変更を行いたいと思います。アクション保持設定を編集を押下します。

失効しないを選択し、保存を押下します。

保持が失効しないに変更されました。

ここでCloudWatchエージェントを再起動させます。

sudo systemctl restart amazon-cloudwatch-agent.service

保持が7日間(1週間)に戻ってしまいました。

疑問:CloudWatchエージェントは自動で再起動されるの?

EC2インスタンス起動中では、再起動を意図して実行しない限りエージェントは自動で再起動されません。

ただし以下の場合はエージェントが再起動されてしまいます。

  • EC2インスタンスを再起動させる
  • EC2インスタンスを停止開始させる

またログ設定を変更し、エージェントを意図的に再起動する場合も出てくると思います。
そのためCloudWatchLogsの保持期間は設定ファイルで指定するのが良いでしょう。

最後に

今回はこちらのJAWSUG朝会で頂いた質問を元に検証しました。
質問ありがとうございました!

最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。

以上、おつまみ(@AWS11077)でした!