皆様こんにちは。
今回はCLIを利用して高可用性アーキテクトの構築をしていきます。
この記事ではCLIよりCloudWatchAlarmの作成を行います。
このブログはCLIによるCloudWatchAlarmの作成をする上での知識を記事としてまとめ再確認し、皆様と共有するため作成します。
1.高可用性アーキテクト構築目次
2.CloudWatchとは
Amazon CloudWatch は、DevOps エンジニア、デベロッパー、サイト信頼性エンジニア (SRE)、IT マネージャー、および製品所有者のために構築されたモニタリング/オブザーバビリティサービスです。CloudWatch は、アプリケーションをモニタリングし、システム全体におけるパフォーマンスの変化に対応して、リソース使用率の最適化を行うためのデータと実用的なインサイトを提供します。CloudWatch は、モニタリングおよびオペレーショナルデータをログ、メトリクス、イベントの形式で収集します。
引用:Amazon CloudWatch
Amazon CloudWatch Metrics
メトリクスはシステムのパフォーマンスに関するデータです。デフォルトで多くのAWSリソース (Amazon EC2、Amazon EBS、Amazon RDS など) の無料のメトリクスを提供しています。
CloudWatch Agentを利用して追加のカスタムメトリクスを発行できます。
Amazon CloudWatch Agent
Amazon EC2から内部システムレベルのメトリクスを収集するためにはCloudWatch Agentをデプロイする必要があります。
オンプレミスサーバーもCloudWatch Agentを利用しシステムレベルのメトリクスを収集することが可能です
Amazon CloudWatch Alarm
CloudWatch メトリクスを監視し、特定のしきい値を超えた場合に 1 つ以上のアクションを実行します。アクションでは、Amazon SNS トピックに通知を送信したり、Amazon EC2 アクション、Amazon EC2 Auto Scaling アクションを実行できます。
今回は構築した高可用性アーキテクトを監視するため、CloudWatchAlarmを利用します。
またEC2から追加のカスタムメトリクスを発行したいため、CloudWatchAgentも利用します。
類似の監視サービスにはDatadog Japanの「Datadog」があげられます。
3.フロー図
カスタムメトリクスを含むCloudWatchAlarmのアラームの通知を自分のメールアドレスに配信するには上記の図の構成でします。
今回はCLoudwatchAlarm作成までのフローを以下で紹介します。
- EC2起動時にユーザーデータでインストールしたCloudWatchAgentの初期設定をします。
- 収集したメトリクスを利用して、CloudWatchAlarmの作成をします。
4.CloudWatch Agent初期設定
CloudWatchAgentはEC2起動時にユーザーデータでインストール済みのため、初期設定から始めます。
SSHでEC2インスタンスに接続して、以下のコマンドでセットアップウィザードを実行します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
セットアップウィザードの実行内容は以下のようになります。
- ウィザード起動
================================================================
= Welcome to the Amazon CloudWatch Agent Configuration Manager =
= =
= CloudWatch Agent allows you to collect metrics and logs from =
= your host and send them to CloudWatch. Additional CloudWatch =
= charges may apply. =
================================================================
- どのOSでエージェントを使用する予定ですか?
On which OS are you planning to use the agent?
1. linux
2. windows
3. darwin
default choice: [1]:
1
今回はLinuxOSを利用しているので1を選択。
- EC2またはオンプレミスのホストを使用していますか?
Are you using EC2 or On-Premises hosts?
1. EC2
2. On-Premises
default choice: [1]:
1
EC2インスタンスで利用するので1を選択。
- どのユーザーでエージェントを実行する予定ですか?
Which user are you planning to run the agent?
1. root
2. cwagent
3. others
default choice: [1]:
1
実質的にはroot又はAmazonlinuxのデフォルトユーザーであるec2-userどちらかの選択です。
今回はデフォルトで選択されている1にします。
- StatsDデーモンを有効にしますか?
Do you want to turn on StatsD daemon?
1. yes
2. no
default choice: [1]:
2
今回はStatsDデーモンは利用しないので2を選択。
- CollectDからメトリクスを監視しますか?警告:CollectDがインストールされていないと、Agentの起動に失敗します。
Do you want to monitor metrics from CollectD? WARNING: CollectD must be installed or the Agent will fail to start
1. yes
2. no
default choice: [1]:
2
CollectDは利用しないので2を選択します。
CollectDをインストールしてない状態で1を選択すると、エラーで起動に失敗します。
- CPU、メモリなどを監視したいですか?
Do you want to monitor any host metrics? e.g. CPU, memory, etc.
1. yes
2. no
default choice: [1]:
1
今回はディスク使用率のカスタムメトリクスを取得したいので1を選択。
- コアごとのCPUメトリックスを監視したいですか?
Do you want to monitor cpu metrics per core?
1. yes
2. no
default choice: [1]:
2
今回はコアごとのCPUメトリックスを監視する必要はないので2を選択。
- ec2のディメンション(ImageId, InstanceId, InstanceType, AutoScalingGroupName)が利用可能であれば、すべてのメトリクスに追加しますか?
Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
1. yes
2. no
default choice: [1]:
1
ディメンションが利用可能であれば追加したいので1を選択。
- ec2のディメンション(InstanceId)を集約するか?
Do you want to aggregate ec2 dimensions (InstanceId)?
1. yes
2. no
default choice: [1]:
2
今回はメトリクスの集約は必要ないので2を選択。
- メトリクスを何秒間隔で収集するか?
Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.
1. 1s
2. 10s
3. 30s
4. 60s
default choice: [4]:
4
今回は60秒間隔で十分なのでデフォルトの4を選択。
- どのようなデフォルトメトリクス設定をご希望ですか?
Which default metrics config do you want?
1. Basic
2. Standard
3. Advanced
4. None
default choice: [1]:
1
今回使用するカスタムメトリクスはBasicで十分取得できるため1を選択。
- 上記の設定に満足していますか?
Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.
1. yes
2. no
default choice: [1]:
1
問題ないので1を選択。
- 既存のCloudWatch Log Agentはありますか?
Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) configuration file to import for migration?
1. yes
2. no
default choice: [2]:
2
既存のCloudWatch Log Agentはないので2を選択。
- ログファイルを監視しますか?
Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:
2
今回はログファイルを監視する必要はないので2を選択。
- コンフィグをSSMパラメータストアに保存しますか?
Do you want to store the config in the SSM parameter store?
1. yes
2. no
default choice: [1]:
2
SSMは利用しないので2を選択。
================================================================
= Welcome to the Amazon CloudWatch Agent Configuration Manager =
= =
= CloudWatch Agent allows you to collect metrics and logs from =
= your host and send them to CloudWatch. Additional CloudWatch =
= charges may apply. =
================================================================
On which OS are you planning to use the agent?
1. linux
2. windows
3. darwin
default choice: [1]:
Trying to fetch the default region based on ec2 metadata...
Are you using EC2 or On-Premises hosts?
1. EC2
2. On-Premises
default choice: [1]:
Which user are you planning to run the agent?
1. root
2. cwagent
3. others
default choice: [1]:
Do you want to turn on StatsD daemon?
1. yes
2. no
default choice: [1]:
Which port do you want StatsD daemon to listen to?
default choice: [8125]
What is the collect interval for StatsD daemon?
1. 10s
2. 30s
3. 60s
default choice: [1]:
What is the aggregation interval for metrics collected by StatsD daemon?
1. Do not aggregate
2. 10s
3. 30s
4. 60s
default choice: [4]:
Do you want to monitor metrics from CollectD? WARNING: CollectD must be installed or the Agent will fail to start
1. yes
2. no
default choice: [1]:
Do you want to monitor any host metrics? e.g. CPU, memory, etc.
1. yes
2. no
default choice: [1]:
Do you want to monitor cpu metrics per core?
1. yes
2. no
default choice: [1]:
Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
1. yes
2. no
default choice: [1]:
Do you want to aggregate ec2 dimensions (InstanceId)?
1. yes
2. no
default choice: [1]:
Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.
1. 1s
2. 10s
3. 30s
4. 60s
default choice: [4]:
Which default metrics config do you want?
1. Basic
2. Standard
3. Advanced
4. None
default choice: [1]:
Current config as follows:
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"metrics": {
"aggregation_dimensions": [
[
"InstanceId"
]
],
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.
1. yes
2. no
default choice: [1]:
Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) configuration file to import for migration?
1. yes
2. no
default choice: [2]:
Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:
2
Saved config file to /opt/aws/amazon-cloudwatch-agent/bin/config.json successfully.
Current config as follows:
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"metrics": {
"aggregation_dimensions": [
[
"InstanceId"
]
],
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
Please check the above content of the config.
The config file is also located at /opt/aws/amazon-cloudwatch-agent/bin/config.json.
Edit it manually if needed.
Do you want to store the config in the SSM parameter store?
1. yes
2. no
default choice: [1]:
2
Program exits now.
次に以下のコマンドを使用して、起動します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
最後に起動できたかの確認のため以下のコマンドを使用します。
systemctl status amazon-cloudwatch-agent.service
起動確認できました。
上記の方法で両方のEC2インスタンスに設定し、Agentの設定は完了です。
5.CloudWatch Alarm作成
EC2にエラーが起きてないか、EBSのディスクに負荷がかかってないかを監視するためにCloudWatchAlarm(以下CWAlarm)を作成します。
まずシステムエラー時に通知と復旧を行うアラームを作成します。
作成には、[aws cloudwatch put-metric-alarm]コマンドを使用します。
使用するオプション | 設定値 | 説明 |
---|---|---|
--alarm-name | umemoto-AR-1 umemoto-AR-2 |
アラーム名を指定します |
--alarm-description | "Alarm for monitoring StatusCheckFailed_System" | アラームの説明を入力 |
--metric-name | StatusCheckFailed_System | 監視するメトリクスを指定 |
--namespace | AWS/EC2 | 監視するサービスの名前空間を指定 |
--statistic | Maximum | 統計に最大を指定 |
--period | 60 | 迅速なオートリカバリーを考慮し最小値 |
--threshold | 1 | 1以上でエラー状態とするため |
--comparison-operator | GreaterThanOrEqualToThreshold | 1以上でエラー状態とするため |
--dimensions | "Name=InstanceId,Value=i-xxxxx" | インスタンスIDを指定 |
--evaluation-periods | 2 | 2回データポイントが越えた時アラーム状態にする |
--alarm-actions | arn:aws:automate:ap-northeast-2:ec2:recover arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS |
通知と復旧のアクションを指定 |
--treat-missing-data | ignore | アラーム後のデータ欠落時はなんらかのエラーが起きていることが予想されるため |
--tags | Key=Name,Value=umemoto-AR-1 Key=Name,Value=umemoto-AR-2 |
タグを入力 |
入力
aws cloudwatch put-metric-alarm `
--alarm-name umemoto-AR-1 `
--alarm-description "Alarm for monitoring StatusCheckFailed_System" `
--metric-name StatusCheckFailed_System `
--namespace AWS/EC2 `
--statistic Maximum `
--period 60 `
--threshold 1 `
--comparison-operator GreaterThanOrEqualToThreshold `
--dimensions "Name=InstanceId,Value=i-xxxxx" `
--evaluation-periods 2 `
--alarm-actions arn:aws:automate:ap-northeast-2:ec2:recover arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS `
--treat-missing-data ignore --tags Key=Name,Value=umemoto-AR-1
------
aws cloudwatch put-metric-alarm `
--alarm-name umemoto-AR-2 `
--alarm-description "Alarm for monitoring StatusCheckFailed_System" `
--metric-name StatusCheckFailed_System `
--namespace AWS/EC2 `
--statistic Maximum `
--period 60 `
--threshold 1 `
--comparison-operator GreaterThanOrEqualToThreshold `
--dimensions "Name=InstanceId,Value=i-xxxxx" `
--evaluation-periods 2 `
--alarm-actions arn:aws:automate:ap-northeast-2:ec2:recover arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS `
--treat-missing-data ignore --tags Key=Name,Value=umemoto-AR-2
出力なし
作成できたかの確認のため、[aws cloudwatch describe-alarms]コマンドを使用します。
使用するオプション | 設定値 | 説明 |
---|---|---|
--alarm-name | "umemoto-AR-1" "umemoto-AR-2 " |
アラーム名を指定します |
--query | "MetricAlarms[*].{AlarmName:AlarmName,StateValue:StateValue}" | 出力が長くなりすぎるため、名前と状態のみ抽出 |
入力
aws cloudwatch describe-alarms `
--alarm-names "umemoto-AR-1" "umemoto-AR-2" `
--query "MetricAlarms[*].{AlarmName:AlarmName,StateValue:StateValue}"
出力
[
{
"AlarmName": "umemoto-AR-1",
"StateValue": "OK"
},
{
"AlarmName": "umemoto-AR-2",
"StateValue": "OK"
}
]
作成の確認ができました。
次はEBSのディスク使用率が70%以上の時にメールで通知してくれるアラームを作成します。
作成には、[aws cloudwatch put-metric-alarm]コマンドを使用します。
使用するオプション | 設定値 | 説明 |
---|---|---|
--alarm-name | umemoto-disk-1 umemoto-disk-2 |
アラーム名を指定します |
--alarm-description | "Alarm for monitoring DiskUsedPercent" | アラームの説明を入力 |
--metric-name | disk_used_percent | 監視するメトリクスを指定 |
--namespace | CWAgent | 監視するサービスの名前空間を指定 |
--statistic | Average | 統計に平均を指定 |
--period | 300 | 緊急性がないのでデフォルト値 |
--threshold | 70 | 70%以上でエラー状態とするため |
--comparison-operator | GreaterThanOrEqualToThreshold | 70%以上でエラー状態とするため |
--dimensions | Name=path,Value=/ Name=InstanceId,Value=i-xxxxx Name=ImageId,Value=ami-0fa49cc9dc8d62c84 Name=InstanceType,Value=t2.micro Name=device,Value=xvda1 Name=fstype,Value=xfs |
必要な情報を入力 |
--evaluation-periods | 2 | 2回データポイントが越えた時アラーム状態にする |
--alarm-actions | arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS | 通知のアクションを指定 |
--treat-missing-data | missing | データ欠落時はデータが欠落していると表示されても問題ないため |
--tags | Key=Name,Value=umemoto-disk-1 Key=Name,Value=umemoto-disk-2 |
タグを入力 |
入力
aws cloudwatch put-metric-alarm `
--alarm-name umemoto-disk-1 `
--alarm-description "Alarm for monitoring DiskUsedPercent" `
--metric-name disk_used_percent `
--namespace CWAgent `
--statistic Average `
--period 300 `
--threshold 70 `
--comparison-operator GreaterThanOrEqualToThreshold `
--dimensions "Name=InstanceId,Value=i-xxxxx" `
--evaluation-periods 2 `
--alarm-actions arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS `
--treat-missing-data missing --tags Key=Name,Value=umemoto-disk-1
-----
aws cloudwatch put-metric-alarm `
--alarm-name umemoto-disk-2 `
--alarm-description "Alarm for monitoring DiskUsedPercent" `
--metric-name disk_used_percent `
--namespace CWAgent `
--statistic Average `
--period 300 `
--threshold 70 `
--comparison-operator GreaterThanOrEqualToThreshold `
--dimensions "Name=InstanceId,Value=i-xxxxx" `
--evaluation-periods 2 `
--alarm-actions arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS `
--treat-missing-data missing --tags Key=Name,Value=umemoto-disk-2
出力なし
作成できたかの確認のため、[aws cloudwatch describe-alarms]コマンドを使用します。
使用するオプション | 設定値 | 説明 |
---|---|---|
--alarm-name | "umemoto-disk-1" "umemoto-disk-2 " |
アラーム名を指定します |
--query | "MetricAlarms[*].{AlarmName:AlarmName,StateValue:StateValue}" | 出力が長くなりすぎるため、名前と状態のみ抽出 |
入力
aws cloudwatch describe-alarms `
--alarm-names "umemoto-disk-1" "umemoto-disk-2" `
--query "MetricAlarms[*].{AlarmName:AlarmName,StateValue:StateValue}"
出力
[
{
"AlarmName": "umemoto-disk-1",
"StateValue": "OK"
},
{
"AlarmName": "umemoto-disk-2",
"StateValue": "OK"
}
]
作成の確認ができました。
さらにEC2が問題なく動作しているか監視するアラームを作成しましょう。
作成には、[aws cloudwatch put-metric-alarm]コマンドを使用します。
使用するオプション | 設定値 | 説明 |
---|---|---|
--alarm-name | umemoto-ec2-1 umemoto-ec2-2 |
アラーム名を指定します |
--alarm-description | "Alarm for monitoring StatusCheckFailed" | アラームの説明を入力 |
--metric-name | StatusCheckFailed | 監視するメトリクスを指定 |
--namespace | AWS/EC2 | 監視するサービスの名前空間を指定 |
--statistic | Maximum | 統計に最大を指定 |
--period | 60 | 迅速な復旧のため最小値とする |
--threshold | 1 | 1以上でエラー状態とするため |
--comparison-operator | GreaterThanOrEqualToThreshold | 1以上でエラー状態とするため |
--dimensions | "Name=InstanceId,Value=i-xxxxx" | インスタンスIDを指定 |
--evaluation-periods | 2 | 2回データポイントが越えた時アラーム状態にする |
--alarm-actions | arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS | 通知のアクションを指定 |
--treat-missing-data | missing | データ欠落時はデータが欠落していると表示されても問題ないため |
--tags | Key=Name,Value=umemoto-ec2-1 Key=Name,Value=umemoto-ec2-2 |
タグを入力 |
入力
aws cloudwatch put-metric-alarm `
--alarm-name umemoto-ec2-1 `
--alarm-description "Alarm for monitoring StatusCheckFailed" `
--metric-name StatusCheckFailed `
--namespace AWS/EC2 `
--statistic Maximum `
--period 60 `
--threshold 1 `
--comparison-operator GreaterThanOrEqualToThreshold `
--dimensions "Name=InstanceId,Value=i-xxxxx" `
--evaluation-periods 2 `
--alarm-actions arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS `
--treat-missing-data missing `
--tags Key=Name,Value=umemoto-ec2-1
-----
aws cloudwatch put-metric-alarm `
--alarm-name umemoto-ec2-2 `
--alarm-description "Alarm for monitoring StatusCheckFailed" `
--metric-name StatusCheckFailed `
--namespace AWS/EC2 `
--statistic Maximum `
--period 60 `
--threshold 1 `
--comparison-operator GreaterThanOrEqualToThreshold `
--dimensions "Name=InstanceId,Value=i-xxxxx" `
--evaluation-periods 2 `
--alarm-actions arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS `
--treat-missing-data missing `
--tags Key=Name,Value=umemoto-ec2-2
出力なし
作成できたかの確認のため、[aws cloudwatch describe-alarms]コマンドを使用します。
使用するオプション | 設定値 | 説明 |
---|---|---|
--alarm-name | "umemoto-ec2-1" "umemoto-ec2-2 " |
アラーム名を指定します |
--query | "MetricAlarms[*].{AlarmName:AlarmName,StateValue:StateValue}" | 出力が長くなりすぎるため、名前と状態のみ抽出 |
入力
aws cloudwatch describe-alarms `
--alarm-names "umemoto-ec2-1" "umemoto-ec2-2" `
--query "MetricAlarms[*].{AlarmName:AlarmName,StateValue:StateValue}"
出力
[
{
"AlarmName": "umemoto-ec2-1",
"StateValue": "OK"
},
{
"AlarmName": "umemoto-ec2-2",
"StateValue": "OK"
}
]
作成の確認ができました。
最後にALBの分散対象のEC2が正常かどうかを監視するアラームを作成します。
作成には、[aws cloudwatch put-metric-alarm]コマンドを使用します。
使用するオプション | 設定値 | 説明 |
---|---|---|
--alarm-name | umemoto-ALB | アラーム名を指定します |
--alarm-description | "Alarm for monitoring HealthyHostCount" | アラームの説明を入力 |
--metric-name | HealthyHostCount | 監視するメトリクスを指定 |
--namespace | AWS/ApplicationELB | 監視するサービスの名前空間を指定 |
--statistic | Minimum | 統計に最小を指定 |
--period | 60 | 迅速な復旧のため最小値とする |
--threshold | 1 | 1以下でエラー状態とするため |
--comparison-operator | LessThanOrEqualToThreshold | 1以下でエラー状態とするため |
--dimensions | Name=TargetGroup,Value=targetgroup/umemoto-TGN/xxxxx Name=LoadBalancer,Value=app/umemoto-ALB/xxxxx |
ターゲットグループとロードバランサの情報を指定 |
--evaluation-periods | 2 | 2回データポイントが越えた時アラーム状態にする |
--alarm-actions | arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS | 通知のアクションを指定 |
--tags | Key=Name,Value=umemoto-ec2-1 Key=Name,Value=umemoto-ec2-2 |
タグを入力 |
入力
aws cloudwatch put-metric-alarm `
--alarm-name umemoto-ALB `
--alarm-description "Alarm for monitoring HealthyHostCount" `
--metric-name HealthyHostCount `
--namespace AWS/ApplicationELB `
--statistic Minimum `
--period 60 `
--threshold 1 `
--comparison-operator LessThanOrEqualToThreshold `
--dimensions Name=TargetGroup,Value=targetgroup/umemoto-TGN/xxxxx Name=LoadBalancer,Value=app/umemoto-ALB/xxxxx`
--evaluation-periods 2 `
--alarm-actions arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS `
--treat-missing-data missing `
--tags Key=Name,Value=umemoto-ALB
出力なし
作成できたかの確認のため、[aws cloudwatch describe-alarms]コマンドを使用します。
使用するオプション | 設定値 | 説明 |
---|---|---|
--alarm-name | "umemoto-ALB" | アラーム名を指定します |
--query | "MetricAlarms[*].{AlarmName:AlarmName,StateValue:StateValue}" | 出力が長くなりすぎるため、名前と状態のみ抽出 |
入力
aws cloudwatch describe-alarms `
--alarm-names "umemoto-ALB" `
--query "MetricAlarms[*].{AlarmName:AlarmName,StateValue:StateValue}"
出力
[
{
"AlarmName": "umemoto-ALB",
"StateValue": "OK"
}
]
作成の確認ができました。
これですべてのアラームが作成できました。
6.検証
7.感想
CloudWatchAlarmの作成はオプションが多く大変でしたが良い経験になりました。
次回もよろしくお願いします。
8.参照
AWS CLI Command Reference
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/index.html