Fusic Tech Blog

Fusion of Society, IT and Culture

CloudWatch AgentでサクッとEC2のカスタムメトリクス & ログ取得設定
2022/02/26

CloudWatch AgentでサクッとEC2のカスタムメトリクス & ログ取得設定

こんにちは、インフラとかネットワークとか楽しいねと思ってる山下です。

今回は、CloudWatch Agentを使ってEC2のカスタムメトリクスや、ログを取得する方法をサクッと解説していこうと思います。

CloudWatch Agentは何ができる?

EC2にCloudWatch Agentをインストールして、設定ファイルを作成した上で起動すると、カスタムメトリクスをCloudWatchへ送信したり、任意のログファイルの内容をCloudWatch Logsに送信してログの内容を永続化できたりします。

実例で言うと、

  • EC2ではメモリに関するメトリクスがデフォルトで取得されていないため、CloudWatchAgentを設定する
  • Apacheのアクセスログを外だしして、永続化するためCloudWatch Agentを設定する といったユースケースで設定したりします。

設定方法

それでは早速サクッと設定していきましょう。

<前提情報>

  • EC2インスタンスは、Amazon Linux2を利用しています
  • EC2インスタンス内にApacheをインストールし、起動済です

1. SSMパラメーターストアにCloudWatch Agentの設定内容を保存

Image from Gyazo

<設定内容>

{
  "agent": {
    "run_as_user": "root"
  },
  "metrics": { # カスタムメトリクス設定部分
    "namespace": "test-instance",
    "metrics_collected": {
      "mem": { # メモリ使用率取得設定部分
        "measurement": [
          "mem_used_percent"
        ],
        "metrics_collection_interval": 60
      }
    }
  },
  "logs": { # CloudWatchLogsへのログ送信設定部分
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/var/log/httpd/access_log", # 送信元ファイルの指定
            "log_group_name": "/web/httpd_accesslog", # 送信先ロググループの指定
            "log_stream_name": "{instance_id}",
            "timestamp_format": "%Y-%m-%d &H:$M:$S",
            "timezone": "Local"
          }
        ]
      }
    }
  }
}

2. EC2にSSHで接続して、CloudWatch Agentをインストール

$ sudo yum install amazon-cloudwatch-agent

3. SSMパラメーターストアの設定ファイルを指定して、CloudWatch Agentを起動

$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:/web/cloud-watch-agent-config -s

※ -cオプション部分には、ssm:<ここにパラメータストアのパスを指定してください>

4. CloudWatchメトリクスでメトリクス情報を確認。

メモリ情報が取得できていることが確認できますね。

Image from Gyazo

5. CloudWatch Logsでログ情報を確認

パラメータストアで保存していた設定通り「/web/httpd_accesslog」と言う送信先ロググループができていますね。

Image from Gyazo

Apacheのログも確認することができました。

Image from Gyazo

その他参考情報

まとめ

サクッと設定してみました。

カスタムメトリクスは他にもdisk情報やプロセス情報等も送信する設定ができるので、リファレンスを見てみてください。

また、CloudWatchLogsへのログ情報の送信はAutoScalingグループ等を設定した場合に必須になってくるので、ぜひ活用してください。

Tatsuya Yamashita

Tatsuya Yamashita

AWS / Ruby / Rails あたりをやってます。