SSM Run Commandのみで、EC2にCloudWatch Logsエージェントを設定してみた

SSM Run Commandのみで、EC2にCloudWatch Logsエージェントを設定してみた

EC2にCloudWatch LogsエージェントをAWS Systems Manager Run Commandのみで設定してみました。
Clock Icon2024.09.24

はじめに

こんにちは、アノテーションのなかたです。
今回は、EC2にCloudWatch LogsエージェントをAWS Systems Manager Run Commandのみで設定してみました。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/run-command.html

やってみる

1. EC2の起動

SSM接続できることがRun Commandの前提であるため、以下のようなインスタンスを用意します。

  • AMIは、Amazon Linux 2023を使用します
  • パブリックIPの割り当てを有効にします
  • パブリックサブネットに起動します
  • セキュリティグループは、HTTPSの10.0.0.0/16を解放します

IAMロールに紐づけるIAMポリシー

  • AmazonSSMManagedInstanceCore
  • CloudWatchAgentServerPolicy
    CloudWatchLogsへの書き込み権限も必要となるため

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-prerequisites.html

2. CloudWatch Logsエージェントのインストール

SSM Run CommandでAWS-RunShellScriptドキュメントを使用します。
スクリーンショット 2024-09-22 18.27.03
スクリーンショット 2024-09-22 18.27.34
実行するスクリプトは以下を用います。
/var/log/messagesをログファイルとして取得したいため、Amazon Linux 2023ではrsyslogのインストールが必要になります。

bash
# CloudWatch Logsエージェントのインストール
wget https://s3.ap-northeast-1.amazonaws.com/amazoncloudwatch-agent-ap-northeast-1/centos/amd64/latest/amazon-cloudwatch-agent.rpm
rpm -U ./amazon-cloudwatch-agent.rpm

# rsyslogのインストール
dnf install -y rsyslog
systemctl enable rsyslog
systemctl start rsyslog

3. SSM Parameter StoreにCloudWatch Logsエージェントファイルの設定

こちらは、後ほどEC2にCloudWatch Logsエージェントファイルを設定するための手順です。
パラメータの名前は、CloudWatchLogsAgentJSONとします。
screencapture-ap-northeast-1-console-aws-amazon-systems-manager-parameters-aws-create-2024-09-22-18_36_45
入力したエージェントファイルのJSONは以下になります。

json
{
        "agent": {
                "run_as_user": "root"
        },
        "logs": {
                "logs_collected": {
                        "files": {
                                "collect_list": [
                                        {
                                                "file_path": "/var/log/messages",
                                                "log_group_class": "STANDARD",
                                                "log_group_name": "amazon-cloudwatch-agent.log",
                                                "log_stream_name": "{instance_id}",
                                                "retention_in_days": 1
                                        }
                                ]
                        }
                }
        }
}

4. CloudWatch Logsエージェントファイルの設定

こちらは、AmazonCloudWatch-ManageAgentドキュメントを使用します。
Actionはconfigureとします。
また、Optional Configuration Locationに先ほど設定したSSMパラメータの値を入力します。
screencapture-ap-northeast-1-console-aws-amazon-systems-manager-run-command-send-command-2024-09-22-18_37_44

5. CloudWatchLogsエージェントの開始

こちらも、AmazonCloudWatch-ManageAgentドキュメントを使用します。
Actionはstartとします。
screencapture-ap-northeast-1-console-aws-amazon-systems-manager-run-command-856c3325-2860-4568-885f-4c31818dd3e5-copy-to-new-2024-09-22-18_38_33

6. CloudWatchログの確認

この時点でCloudWatchのロググループを表示すると、
指定した名前であるamazon-cloudwatch-agent.logというログが確認できると思います。

おわりに

今まではEC2にSSH接続してインストールを行なっていましたが、今回行ったことにより画面をポチポチするだけでインストールが行えるようになります。
また、コマンドを覚える必要がなくなるため便利です。

参考にした記事

https://dev.classmethod.jp/articles/aws-systems-manager-run-command-ec2-instance/
https://dev.classmethod.jp/articles/run-command-aws-runshellscript/

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.