LinuxからCloudWatchカスタムメトリクスを取得してくる
検証用途だと、EC2を止め忘れをやっちゃう人って結構居ませんか?
今回は一定時間操作が無かったEC2(linux)を自動停止する仕組みを構築してみました
前回検証
検証内容
前回検証のLinux版になります。
使用ツール
・CloudWatch
・IAM
・EC2
注意点
今回紹介する手順は、AmazoneLinuxを使用することを前提とした手順です
他のディストリビュージョンだとAWS CLIがデフォルトで入っていないので、CLIをインストールする必要があります
手順
①CloudWatchにカスタムメトリクスを送るためのIAMユーザ作成
1.IAMマネジメントコンソールのユーザをクリック
2.ユーザを追加をクリック
3.ユーザ名に適当な名前を入力し、プログラムによるアクセスにチェックを入れ、次のステップ:アクセス権限をクリック
4.既存のポリシーを直接アタッチをクリックし、ポリシーの作成をクリック
5.Policy Generatorを選択(新しいタブで表示されます)
6.次のようにパラメータを指定し、ステートメントの追加
効果:許可
AWSサービス:Amazone CloudWatch
アクション:PutMetricData
7.適当なポリシー名を入力し、ポリシーの作成をクリック
8.元のタブに戻り、更新→フィルターをユーザによる管理する→①.7で作成したポリシーを選択→次のステップ:確認をクリック
9.ユーザ作成内容を確認し、ユーザの作成をクリック
10.アクセスキーID シークレットアクセスキーをメモする
②AWS CLIで使うユーザの認証設定する
1.認証情報の設定
aws configure --profile CloudWatch
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX ←ここに①.10でメモしたアクセスキーIDを入力
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXX ←ここに①.10でメモしたシークレットアクセスキーを入力
Default region name [None]: us-east-1 ←リージョンを指定
Default output format [None]:
2.設定の確認
aws configure list --profile CloudWatch
③カスタムメトリクス送信用シェルスプリクトの作成
1.フォルダの作成
mkdir /home/ec2-user/cloudwatch
2.シェルスプリクトの作成
vi /home/ec2-user/cloudwatch/custom_metrics.sh
3.シェルの中身
#!/bin/bash
############ACTIVESESIONS############
#VariableDefine
PROFILE=CloudWatch
METRIC_NAME=ActiveSessions
NAMESPACE=Test
VALUE=$(who | wc -l)
UNIT=Count
INSTANCE_ID=$(curl -s XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
#CLI
aws cloudwatch put-metric-data --profile ${PROFILE} --metric-name ${METRIC_NAME} --namespace ${NAMESPACE} --value ${VALUE} --unit ${UNIT} --dimensions "InstanceId=${INSTANCE_ID}"
##################################
4.シェルスプリクト動作確認
sh /home/ec2-user/cloudwatch/custom_metrics.sh
CloudWatchマネジメントコンソールで、値が取得できていることを確認
④cronの設定
1.シェルスプリクトに実行権限を付与
sudo chmod 755 /home/ec2-user/cloudwatch/custom_metrics.sh
2.作成したシェルスプリクトを5分毎に実行するように設定
crontab - e
*/5 * * * * /home/ec2-user/cloudwatch/custom_metrics.sh
3.cronが正常に動作していることを確認
sudo tail -f /var/log/cron
正常に動作している場合下記のログが確認できる
CROND[3068]: (ec2-user) CMD (/home/ec2-user/cloudwatch/custom_metrics.sh)
⑤自動停止アラートの作成
1.CloudWatchマネジメントコンソールでアラーム→アラームの作成をクリック
2.カスタムメトリクスで名前空間を選択
3.メトリクスを選択し、次をクリック
4.各パラメータを設定し、アラームの作成をクリック
補足
AWS CLIの勉強も兼ねての検証だったので、CLIを使用する方法でカスタムメトリクス取得の検証を行いましたが、SSMエージェントをインストールしてEC2 Systems Managerで一括設定するほうが、良いかもしれません