CloudWatchのアラートを設定する方法
ここでは各環境向けにCPUとメモリ使用率のアラートを設定する方法を共有します。以下で説明する alarms.sh
、 alarm_mem_template.json
、 alarm_cpu_template.json
の3つのファイルを用いて作業します。
alarms.sh
各ECSサービスのアラームの設定をするShell Scriptです。 alarms.shの名前で以下の内容のファイルを作成します。 このスクリプトでは現在作成されている環境を全て取得し、そのそれぞれに対して、すでに同名のアラームがある場合には更新、 存在しない場合には新規にアラームを作成します。 そのため新しい環境を追加し、CPUおよびメモリ使用率のアラートを設定したい度に実行する必要があります。
#!/bin/bash
services=$(aws ecs list-services --cluster=test-dev-20181030-1 | jq -r .serviceArns[] | sed s#.*/##g)
THRESHOLD_MEM=70
THRESHOLD_CPU=70
for service in ${services[@]}; do
SERVICE=$service THRESHOLD_MEM=$THRESHOLD_MEM envsubst < ./alarm_mem_template.json > alarm_mem.json
SERVICE=$service THRESHOLD_CPU=$THRESHOLD_CPU envsubst < ./alarm_cpu_template.json > alarm_cpu.json
aws cloudwatch put-metric-alarm --cli-input-json file://alarm_mem.json
aws cloudwatch put-metric-alarm --cli-input-json file://alarm_cpu.json
done
使い方
alarms.sh
を作成したディレクトリに alarm_mem_template.json
と alarm_cpu_template.json
をそれぞれ以下の内容で作成します。
alarm_mem_template.json
{
"EvaluationPeriods": 3,
"TreatMissingData": "missing",
"ComparisonOperator": "GreaterThanThreshold",
"ActionsEnabled": true,
"AlarmActions": [
"arn:aws:sns:ap-northeast-1:811111111111:alert2Slack"
],
"OKActions": [
"arn:aws:sns:ap-northeast-1:811111111111:alert2Slack"
],
"Namespace": "AWS/ECS",
"Period": 60,
"Threshold": ${THRESHOLD_MEM},
"AlarmName": "Memory Utilization of ${SERVICE} alert to Slack",
"Dimensions": [
{
"Name": "ClusterName",
"Value": "test-dev-20181030-1"
},
{
"Name": "ServiceName",
"Value": "${SERVICE}"
}
],
"DatapointsToAlarm": 3,
"Statistic": "Average",
"MetricName": "MemoryUtilization"
}
alarm_cpu_template.json
{
"EvaluationPeriods": 3,
"TreatMissingData": "missing",
"ComparisonOperator": "GreaterThanThreshold",
"ActionsEnabled": true,
"AlarmActions": [
"arn:aws:sns:ap-northeast-1:811111111111:alert2Slack"
],
"OKActions": [
"arn:aws:sns:ap-northeast-1:811111111111:alert2Slack"
],
"Namespace": "AWS/ECS",
"Period": 60,
"Threshold": ${THRESHOLD_CPU},
"AlarmName": "CPU Utilization of ${SERVICE} alert to Slack",
"Dimensions": [
{
"Name": "ClusterName",
"Value": "test-dev-20181030-1"
},
{
"Name": "ServiceName",
"Value": "${SERVICE}"
}
],
"DatapointsToAlarm": 3,
"Statistic": "Average",
"MetricName": "CPUUtilization"
}
上記2つのファイルがある状態で $ ./alarms.sh
を実行すると、各環境のCPU、メモリの使用率のアラートが設定することができます。