Stackdriver Alert & Notification в GCP с использованием Terraform

Я не могу установить оповещения и уведомления в Stackdriver. Возможность настроить канал уведомлений и проверку работоспособности с помощью Terraform. Ниже приведены коды, которые я использую.

resource "google_monitoring_notification_channel" "basic" {
  display_name = "Test Notification Channel"
  type         = "email"
  labels = {
    email_address = "[email protected]"
  }
  project = "department1"
}
resource "google_monitoring_uptime_check_config" "http" {
  display_name = "01 - Website uptime check [global]"
  timeout = "10s"
  period = "60s"
  project = "department1"

  http_check {
    path = "/"
    port = "80"
    mask_headers = null
    use_ssl = null
    validate_ssl = null
    request_method = "GET"
  }

  monitored_resource {
    type = "uptime_url"
    labels = {
      host = "35.184.98.16"
    }
  }
}

Но я не могу понять приведенную ниже часть, что возможно при ручном вмешательстве.

введите описание изображения здесь

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

Просьба помочь мне автоматизировать также оповещение и уведомление.


person d.s    schedule 27.02.2021    source источник


Ответы (1)


Я не мог найти способ сделать это через TF, gcloud или API.

В конце концов, я использовал google_monitoring_alert_policy, используя запрос языка запросов мониторинга с блоком condition_monitoring_query_language, в следующих строках:

resource "google_monitoring_alert_policy" "some-uptime-monitor-policy" {
  display_name = "Some Uptime Monitor"
 
  conditions {
    display_name = "Some Site Unavailable"

    condition_monitoring_query_language {
        query = "fetch uptime_url | metric 'monitoring.googleapis.com/uptime_check/check_passed' | filter (resource.host == 'somesite.com') | group_by 1m, [value_check_passed_count_true: count_true(value.check_passed)] | every 5m | condition value_check_passed_count_true < 1 '1'"
        duration = "60s" 
        }
    }
  }

У меня было несколько мониторов, поэтому я пошел по пути condition_monitoring_query_language, если у вас есть один монитор, вы можете использовать condition_threshold вместо него. Я обнаружил, что не могу получить то, что хотел, с condition_threshold из-за требований к нескольким сайтам

person jjjjurb    schedule 04.03.2021
comment
Вашему приведенному выше коду требуется еще один параметр combiner =, и я использовал OR. Когда я выполняю свой код наедине с вашим кодом, я получаю следующую ошибку: - person d.s; 07.03.2021
comment
Ошибка 400: Для этого средства выравнивания group_by требуется, чтобы окно выравнивания было таким же, как период выравнивания, но его окно выравнивания 1 м отличается от периода выравнивания 5 м. Окно выравнивания задается параметром выравнивателя в последующей операции таблицы «окна». Период выравнивания устанавливается последующей «каждой» табличной операцией. Эту проблему можно решить, если не указать окно явно, не указать период или сделать их одинаковыми. - person d.s; 07.03.2021