先日入門したTerraform、Route53のURL監視も入れてみました。
ポイントとしては、Route53のCloudWatchアラームはN.Virginiaのリージョンで作る必要がある点です。
それ以外のリージョンは現在はサポートされていません。
Route53のヘルスチェックを作成する
Route53のヘルスチェックを作成します。
1
2
3
4
5
6
7
8
9
10
11
12
| resource "aws_route53_health_check" "gside" {
fqdn = "gside.org"
port = 80
type = "HTTP"
resource_path = "/blowg/b"
failure_threshold = "3"
request_interval = "30"
tags = {
Name = "gside"
}
}
|
Cloudwatchアラームを作成する
前述したように、N.VirginiaのリージョンにClouwdWatchアラームを作成します。
dimensionsには先程作成したRoute53のヘルスチェックのIDを指定します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| provider "aws" {
region = "us-east-1"
alias = "virginia"
}
resource "aws_cloudwatch_metric_alarm" "gside-healthcheck" {
provider = "aws.virginia"
alarm_name = "gside-healthcheck"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = "1"
metric_name = "HealthCheckStatus"
namespace = "AWS/Route53"
period = "60"
statistic = "Minimum"
threshold = "1"
alarm_description = "This metric monitor gside url healthcheck"
dimensions {
HealthCheckId="${aws_route53_health_check.gside.id}"
}
alarm_actions = ["arn:aws:sns:xxxxxxx"]
}
|
まとめ
ClouwdWatchアラームをN.Virgnia以外で作成して、なかなかRoute53ヘルスチェックと関連づかずハマりましたが、
それ以外は問題なく作成できる内容でした。
ちなみにアラート時のEmail送信用SNSを作るところもTerraform化しようとしましたが、
Emailは送信者認証が入るところがTerraformのモデルに合わず未サポートだそうです。