알림 정책으로 SQL 쿼리 결과 모니터링

이 문서에서는 로그 애널리틱스에서 실행하는 쿼리의 결과를 모니터링하는 알림 정책을 만드는 방법을 설명합니다. 이러한 쿼리는 SQL로 작성되며 로그 뷰를 쿼리해야 합니다. 알림 정책은 쿼리 결과가 지정된 조건을 충족하면 알림을 보냅니다. 예를 들어 특정 기간의 로그 항목 중 25% 이상이 심각도가 ERROR인 경우 알림을 받도록 알림 정책을 구성할 수 있습니다.

로그 애널리틱스 페이지에서 만드는 알림 정책은 BigQuery 엔진에서 실행됩니다. 따라서 쿼리되는 데이터는 연결된 BigQuery 데이터 세트를 통해 액세스할 수 있어야 합니다.

로그 애널리틱스에 관한 일반 정보는 로그 애널리틱스로 로그 쿼리 및 분석을 참고하세요.

알림 정책 작동 방식

알림 정책은 알림을 받을 상황과 이슈에 대한 알림을 받는 방법을 설명합니다. 로그 데이터에 콘텐츠 또는 패턴이 표시될 때 알림을 받으려면 다음 세 가지 접근 방식을 사용할 수 있습니다.

  • 개별 로그 항목에서 특정 문구를 스캔하려면 로그 기반 알림 정책을 만드세요. 보안 관련 이벤트와 같은 항목에 대한 알림을 받으려면 이러한 알림 정책을 사용하세요.

  • 로그 항목 데이터에서 이벤트를 모니터링하려면 로그 기반 측정항목을 만든 다음 측정항목을 모니터링하는 알림 정책을 만들면 됩니다. 이러한 유형의 알림 정책은 시간 경과에 따른 로그 항목 데이터의 추세를 모니터링하려는 경우에 효과적입니다. 그러나 이벤트가 몇 개만 예상되는 경우에는 그다지 효과적이지 않습니다.

  • 로그 항목 데이터의 집계 분석을 모니터링하려면 로그 분석을 알림 정책과 결합하세요. 이 시나리오에서는 로그 분석을 사용하도록 로그 버킷을 업그레이드하고 해당 로그 버킷에 연결된 BigQuery 데이터 세트를 만듭니다. 그런 다음 SQL 쿼리를 지원하는 로그 애널리틱스를 사용하여 로그 버킷의 로그 뷰를 쿼리합니다. 마지막으로 SQL 쿼리 결과를 모니터링하는 알림 정책을 만듭니다. 이 유형의 알림 정책을 SQL 기반 알림 정책이라고 합니다.

SQL 기반 알림 정책은 여러 로그 항목에서 정확한 값을 평가하는 데 가장 효과적입니다. 개별 로그 항목을 평가하려면 로그 기반 알림 정책을 만드세요.

이 문서의 나머지 부분에서는 SQL 기반 알림 정책을 사용하는 방법을 설명합니다.

알림 정책 구성요소

SQL 기반 알림 정책에는 조건과 일정이 포함됩니다.

  • 조건에는 로그 뷰를 쿼리하는 SQL 쿼리인 쿼리가 포함됩니다. 또한 이 조건은 쿼리 결과로 인해 Monitoring에서 이슈가 생성되는 상황을 정의합니다.

  • 일정은 알림 정책에서 쿼리를 실행하는 빈도를 정의합니다. 또한 일정은 전망 기간의 크기를 정의합니다. 전망 기간은 이전에 쿼리가 평가된 이후 수신된 로그 항목만 선택하는 필터입니다. 예를 들어 예약을 60분으로 설정하면 로그 항목의 최근 60분을 선택하는 전환 확인 기간을 사용하여 60분마다 쿼리가 실행됩니다.

알림 정책에는 알림 채널 목록도 포함됩니다. 알림 정책의 조건이 충족되면 Cloud Monitoring에서 이슈를 만든 후 이러한 채널을 통해 이슈에 관한 알림을 전송합니다. 이슈는 조건이 충족된 원인이 된 데이터의 기록으로, 다른 관련 정보도 포함됩니다. 이 정보는 이슈의 원인이 된 문제를 해결하는 데 도움이 됩니다. Google Cloud 콘솔을 사용하여 이슈를 볼 수 있습니다.

