Как получить проверку работоспособности Route53, работающую с сигнализацией CloudWatch Terraform? - PullRequest
0 голосов
/ 28 сентября 2018

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

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

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

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

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

No alarms configured

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

- = - = - = - =-

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

Manually added an alarm

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

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

Это код Terraform для одного из сигналов проверки работоспособности Route53 и 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"
}

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

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

1 Ответ

0 голосов
/ 21 декабря 2018

Я заставил его работать, поместив 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 =
}
...