🍎
MacOS EC2インスタンスでCloudWatch Agentを設定してログをCloudWatchにアップロードする方法
AWSのMacOS EC2インスタンス上で生成されるログファイルを、CloudWatchにアップロードしてモニタリングする方法について解説します。
CloudWatch Agentのインストール
まず、CloudWatch AgentをMacOSインスタンスにインストールします。以下のコマンドを実行して、CloudWatch Agentのパッケージをダウンロードし、インストールします。
wget https://s3.<ec2-region>.amazonaws.com/amazoncloudwatch-agent-<ec2-region>/darwin/arm64/latest/amazon-cloudwatch-agent.pkg
sudo installer -pkg amazon-cloudwatch-agent.pkg -target /
※<ec2-region>はご自身のEC2のリージョンに合わせて書き換えてください
CloudWatch Agentの設定ファイルの作成
次に、CloudWatch Agentを設定して、特定のログファイルをCloudWatchに送信するようにします。設定ファイルはJSON形式で作成します。以下は例として、/var/log/myapp.logというログファイルをCloudWatchにアップロードする設定です。
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/myapp.log",
"log_group_name": "my-log-group",
"log_stream_name": "{instance_id}",
"timestamp_format": "%Y-%m-%d %H:%M:%S"
}
]
}
}
}
}
そして、作成した設定ファイルを/opt/aws/amazon-cloudwatch-agent/bin/config.jsonに保存します。
IAMロールの設定
EC2がログをCloudWatchに送信できるようにするために、IAMロールをインスタンスに割り当てる必要があります。以下のようにEC2インスタンスにロールを割り当てます。
IAMロールの作成
- AWSのコンソールにアクセスし、IAMを開きます
- 左側のナビゲーションでロールを選択し、ロールの作成をクリックします
- 信頼されたエンティティとしてEC2を選択します
- ポリシーアタッチの画面で
CloudWatchAgentServerPolicy
を検索し、選択します - ロールに名前を付け(例: EC2CloudWatchAgentRole)、ロールの作成を完了します
ロールのEC2へのアタッチ
- EC2コンソールで該当のインスタンスを選択します
- アクションメニューから、セキュリティ > IAMロールの変更を選択します
- 作成したロール(例: EC2CloudWatchAgentRole)を選択し、更新をクリックします
※ロールは即座に反映されるため、EC2の再起動などは特に必要ありません。
CloudWatch Agentの起動
以下のコマンドを実行してCloudWatch Agentを起動し、設定内容を反映させます。
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
このコマンドにより設定ファイルが適用され、CloudWatch Agentがログの収集を開始します。
CloudWatchコンソールでのログ確認
設定が正しく行われていると、CloudWatchコンソールにログが表示されるはずです。ロググループを確認して、ログファイルが適切にアップロードされているかどうかを確認します。
Discussion