CloudWatchへのメモリ利用メトリクスを送信する


EC 2インスタンスから余分なメトリックを収集し、CloudWatchに送信する2つの方法をレビューします.最初の手順は、迅速なN汚い方法です.つ目はCloudWatchエージェントとエージェントの設定を使用したAWS優先の方法です.
このアドバイスは、準備ができていないだけであなたの足を濡らすために.

クイック'ダーティ
これはUbuntuのセットアップですが、ほとんどすべてRHelベースに転送する必要があります.cronジョブはフリーメモリをチェックするスクリプトを実行するスクリプトを実行することです.追加の変数を生成することで拡張できます.put-metric-data 呼び出し.
  • CloudWatchのパーミッションを使用してロールを設定し、インスタンスにアタッチします.
  • をインストール

  • スクリプトは、~/mem.sh テストのために.使用しているので、トークンを取得し、注入するIMDSv2 to protect against SSRF .
    #!/usr/bin/env bash
    readonly TOKEN=$(curl -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 30" "http://169.254.169.254/latest/api/token")
    USEDMEMORY=$(free -m | awk 'NR==2{printf "%.2f\t", ($3/$2)*100 }')
    INSTANCE_ID=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id)
    REGION=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/dynamic/instance-identity/document | grep '\"region\"' | cut -d\" -f4)
    
    aws cloudwatch put-metric-data --metric-name memory-usage --dimensions Instance=$INSTANCE_ID --namespace "Custom" --value $USEDMEMORY --region $REGION
    
  • cronジョブを作成するecho '*/5 * * * * ubuntu /home/ubuntu/mem.sh' | sudo tee /etc/cron.d/cw_mem

  • 好ましい方法
    AWSは、デーモンとして実行し、あなたのためのメトリクスを発行するCloudWatchエージェント、ツールを発行します.これは、構成ファイルだけでなく、システムの足場を必要とします.あなたがSSMを通してインストールするならば、systemdファイルは自由に来て、わずかな調整を必要とするだけです.
  • IAMインスタンスロール
  • ウォッチウォッチ許可
  • EC 2 :記述
  • Install Cloudwatch Agent (prefer SSM)
  • 集合をインストールするsudo apt-get update && sudo apt-get install collectd
  • CloudWatchエージェントの設定ファイルを設定します.example . 私のファイルを/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
  • サービス開始
  • 手動でsudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a start -c /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
  • 別の場合は、ユニットファイルを更新することができます/etc/systemd/system/amazon-cloudwatch-agent.service
  • ありがとう
    私を助けるためにcurl 私が強制することができて、IMDSV 2に従うように、呼び出します