🍎

MacOS EC2インスタンスでCloudWatch Agentを設定してログをCloudWatchにアップロードする方法

2024/08/16に公開

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ロールの作成

  1. AWSのコンソールにアクセスし、IAMを開きます
  2. 左側のナビゲーションでロールを選択し、ロールの作成をクリックします
  3. 信頼されたエンティティとしてEC2を選択します
  4. ポリシーアタッチの画面でCloudWatchAgentServerPolicyを検索し、選択します
  5. ロールに名前を付け(例: EC2CloudWatchAgentRole)、ロールの作成を完了します

ロールのEC2へのアタッチ

  1. EC2コンソールで該当のインスタンスを選択します
  2. アクションメニューから、セキュリティ > IAMロールの変更を選択します
  3. 作成したロール(例: 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