📊

AWS SystemMangerからCloudWatchAgentをインストールし、CloudWatchのメトリクスにメモリ使用率を表示する

2024/01/26に公開

備忘録として。

1.IAMロールの作成 & EC2にロールをアタッチ

下記ポリシーがアタッチされていればOK。

  • AmazonEC2RoleforSSM
  • CloudWatchAgentServerPolicy
  • AmazonSSMManagedInstanceCore

ロール名: ec2-cloudwatch-role

2. CloudWatchAgentをインストール

「SystemManager > ノード管理 > Run Command」から、コマンドを実行。

コマンド名: AWS-ConfigureAWSPackage

デフォと比較して変更するのは、NameとVersionのみ。

Name: AmazonCloudWatchAgent
Version: latest

※この時、インスタンスリストに存在しない場合があるが、下記を確認する。

  • 1で作成したロールがアタッチされているかどうか(「AmazonEC2RoleforSSM」がアタッチされていることが必須)
  • そもそもSSM Agentが入っているインスタンスかどうか

3. パラメータストアで設定を保存

パラメータ名: AmazonCloudWatch-ManageAgent-Parameter

{
   "agent":{
      "metrics_collection_interval":60,
      "run_as_user":"root"
   },
   "metrics":{
      "append_dimensions":{
         "AutoScalingGroupName":"${aws:AutoScalingGroupName}",
         "ImageId":"${aws:ImageId}",
         "InstanceId":"${aws:InstanceId}",
         "InstanceType":"${aws:InstanceType}"
      },
      "metrics_collected":{
         "disk":{
            "measurement":[
               "used_percent",
               "inodes_free"
            ],
            "metrics_collection_interval":60,
            "resources":[
               "*"
            ]
         },
         "mem":{
            "measurement":[
               "mem_used_percent",
               "mem_available_percent"
            ],
            "metrics_collection_interval":60
         },
         "swap":{
            "measurement":[
               "swap_used_percent"
            ],
            "metrics_collection_interval":60
         }
      }
   }
}

「append_dimensions」を入れることで、Cloudwatchのメトリクスを選択するときにインスタンスIDとかAMIのIDで逆引きできるようになる。

メトリクスの集約もできるみたいだが、今回は必要なかったので省略。

詳しくはこちら

4. 3で作成したパラメータを適用

「SystemManager > ノード管理 > Run Command」から、コマンドを実行。

コマンド名: AmazonCloudWatch-ManageAgent

デフォと比較して変更するのは、Optional Configuration Locationのみ。

Optional Configuration Location: 3で作成したパラメータの名前

Discussion