##背景
CloudWatchを使用しEC2のロードアベレージの監視をしようとしたが現状ロードアベレージのメトリクスは標準で用意されていないので自分でカスタムを作成しないといけないとのこと。。。
なので面倒くさいが自分でスクリプトを書いてCloudWatchから監視できるようにしました!
##ロードアベレージとは
ロードアベレージはシステム全体の負荷状況を表す指標であり
1CPUにおける単位時間あたりの実行待ちとディスクI/O待ちのプロセスの数で表される。
簡単にまとめるとコンピューターシステムが実行している作業量のことです。
##さっそく
■まずEC2にCloudWatchAgentServerPolicyのロールを作成しアタッチする。
sshログインをして
$ vi /home/ec2-user/loadaverage.sh
#!/bin/bash
## AWS CLI設定
readonly AWS_CLI="/usr/bin/aws"
readonly AWS_CLI_REGION="ap-northeast-1"
## メトリックス名と単位の設定
metric_name="LoadAverage-EC2"
name_space="AmazonLinux/${metric_name}"
unit="Percent"
#unit="Count"
## ロードアベレージを取得する自分の環境に合わす
## uptimeコマンドで出てくる最初の数字を取得できるように変える(10~12くらい?)
load_average=`uptime | tr -s ' ' | cut -d ' ' -f 11 | cut -d ',' -f 1`
## AWS CloudWatchのカスタムメトリクスにロードアベレージを追加する
${AWS_CLI} cloudwatch --region ${AWS_CLI_REGION} put-metric-data --metric-name `hostname -s`/${metric_name} --namespace ${name_space} --value ${load_average} --unit ${unit}
:wq
■権限付与
$ chmod 755 /home/ec2-user/loadaverage.sh
■cloudwatchへメトリクス送信
$ /home/ec2-user/loadaverage.sh
■EC2インスタンスのロードアベレージをCloudWatchに5分おきに記録する
$ crontab -e
*/5 * * * * /home/ec2-user/loadaverage.sh
##参考記事
・https://qiita.com/na0AaooQ/items/1fedb1d0136cd78c6aa1
・https://qiita.com/ryuichi1208/items/3b21aee6c38bcfdb12b1