구글PS2팀 권영배
1. 개요
이 문서에서는 콘솔에서 Google Cloud Monitoring에 대한 알림 정책(Cloud Run 작업용)을 만드는 방법과 이후 이를 Terraform 코드로 변환하는 방법을 설명합니다.
2. Google Cloud 콘솔에서 알림 정책을 수동으로 만들기
“Monitoring > Alerting” 페이지로 이동하여 “CREATE POLICY”을 클릭합니다.
“CREATE POLICY” 클릭
Cloud Run 작업 실행 상태에 따라 알림 정책을 만들고 싶습니다. 따라서 알림 조건 측정항목의 메트릭으로 Cloud Run 작업의 ‘COMPLETED EXECUTIONS‘을 선택하겠습니다. 다른 목적으로 알림이 필요할 수도 있습니다. 필요한 사항에 따라 측정항목을 적절하게 조정하는 것을 잊지 마세요. 워크플로우는 동일해야 합니다.
- Select a Metric > CLOUD RUN JOB – COMPLETED EXECUTIONS
경고 조건 지표로 “Completed Executions”를 선택하겠습니다.
메트릭을 선택한 후에는 특정 조건이 충족될 때만 경고가 트리거되도록 필터를 추가해야 합니다. Job이 성공했을 경우에 대해서 필터링을 추가합니다.
- ADD A FILTER Click
- Filter : result
- Comparator : ‘=’
- Value : ‘successed’
Add filter for alert condition metric.
다음으로 Alert trigger 를 구성합니다. 내 ETL 작업은 매일 실행되도록 예약되어 있으므로 하루 이내에 성공적으로 실행되지 않으면 경고를 트리거하고 싶습니다.
Configure alert trigger
마지막으로 알림을 받을 방법을 선택해야 합니다.
알림 채널이 아직 구성되지 않았습니다.
아직 알림 채널을 구성하지 않은 경우 드롭다운 목록은 비어 있습니다. ‘알림 채널 관리’를 클릭하세요.
알림 채널 중 하나로 새 이메일을 추가합니다.
이메일을 입력 후 저장합니다.
내 이메일을 추가하면 알림 채널 드롭다운 목록에 표시됩니다.
알림 채널을 선택한 다음 이 알림 정책의 표시 이름을 입력합니다.
알림 정책 이름을 입력하세요
알림 정책이 성공적으로 생성되었습니다. 아래와 같이 표시됩니다.
알림 정책이 생성되었습니다.
여기에서 이 버튼을 전환하여 언제든지 정책을 비활성화하거나 활성화할 수 있습니다.
아직 이 페이지를 떠나지 마세요. 정책 표시 이름을 클릭하고 다음 부분에 대한 JSON 구성 파일을 다운로드합니다.
이 알림 정책에 대한 JSON 구성 파일을 다운로드합니다.
3. Terraform을 이용하여 알림 정책 만들기
JSON 구성 파일을 열고 가능한 한 많이 복사하여 테라폼 구성 파일에 붙여넣어 보십시오. 나중에 terraform import 작업을 수행하려는 경우 정책 ID가 필요할 수 있으니 JSON 파일에서 참조해 사용하세요.
Alerting policy JSON configuration file
이러한 모든 정보를 통해 Terraform 코드를 사용하여 복제할 수 있습니다.
resource "google_monitoring_alert_policy" "alert_policy_name" {
display_name = "No successful job execution in one day"
combiner = "OR"
conditions {
display_name = "Cloud Run Job - Completed Executions"
condition_absent {
filter = "resource.type = \"cloud_run_job\" AND resource.labels.job_name = has_substring(\"etl-\") AND metric.type = \"run.googleapis.com/job/completed_execution_count\" AND metric.labels.result = \"succeeded\""
duration = "86400s"
trigger {
percent = 100
}
aggregations {
alignment_period = "300s"
per_series_aligner = "ALIGN_RATE"
}
}
}
enabled = true
notification_channels = ["projects/${gcp-project-id}/notificationChannels/${notification-channel-id}"]
}
monitoring.tf
이 Terraform 코드 블록을 유지하여 다음 알림 정책을 직접 구성할 수 있습니다. 기존 정책을 Terraform 상태로 가져오려면 terraform import를 실행해야 합니다. 아래 표시된 코드를 사용할 수 있습니다.
#!/bin/bash
########################################
#
# run chmod +x terraform_import.sh to make the script executable
#
# Execute this script: ./terraform_import.sh
#
########################################
set -e
GCP_REGION="us-central1"
GCP_PROJECT_ID=""
GCP_PROJECT_NUM=""
SERVICE_ACCOUNT_NAME=""
SERVICE_ACCOUNT_EMAIL=""
# ---------- import google monitoring alert policy to terraform ------------
GCP_ALERT_POLICY_ID=""
TERRAFORM_ALERT_NAME=""
terraform import google_monitoring_alert_policy.$TERRAFORM_ALERT_NAME \ projects/$GCP_PROJECT_ID/alertPolicies/$GCP_ALERT_POLICY_ID
terraform_import.sh
이메일에 알림이 어떻게 표시되는지 궁금하신 경우 아래 이미지를 참조하세요.
경고 알림 이메일의 예.