目次
CloudWatch AlarmをAWS CLIで設定する
こんにちは。
SER課の栩野です。
最近CloudWatch Alarmを大量に設定する機会があったので
AWS CLIでアラームの設定を行う方法を紹介しようと思います。
マネージメントコンソールからもアラームを設定出来ますが
CLIから設定することで以下のようなメリットがあります。
-
複数アラームの設定が手軽
マネージメントコンソールから数十個のアラームを作成するとなると
気が遠くなりますが、CLIを使えば素早く設定が可能です。 -
マネージメントコンソールに表示されないメトリクスもアラーム設定が可能
CloudWatchでは過去に一度もデータ送信のないメトリクスはマネージメントコンソールから
アラーム設定を行えませんが、CLIなら設定が可能です。
設定方法
CLIからアラームを作成する場合「aws cloudwatch put-metric-alarm」
コマンドを使って、新規アラームの作成と既存のアラームの修正を行います。
例として、EC2のCPU使用率が5分平均90%以上になった場合のアラームを
作成する場合、以下のようなコマンドラインになります。
aws cloudwatch put-metric-alarm \
--alarm-name "CPU使用率監視" \
--alarm-description "EC2のCPU使用率監視" \
--alarm-actions SNSトピックのARN \
--ok-actions SNSトピックのARN \
--namespace AWS/EC2 \
--dimensions "Name=InstanceId,Value=インスタンスID" \
--metric-name CPUUtilization \
--threshold 90 \
--comparison-operator GreaterThanOrEqualToThreshold \
--period 300 \
--evaluation-periods 1 \
--datapoints-to-alarm 1 \
--statistic Average \
--treat-missing-data missing \
それぞれのパラメータの意味について以下説明していきます。
--alarm-name "CPU使用率監視" \
--alarm-description "EC2のCPU使用率監視" \
アラーム名と、アラーム通知に載る説明文を設定します。
--alarm-actions SNSトピックのARN \
--ok-actions SNSトピックのARN \
閾値超過時にアラームの通知先となるSNSトピックと
復旧した際の通知先となるSNSトピックのARNを設定します。
--namespace AWS/EC2 \
--dimensions "Name=InstanceId,Value=インスタンスID" \
--metric-name CPUUtilization \
CloudWatchメトリクスの名前空間、監視対象を指定するためのディメンション
監視するメトリクス名を設定します。
namespaceはEC2なら「AWS/EC2」、RDSなら「AWS/RDS」のようになります。
dimensionsは特定のEC2インスタンスを指定する場合、NameをInstanceId
Valueには対象インスタンスのIDを記載します。
metric-nameは監視するメトリクスの名前を記載します。
それぞれに設定すべき値はCLIの「aws cloudwatch list-metrics」コマンドで
確認したり、マネージメントコンソールからも確認することが出来ます。
{
"Namespace": "AWS/EC2",
"MetricName": "CPUUtilization",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-****************"
}
]
},
対象メトリクスを選択し、[発信元]から確認出来ます。
--threshold 90 \
--comparison-operator GreaterThanOrEqualToThreshold \
アラームの閾値と検知の条件を設定します。
thresholdには閾値なる数字を記載し、comparison-operatorには以下の検知条件を
英語で記載します。
- 超える(GreaterThanThreshold)
- 以上(GreaterThanOrEqualToThreshold)
- 未満(LessThanThreshold)
- 以下(LessThanOrEqualToThreshold)
--period 300 \
--evaluation-periods 1 \
--datapoints-to-alarm 1 \
periodは秒単位で記載し、300が指定された場合は5分あたりに1つのメトリクスを評価します。
evaluation-periodsはアラーム状態を決定するために必要とするデータポイントの数を設定します。
datapoints-to-alarmはevaluation-periodsで必要とするデータポイントのうち
datapoints-to-alarmに設定したデータポイント数が閾値を超過していた場合
アラーム状態に移ります。
上記設定の場合は、5分間で1度データポイントが閾値を超過した場合アラーム状態になります。
periodが60、evaluation-periodsが3、datapoints-to-alarmが2 で設定した場合は
1分×3の3分間のデータポイントのうち、2つ閾値を超過していた場合アラーム状態になります。
--statistic Average \
--treat-missing-data missing \
データポイントの統計方法と、欠落したデータポイントの扱いを設定します。
statisticは以下のいずれかを設定します。
- Average(平均)
- Maximum(最大)
- Minimum(最小)
- SampleCount(サンプル数)
- Sum(合計)
欠落したデータポイントの扱いには以下のいずれかを設定します。
- breaching (欠落しているデータポイントは、閾値を超えた扱いとされる)
- notBreaching (欠落しているデータポイントは、閾値を超えていない扱いとされる)
- ignore(欠落データを無視し、アラーム状態が維持されます)
- missing(欠落データを見つからないものとする。アラーム評価範囲内のすべてのデータポイントが欠落している場合はINSUFFICIENT_DATAの状態に移行する)
アラームの設定後は、以下コマンドで設定したアラームの内容を確認出来ます。
aws cloudwatch describe-alarms --alarm-names [アラーム名]
以上が、AWS CLIによるCloudWatch Alarmの設定方法でした。
参考
put-metric-alarm
Amazon CloudWatch でのアラームの使用
運用サービス課 課長
運用・監視の設計から導入まで、運用サービスを担当してます。
運用監視やセキュリティ関連の話題に興味があるので、そのあたりのブログを多めで投稿していきたいと思ってます。
LINK
クラウドベリージャム:プロフィールページ