SQL 기반 알림 정책의 평가 유형

SQL 결과를 모니터링하는 조건은 다음 두 가지 유형의 평가를 지원합니다.

  • 행 수 기준: 쿼리 결과의 행 수가 기준 값보다 크거나 같거나 작을 때 조건이 충족됩니다.

    예를 들어 전환 확인 기간의 로그 항목 50개 이상이 심각도가 200을 초과할 때 알림을 받으려면 심각도가 200을 초과하는 로그 항목을 보고하는 쿼리를 만듭니다. 그런 다음 조건을 구성하고 행 수 기준점을 선택한 후 기준점을 50으로 설정합니다.

  • 불리언: 쿼리 결과 테이블의 특정 불리언 열에 값이 true인 행이 포함되면 조건이 충족됩니다.

    예를 들어 전환 확인 기간의 로그 항목 중 25% 이상이 심각도가 ERROR인 경우 알림을 받으려면 심각도 수준이 ERROR인 로그 항목의 비율을 계산하는 쿼리를 만듭니다. 쿼리 결과는 이 비율이 25%를 초과하면 notify 열에 true를 씁니다. 그런 다음 조건을 만들고 유형을 불리언으로 설정하고 notify 열을 모니터링하도록 조건을 구성합니다.

SQL 쿼리 결과를 모니터링하는 알림 정책에는 조건이 하나만 있어야 합니다.

알림 정책 및 BigQuery

알림 정책에서 SQL 쿼리를 실행하면 알림 정책이 정의된 Google Cloud 프로젝트의 예약된 BigQuery 슬롯을 사용하여 해당 쿼리가 실행됩니다. 자세한 내용은 슬롯 예약 작업을 참고하세요.

알림 정책에서 예약된 BigQuery 슬롯을 사용하여 로그 뷰를 쿼리하려면 로그 뷰를 호스팅하는 로그 버킷에 연결된 BigQuery 데이터 세트가 있도록 구성해야 합니다. 연결된 데이터 세트를 사용하면 BigQuery에서 로그 버킷의 데이터를 읽을 수 있으며 SQL 쿼리에서 반환된 데이터에 BigQuery 함수를 실행할 수 있습니다.

시작하기 전에

  1. 로그 애널리틱스를 사용하는 데 필요한 권한을 얻으려면 관리자에게 로그 버킷 또는 로그 뷰에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

    • _Required_Default 로그 버킷을 쿼리하려는 경우: 로그 뷰어(roles/logging.viewer)
    • 프로젝트의 모든 로그 뷰를 쿼리하려는 경우: 로그 뷰 접근자(roles/logging.viewAccessor)
    • 특정 로그 뷰에서 로그를 쿼리하려면 다음 단계를 따르세요. 로그 뷰에 대한 IAM 정책을 만들거나 로그 뷰 액세스자 (roles/logging.viewAccessor) 역할을 특정 로그 뷰로 제한합니다. 자세한 내용은 로그 뷰에 대한 액세스 제어를 참고하세요.

    추가 역할에 대한 자세한 내용은 Logging 역할을 참고하세요.
  2. 쿼리하려는 로그 뷰의 경우 로그 스토리지 페이지로 이동하고 해당 로그 뷰를 저장하는 로그 버킷이 로그 애널리틱스를 사용하도록 업그레이드되었는지 확인합니다. 필요한 경우 로그 버킷을 업그레이드합니다.
  3. Google Cloud 콘솔에서 로그 스토리지 페이지로 이동합니다.

    로그 스토리지로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.

  4. 예약된 BigQuery 슬롯에서 쿼리 실행을 사용 설정하려면 다음 단계를 따르세요.
    1. 쿼리하려는 로그 버킷에 연결된 데이터 세트가 없는 경우 연결된 데이터 세트를 만듭니다.
    2. 예약된 BigQuery 슬롯을 구성하고 Google Cloud 프로젝트에 할당합니다.

  5. SQL 기반 알림 정책을 만들고 관리하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

    데이터 세트에 대한 액세스 권한 부여에 대한 자세한 내용은 데이터 세트에 대한 액세스 권한 부여를 참고하세요.

  6. 모니터링 서비스 계정이 있고 다음 역할이 있는지 확인합니다.

    1. 프로젝트에 대한 모니터링 서비스 에이전트 (roles/monitoring.notificationServiceAgent)
    2. 연결된 데이터 세트의 BigQuery 데이터 뷰어 (roles/bigquery.dataViewer)

    Monitoring 서비스 계정이 없는 경우 문제 해결: Monitoring 서비스 계정 없음을 참고하세요.

  7. 이슈 알림을 수신하는 데 사용할 알림 채널을 구성합니다. 중복성을 위해 여러 유형의 알림 채널을 만드는 것이 좋습니다. 자세한 내용은 알림 채널 만들기 및 관리를 참고하세요.

