이 문서에서는 알림 정책을 만들어 로그 애널리틱스에서 실행하는 쿼리의 결과를 모니터링하는 방법을 설명합니다. 이러한 쿼리는 SQL로 작성되며 _AllSpans라는 관측 가능성 뷰를 쿼리해야 합니다. 알림 정책은 쿼리 결과가 지정된 조건을 충족하면 알림을 보냅니다.
로그 애널리틱스 페이지에서 만든 알림 정책은 BigQuery 엔진에서 실행됩니다. 따라서 연결된 BigQuery 데이터 세트를 통해 쿼리되는 데이터에 액세스할 수 있어야 합니다.
로그 애널리틱스에 대한 일반적인 정보는 로그 애널리틱스로 트레이스 쿼리 및 분석을 참고하세요.
알림 정책 작동 방식
알림 정책에서는 알림을 받을 상황과 사고에 대한 알림을 받는 방법을 설명합니다. 추적 데이터에 콘텐츠나 패턴이 표시될 때 알림을 받는 방법에는 몇 가지가 있습니다.
월별로 수집되는 Cloud Trace 스팬 수, 할당량 사용량, 스팬 수집 비율을 모니터링하려면 Cloud Monitoring에서 알림 정책을 만드세요. 알림 정책을 만든 적이 없는 경우 Cloud Monitoring 콘솔 사용에 대한 자세한 내용은 알림 정책 만들기를 참고하세요.
개별 trace 또는 스팬을 보거나 탐색하거나 스팬에 연결된 속성을 보려면 Trace 탐색기 페이지를 사용하세요. 이 페이지에 대한 자세한 내용은 trace 찾기 및 탐색을 참고하세요.
trace 데이터의 집계 분석을 모니터링하려면 로그 애널리틱스를 알림 정책과 결합합니다. 이 시나리오에서는 SQL 쿼리를 사용하여 모니터링 가능성 버킷(
_Trace)의_AllSpans뷰를 쿼리합니다. 마지막으로 알림 정책을 만들어 SQL 쿼리 결과를 모니터링합니다. 이 유형의 알림 정책을 SQL 기반 알림 정책이라고 합니다.트레이스 데이터가 저장되는 방식에 대해 자세히 알아보려면 스토리지 개요를 참고하세요.
이 문서의 나머지 부분에서는 SQL 기반 알림 정책을 사용하는 방법을 설명합니다.
알림 정책 구성요소
SQL 기반 알림 정책에는 조건과 일정이 포함되어 있습니다.
조건에는 데이터를 쿼리하는 SQL 쿼리인 쿼리가 포함됩니다. 또한 이 조건은 쿼리 결과로 인해 Monitoring에서 사고를 만드는 상황을 정의합니다.
일정은 알림 정책에서 쿼리를 실행하는 빈도를 정의합니다. 또한 일정은 전환 확인 기간 크기를 정의합니다. 전환 확인 기간은 이전에 쿼리가 평가된 이후에 수신된 데이터만 선택하는 필터입니다. 예를 들어 일정을 60분으로 설정하면 쿼리는 최근 60분 데이터를 선택하는 전환 확인 기간을 통해 60분마다 실행됩니다.
알림 정책에는 알림 채널 목록도 포함되어 있습니다. 알림 정책 조건이 충족되면 Cloud Monitoring에서 사고를 만든 후 이러한 채널을 통해 사고에 대한 알림을 전송합니다. 사고는 조건이 충족된 원인이 된 데이터의 기록으로, 다른 관련 정보도 포함됩니다. 이 정보는 사고 원인이 된 문제를 해결하는 데 도움이 됩니다. Google Cloud 콘솔을 사용하여 사고를 볼 수 있습니다.
SQL 기반 알림 정책의 평가 유형
SQL 쿼리 결과를 모니터링하는 조건은 다음 두 가지 유형의 평가를 지원합니다.
행 수 기준: 쿼리 결과의 행 수가 기준 값보다 크거나 같거나 작을 때 조건이 충족됩니다.
불리언: 쿼리 결과 테이블의 특정 불리언 열에 값이
true인 행이 포함되면 조건이 충족됩니다.
SQL 쿼리 결과를 모니터링하는 알림 정책에는 조건이 하나만 있어야 합니다.
알림 정책 및 BigQuery
알림 정책에서 추적 데이터를 쿼리하려면 연결된 BigQuery 데이터 세트를 구성해야 합니다. 연결된 데이터 세트를 사용하면 BigQuery에서 추적 데이터를 읽을 수 있으며 개발자는 SQL 쿼리에서 반환된 데이터에 BigQuery 함수를 수행할 수 있습니다.
알림 정책에서 SQL 쿼리를 실행하면 쿼리는 알림 정책이 정의된 Google Cloud 프로젝트의 BigQuery 엔진에서 실행됩니다. 기본적으로 BigQuery 엔진에서 실행되는 쿼리는 주문형 슬롯을 사용합니다. 주문형 슬롯과 예약된 슬롯에는 BigQuery 가격 책정이 적용됩니다.
프로젝트에 전용 BigQuery 슬롯 예약을 구성할 수도 있습니다.
- 전용 슬롯이 있는 예약을 만들거나 기존 예약을 식별합니다.
- 프로젝트의 예약 할당 만들기
전환 확인 기간 및 사고 전파 시간
알림 정책이 조건을 평가하도록 예약되면 로그 애널리틱스에서 Cloud Logging이 전환 확인 기간 중에 수신된 데이터에 색인을 생성할 수 있는 시간이 확보되도록 SQL 쿼리 실행을 5분 지연합니다. 예를 들어 알림 정책에서 오후 2시에 종료되는 전환 확인 기간을 사용하면 로그 애널리틱스는 오후 2시 5분까지 SQL 쿼리를 실행하지 않습니다.
쿼리가 실행된 후 알림 조건이 충족되면 시스템을 통해 사고가 전파되는 데 최대 2분이 추가로 걸릴 수 있습니다.
쿼리 실패
SQL 기반 알림 정책에서 실행한 쿼리는 다음과 같은 다양한 이유로 실패할 수 있습니다.
모니터링 서비스 계정이 더 이상 존재하지 않거나 쿼리되는 트레이스 데이터를 읽는 데 필요한 권한이 없는 경우입니다.
쿼리 실행 시간이 5분을 초과합니다.
내부 오류가 발생합니다.
실패한 쿼리는 알림 정책 ID와 오류 상태가 포함된 로그 항목을 생성합니다. 로그 기반 알림 정책을 사용하여 오류가 로깅될 때 알림을 만들 수 있습니다.
시작하기 전에
이 섹션에서는 추적 데이터를 위한 연결된 BigQuery 데이터 세트가 있다고 가정합니다.
SQL 기반 알림 정책을 만들기 전에 다음 단계를 완료하세요.
-
trace 데이터를 쿼리하고 SQL 기반 알림 정책을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
트레이스 데이터 쿼리:
Cloud Trace 사용자 (
roles/cloudtrace.user) -
SQL 기반 알림 정책을 만듭니다.
-
모니터링 편집자(
roles/monitoring.editor) -
로깅 SqlAlertWriter (
roles/logging.sqlAlertWriter)
-
모니터링 편집자(
-
트레이스 데이터 쿼리:
Cloud Trace 사용자 (
모니터링 서비스 계정이 있고 다음 역할이 있는지 확인합니다.
- 프로젝트에 대한 모니터링 서비스 에이전트(
roles/monitoring.notificationServiceAgent) - 연결된 데이터 세트에 대한 BigQuery 데이터 뷰어(
roles/bigquery.dataViewer)
모니터링 서비스 계정이 없으면 문제 해결: 모니터링 서비스 계정 없음을 참조하세요.
- 프로젝트에 대한 모니터링 서비스 에이전트(
- 사고 알림을 수신하는 데 사용할 알림 채널을 구성합니다. 중복화를 위해 여러 유형의 알림 채널을 만드는 것이 좋습니다. 자세한 내용은 알림 채널 만들기 및 관리를 참조하세요.
SQL 기반 알림 정책 만들기
SQL 기반 알림 정책을 만들려면 다음을 수행합니다.
Google Cloud 콘솔
-
Google Cloud 콘솔에서 manage_search 로그 애널리틱스 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
로그 애널리틱스 페이지의 쿼리 편집기에서 트레이스 데이터를 쿼리하는 SQL 쿼리를 입력합니다.
툴바에서 BigQuery에서 실행을 클릭합니다.
로그 애널리틱스는 BigQuery 엔진에서 쿼리를 실행하고 결과 테이블에 결과를 표시합니다.
BigQuery에서 실행이 표시되지 않으면 settings 쿼리 엔진 선택을 클릭한 후 BigQuery를 클릭합니다. 쿼리 실행 버튼이 BigQuery에서 실행으로 변경됩니다.
로그 애널리틱스 페이지의 결과 표에서 add_alert 알림 만들기를 클릭합니다.
로그 애널리틱스 페이지에 SQL 알림 정책 만들기 창이 표시되며 이 창의 SQL 쿼리 섹션에 쿼리가 표시됩니다.
알림 조건 섹션에서 알림 정책의 조건과 일정을 구성합니다.
알림 정책의 알림 세부정보를 구성합니다.
알림 정책을 검토한 후 저장을 클릭하여 만듭니다.
Cloud Monitoring API
alertPolicies.create 메서드를 사용하여 프로그래매틱 방식으로 알림 정책을 만듭니다. 알림 정책의 Condition 유형은 SqlCondition의 인스턴스인 MonitoringQueryLanguageCondition여야 합니다.
이 조건 유형을 사용하면 SQL로 알림 정책 조건을 정의할 수 있습니다.
일정을 정의하려면 minutes, hours 또는 days 필드 중 하나에 periodicity 값을 설정합니다. 예를 들어 쿼리를 12시간마다 실행하려면 hours 필드 주기를 12로 설정합니다.
조건을 정의하려면 다음 필드를 사용합니다.
boolean_test: 쿼리 결과 표에 있는 불리언 열의 행에 true 값이 포함되면 조건이 충족되도록 알림 정책을 구성합니다.row_count_test: 쿼리 결과 표의 행 수가 특정 기준점을 충족하면 조건이 충족되도록 알림 정책을 구성합니다.
필드 및 정의의 전체 목록은 Cloud Monitoring API 참고 리소스의 SqlCondition을 참조하세요.
알림 정책에 대한 Monitoring API에 대한 자세한 내용은 API를 통한 알림 정책 관리를 참조하세요.
Terraform
프로젝트에 Terraform을 설치하고 구성합니다. App Hub 구성의 경우 App Hub 호스트 프로젝트 또는 관리 프로젝트를 선택합니다.
Cloud Shell에서 Terraform 구성이 포함된 디렉터리로 이동합니다.
Terraform 구성에서 condition_sql을 포함하여 google_monitoring_alert_policy 리소스의 인스턴스를 구성합니다.
Cloud Shell에
terraform apply를 입력합니다.
알림 정책을 수정하려면 수정한 후 Terraform 구성을 다시 적용합니다. 자세한 내용은 Terraform으로 알림 정책 관리를 참조하세요.
Terraform과 함께 Google Cloud 를 사용하는 방법에 관한 일반적인 내용은 Google Cloud에서 Terraform을 참고하세요.
제한사항
- SQL 기반 알림 정책당 조건 하나가 있을 수 있습니다.
- SQL 기반 알림 정책은 분석 뷰를 쿼리할 수 없습니다.
실행 시간이 5분을 초과하면 SQL 기반 알림 정책에서 실행한 쿼리가 실패합니다.
쿼리가 예약된 시점과 사고가 생성된 시점 사이에는 쿼리 실행 시간을 더한 최대 7분의 지연 시간이 있습니다.
알림 정책과 관련된 전체 한도 목록은 모니터링 한도를 참조하세요.