Skip to content
No description, website, or topics provided.
Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
plugins
README.md
cloudwatch-agent.sh

README.md

EC2 上のリソースを CloudWatch に投げるスクリプト

なんすかこれ?

aws cliPython 版を使って EC2 インスタンス上の以下のリソースを CloudWatch のカスタムメトリクスに投げるスクリプト。

  • CPU 使用率
  • Load Average
  • メモリ使用率
  • Root パーティションのディスク使用率
  • 初回の動作時のみ Alarm を設定する(SNSTopic ARN が必須なので事前に作成しておくこと)

使い方

git clone

監視したいサーバー上でスクリプトを git clone してくる

git clone  https://github.com/inokappa/cloudwatch-agent.git

実行権限を設定する

cd cloudwatch-agent
chmod 755 *.sh
chmod 755 ./plugins/*.sh

初期設定として aws-watch.sh 内の以下を環境に応じて設定する

  • REGION(リージョンを指定)
  • NAMESPACE(CloudWatch に登録したい監視グループ)
  • ARN(AWSSNS で設定した Topic ARN
  • THRESHHOLD(CPU 使用率、メモリ使用率、ディスク使用率のしきい値)

AWS_CREDENTIAL_FILE を修正

API の鍵ファイルを以下のように作成。

AWSAccessKeyId=AKxxxxxxxxxxxxxxxxx
AWSSecretKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

作成した鍵ファイルのパスを指定する。

export AWS_CREDENTIAL_FILE=/path/to/key

尚、鍵ファイルの権限管理は適切に行うこと。

適当に cron に仕掛けたりして...

*/5 * * * * cd /path/to/cloudwatch-agent/ && ./cloudwatch-agent.sh >/dev/null 2>&1

アラートのしきい値

現状は以下のような固定値となっている。

  • 監視対象の値が ${Threshold}% 以上が 1 回以上続いたらアラート
  • Load AverageCPU のコア数を超える値が 1 回以上続いたらアラート

以下のシェル関数で定義されている。

function create_alarm() {
  metrics_param ${1}
  aws --region ${REGION} cloudwatch put-metric-alarm \
    --actions-enabled \
    --alarm-name ${NAMESPACE}-${hostname}-${1} \
    --alarm-actions ${ARN} \
    --ok-actions ${ARN} \
    --metric-name ${1} \
    --namespace ${NAMESPACE} \
    --statistic Average \
    --period 300 \
    --evaluation-periods 1 \
    --threshold ${Threshold} \
    --unit ${Unit} \
    --comparison-operator GreaterThanOrEqualToThreshold \
    --dimensions Name=Instanceid,Value=${Instance_id} Name=Hostname,Value=${hostname}
  if [ $? = "0" ];then
    touch "/tmp/${1}_alarm_created"
  else
    echo "Create Alarm Failure."
  fi
}

画面


参考


todo


Chef

You can’t perform that action at this time.