Как заставить Route53 Health Check работать с сигнализацией CloudWatch Terraform?

Я пытаюсь получить сигнал CloudWatch, работающий с функцией проверки работоспособности Route53.

Я могу вручную настроить все в графическом интерфейсе AWS.

Когда я пытаюсь использовать Terraform, проверка работоспособности показывает «Нет настроенных сигналов тревоги».

Я видел предложения по методам, использующим проверки работоспособности для портов http (или других), но моя служба является внутренней и поэтому не открыта для проверок портов HTTP / TCP, поэтому вместо этого я смотрю на сигнал тревоги CloudWatch StatusCheckFailed.

Что бы я ни делал, мне кажется, что для моих проверок работоспособности у меня не настроено ни одного сигнала тревоги (на этом скриншоте показаны два, созданные вручную, с рабочими сигналами тревоги, и два, созданные с помощью Terraform, с указанием "Никаких настроенных сигналов тревоги").

Сигналы не настроены

Кому-нибудь удалось заставить это работать?

-=-=-=-=-

Я вручную добавил сигнал тревоги в один из пунктов «Проверки работоспособности не настроены» выше в графическом интерфейсе консоли AWS, и он появился и обновил свой статус.

Сигнал добавлен вручную

При этом я заметил, что описание проверки работоспособности было названием сигнала тревоги CloudWatch, поэтому могло показаться, что по крайней мере часть информации о тревоге была обработана Terraform.

-=-=-=-=-=-=-=-=-

Это код Terraform для одного из предупреждений Route53 Health Checks и CloudWatch.

Сигнал CW:

# This is a dummy alarm, for testing.
# CloudWatch alarm for use with Route 53 DNS health Check; this does not have an action.
resource "aws_cloudwatch_metric_alarm" "dummy_alarm" {
  provider                  = "aws.use1"
  alarm_name                = "smb-nfs-server-dummy-alarm"
  alarm_description         = "Check the SMB-NFS server is alarm"
  comparison_operator       = "GreaterThanOrEqualToThreshold"
  metric_name               = "StatusCheckFailed"
  namespace                 = "AWS/EC2"
  period                    = "60"
  evaluation_periods        = "2"
  statistic                 = "Maximum"
  threshold                 = "1"
  treat_missing_data        = "breaching"
  #insufficient_data_actions = []
  #alarm_actions             = []

  dimensions {
    InstanceId              = "${var.server_01_id}"
    #HealthCheckId           = "${var.dns_hc_01_id}"
  }
}

Route53 HC:

resource "aws_route53_health_check" "server_01_health" {
    provider                  = "aws.use1"
    child_health_threshold  = "0",
    #child_healthchecks.#    = "0",
    #cloudwatch_alarm_name  = "awsec2-i-03dc5080f7bd3037d-paul-smb-gw-02-a-High-Status-Check-Failed-Any-",
    #cloudwatch_alarm_region    = "eu-west-1",
    enable_sni  = "false",
    failure_threshold   = "0",
    fqdn    = "",
    #id = "6eb384bc-2129-47ff-9a7a-90adb9f9351f",
    #insufficient_data_health_status    = "LastKnownStatus",
    invert_healthcheck  = "false",
    #ip_address  = "",
    measure_latency = "false",
    port    = "0",
    #regions.#   = "0",
    request_interval    = "0",
    resource_path   = "",
    search_string   = "",
    #tags.% = "1",
    #tags.Name  = "smb-nfs-gw-02-a-OK",
    #type    = "CLOUDWATCH_METRIC"

    #----------------------
    cloudwatch_alarm_name           = "${aws_cloudwatch_metric_alarm.dummy_alarm.alarm_name}"
    #cloudwatch_alarm_name           = "${aws_cloudwatch_metric_alarm.smb_nfs_server_01_alarm.alarm_name}"
    cloudwatch_alarm_region         = "us-east-1"
    #cloudwatch_alarm_region         = "${var.aws_region}"
    insufficient_data_health_status = "LastKnownStatus"
    tags = "${merge(var.tags, map("Name", "${var.tags["Name"]}_server_01_health"))}"
    type                            = "CLOUDWATCH_METRIC"
}

(Как видите, я экспериментировал с вариантами, в том числе с регионом.

-=-=-=-=-=-=-=-=-


person prowla    schedule 28.09.2018    source источник


Ответы (2)


Я заставил его работать, поместив HealthCheckId в размеры будильника, а не используя свойство cloudwatch_alarm_name в aws_route53_health_check

resource "aws_cloudwatch_metric_alarm" "dummy_alarm" {
  ...
  dimensions {
    ...
    HealthCheckId           = "${aws_route53_health_check.server_01_health.id}"
  }
}

resource "aws_route53_health_check" "server_01_health" {
    ...
    #cloudwatch_alarm_name   =
    #cloudwatch_alarm_region =
}
person Doug    schedule 20.12.2018

@ Дуг прав. Чтобы еще больше подчеркнуть исправление, решение требует, чтобы вы настроили словарь размеров на:

dimensions = {
               'HealthCheckId' : "${aws_route53_health_check.server_01_health.id}"
            },

Аргументы ресурса проверки работоспособности, которые вращаются вокруг сигнала тревоги метрик облачного наблюдения и региона, используются, когда вы создаете проверку работоспособности, которая отслеживает состояние сигнала тревоги облачного наблюдения.

person dataleake    schedule 24.04.2020