SQL 기반 알림 정책 만들기

SQL 기반 알림 정책을 만들려면 다음 단계를 따르세요.

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 로그 분석 페이지로 이동합니다.

    로그 애널리틱스로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.

  2. 로그 애널리틱스 페이지의 쿼리 편집기에서 로그 보기의 SQL 쿼리를 입력합니다.

    로그 뷰에 대한 SQL 쿼리 작성에 관한 자세한 내용은 로그 뷰 쿼리를 참고하세요.

  3. 툴바에서 BigQuery에서 실행을 클릭합니다.

    로그 애널리틱스는 BigQuery 엔진에서 쿼리를 실행하고 결과 테이블에 결과를 표시합니다.

    BigQuery에서 실행이 표시되지 않으면 쿼리 엔진 선택을 클릭한 다음 BigQuery를 클릭합니다. 쿼리 실행 버튼이 BigQuery에서 실행으로 변경됩니다.

  4. 로그 애널리틱스 페이지의 결과 표에서  알림 만들기를 클릭합니다.

    로그 애널리틱스 페이지에 SQL 알림 정책 만들기 창이 표시되며, 이 창의 SQL 쿼리 섹션에 쿼리가 표시됩니다.

  5. 알림 조건 섹션에서 알림 정책의 조건 및 일정을 구성합니다.

  6. 알림 정책의 알림 세부정보를 구성합니다.

    1. (선택사항) 알림 정책 라벨문서를 추가합니다.

    2. 알림 채널을 추가한 다음 다음을 클릭합니다.

  7. 알림 정책을 검토한 후 저장을 클릭하여 만듭니다.

Cloud Monitoring API

alertPolicies.create 메서드를 사용하여 프로그래매틱 방식으로 알림 정책을 만듭니다. 알림 정책의 Condition 유형은 SqlCondition의 인스턴스인 conditionSql여야 합니다. 이 조건 유형을 사용하면 SQL로 알림 정책의 조건을 정의할 수 있습니다.

일정을 정의하려면 minutes, hours 또는 days 필드 중 하나에 periodicity 값을 설정합니다. 예를 들어 쿼리를 12시간마다 실행하려면 hours 필드의 주기를 12로 설정합니다.

조건을 정의하려면 다음 필드를 사용하세요.

  • boolean_test: 쿼리 결과 표의 불리언 열 행에 true 값이 포함될 때 조건이 충족되도록 알림 정책을 구성합니다.
  • row_count_test: 쿼리 결과 표의 행 수가 특정 임곗값을 충족할 때 조건이 충족되도록 알림 정책을 구성합니다.

필드 및 정의의 전체 목록은 Cloud Monitoring API 문서의 SqlCondition를 참고하세요.

알림 정책에 대한 Monitoring API에 대한 자세한 내용은 API를 통한 알림 정책 관리를 참조하세요.

제한사항

알림 정책에서 예약된 SQL 쿼리를 실행하면 로그 항목이 로그 버킷에 전파될 시간을 제공하기 위해 15분 지연이 적용됩니다. 로그 항목이 도착하는 데 15분이 넘으면 알림 정책에서 이를 평가하지 않습니다.

15분 지연이 도입되면 로그 항목이 생성된 시점과 모니터링에서 조건이 충족된 시점 사이의 시간이 달라집니다. 예를 들어 30분마다 실행되도록 예약된 SQL 쿼리가 있다고 가정해 보겠습니다. 알림 정책이 주기적으로 조건을 평가할 때는 15분~45분 전의 타임스탬프가 있는 로그 항목을 쿼리합니다.

알림 정책과 관련된 한도는 Monitoring 한도를 참고하세요.

가격 책정

가격 책정에 대한 자세한 내용은 다음 문서를 참고하세요.

다음 단계