이 문서에서는 Google Cloud 콘솔의 로그 애널리틱스 페이지를 사용할 때 발생할 수 있는 오류를 해결하는 방법을 보여줍니다.
오류 메시지
이 섹션에서는 표시될 수 있는 오류 메시지와 해당 오류 조건을 해결하는 방법을 설명합니다.
No completion signal within allotted timeframe
오류 메시지
SQL 쿼리를 입력하고 쿼리 실행을 선택합니다. 쿼리가 완료되지 않고 다음 오류 메시지가 표시됩니다.
The query failed to execute and return results due to error: No completion signal within allotted timeframe.
이 오류를 해결하려면 다음 중 한 가지를 따르세요.
로그 쿼리 간격을 단축한 후 쿼리를 재시도합니다. 예를 들어 쿼리 간격이 14일인 경우 간격을 7일로 줄인 다음 쿼리를 실행합니다.
연결된 BigQuery 데이터 세트를 만든 후 BigQuery 인터페이스에서 쿼리를 실행합니다. BigQuery 인터페이스는 Cloud Logging 인터페이스보다 긴 실행 시간이 필요한 쿼리를 지원합니다. 자세한 내용은 연결된 BigQuery 데이터 세트 쿼리를 참고하세요.
고유한 CMEK 키가 있는 버킷에 대한 쿼리 오류 메시지
여러 로그 버킷을 쿼리하는 SQL 쿼리를 입력하고 쿼리 실행을 선택합니다. 쿼리가 완료되지 않고 다음 오류 메시지가 표시됩니다.
Queries against buckets with distinct CMEK keys must have a key configured in the LogSettings.
이 상황을 해결하려면 다음 중 한 가지를 따르세요.
- 동일한 Cloud Key Management Service(Cloud KMS) 키를 사용하도록 로그 버킷을 구성합니다.
- 로그 버킷이 동일한 위치에 있는 경우 기본 Cloud KMS 키로 로그 버킷의 상위 리소스인 폴더나 조직을 구성할 수 있습니다. 상위 요소의 기본 키는 로그 버킷과 동일한 위치에 있어야 합니다. 이 구성을 사용하면 상위 요소의 기본 키가 로그 애널리틱스 쿼리에서 생성된 임시 데이터를 암호화합니다. 자세한 내용은 로그 애널리틱스 제한사항을 참조하세요.
FROM 절에는 정확히 1개의 뷰 오류 메시지가 포함되어야 합니다.
Google Cloud 콘솔의 로그 분석 페이지의 쿼리 창에 SQL 쿼리를 입력하지만 SQL 파서에 다음 오류가 표시됩니다.
FROM clause must contain exactly one log view
FROM
문에 지정된 테이블을 특정 로그 뷰로 확인할 수 없는 경우 이전 오류가 보고됩니다.
이 오류를 해결하려면 테이블 이름에 적절한 문법이 있는지 확인합니다.
테이블 이름이 로그 애널리틱스 이름 지정 스키마에 필요한 문법을 따르는지 확인합니다. BigQuery와 로그 애널리틱스의 테이블 이름 요구사항은 서로 다릅니다. 기본 쿼리를 확인하여 테이블 이름에 필요한 문법을 찾을 수 있습니다.
로그 버킷의 Google Cloud 프로젝트 ID, 리전, 버킷 ID 또는 뷰 ID에 마침표 문자
(.)
가 포함된 경우 각 필드가 작은따옴표인(`)
로 래핑되는지 확인합니다.예를 들어 Google Cloud 프로젝트 ID가
example.com:bluebird
인 경우_Default
로그 버킷의_AllLogs
뷰를 쿼리하려면 다음 문법을 사용하여 테이블을 지정합니다.SELECT * FROM `example.com:bluebird`.`global`.`_Default`.`_AllLogs`
이전 쿼리는
_Default
버킷이global
리전에 있다고 가정합니다.
쿼리를 저장할 수 없음
현재 쿼리를 저장하려고 쿼리를 실행한 후
Save를 클릭해도 쿼리 저장 옵션이 사용 중지되어 있거나 대화상자 단계를 완료할 수 없습니다.쿼리 저장 옵션이 사용 중지되면 조직 또는 폴더의 기본 리소스 설정이 조직 정책에서 허용하지 않는 위치를 정의합니다. 이 오류를 해결하려면 조직의 관리자에게 조직 정책에서 허용하는 위치와 일치하도록 기본 리소스 설정에 위치를 정의하도록 요청하세요. 자세한 내용은 조직 및 폴더의 기본 설정 구성을 참조하세요.
쿼리 저장 옵션이 사용 설정되어 있지만 대화상자를 완료하고 쿼리를 저장할 수 없는 경우 다음을 수행합니다.
- 쿼리에 문법 오류가 포함되어 있지 않은지 확인합니다. 유효한 쿼리만 저장할 수 있습니다.
- 선택사항: 쿼리를 클립보드에 복사합니다.
- 페이지를 새로고침합니다.
- 쿼리를 클립보드에 복사한 후 쿼리를 쿼리 창에 붙여넣고 쿼리를 실행한 후 저장 작업을 수행합니다.
분석 뷰를 만들 수 없음
분석 뷰를 만들기 위해 SQL 쿼리를 입력하고 실행한 다음
Save를 클릭하지만 분석 뷰로 저장 옵션이 사용 중지되어 있습니다.이 문제를 해결하려면 IAM 역할에 다음 권한이 포함되어 있는지 확인하세요.
observability.analyticsViews.{get, list, create, update, delete}
이러한 권한은 사전 정의된 Cloud Logging 역할에 포함되어 있지 않습니다. 필요한 역할에 대한 자세한 내용은 분석 뷰 만들기 및 쿼리하기: 시작하기 전에를 참고하세요.
분석 뷰를 쿼리할 수 없음
분석 뷰를 쿼리하려고 하는데 로그 애널리틱스 페이지의 뷰 창에 분석 뷰가 표시되지 않습니다.
이 문제를 해결하려면 다음을 시도해 보세요.
IAM 역할에 다음 권한이 포함되어 있는지 확인합니다.
observability.analyticsViews.{get, list}
이러한 권한은 사전 정의된 Cloud Logging 역할에 포함되어 있지 않습니다. 필요한 역할에 대한 자세한 내용은 분석 뷰 만들기 및 쿼리하기: 시작하기 전에를 참고하세요.
Google Cloud 프로젝트에 분석 뷰가 있는지 확인합니다.
로그 애널리틱스 페이지에 대한 액세스가 거부됨
Google Cloud 콘솔에서 로그 분석 페이지를 열면 권한 거부됨 오류 메시지가 표시됩니다.
로그 애널리틱스 페이지를 로드하고, 쿼리를 실행하고, 로그를 보는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요
커스텀 역할이나 Logging 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
로그 애널리틱스 페이지에서 로그 항목을 보고 쿼리를 실행하는 데 필요한 권한은 로그 탐색기에서 로그를 보는 데 필요한 권한과 동일합니다. 사용자 정의 버킷의 뷰를 쿼리하거나 _Default
로그 버킷의 _AllLogs
뷰를 쿼리해야 하는 추가 역할에 대한 자세한 내용은 Cloud Logging 역할을 참조하세요.
로그 애널리틱스을 사용할 수 있도록 로그 버킷 업그레이드 실패
로그 버킷을 만들고 로그 애널리틱스 사용 옵션을 선택하거나 로그 애널리틱스를 사용하도록 기존 로그 버킷을 업그레이드합니다. 다음과 유사한 오류 조건으로 업그레이드가 실패합니다.
Failed precondition (HTTP 400): Constraint "my-constraint" violated for PROJECT_ID with location global.
이전 오류 메시지는 조직에서 사용할 수 있는 리전을 제한하는 조직 정책을 구성했음을 나타냅니다. 로그 애널리틱스를 사용하도록 업그레이드할 수 있는 로그 버킷은 global
리전을 사용해야 합니다. global
리전 사용을 제한하는 조직 정책을 삭제할 수 있는 경우 로그 버킷을 업그레이드할 수 있습니다. 그러지 않으면 로그 버킷을 업그레이드할 수 없습니다.
연결된 BigQuery 데이터 세트를 만들 수 없음
로그 버킷을 수정하여 연결된 BigQuery 데이터 세트를 만들거나 새 로그 버킷을 만들고 연결된 데이터 세트를 만드는 옵션을 선택합니다. 하지만 연결된 데이터 세트는 생성되지 않습니다.
이 오류를 해결하려면 Google Cloud 프로젝트의 시스템 관리자에게 다음 권한이 포함된 IAM 역할을 부여하도록 요청합니다.
logging.links.create
이전 권한은 Logging 관리자(roles/logging.admin
) 및 로그 구성 작성자(roles/logging.configWriter
) 역할에 포함되어 있습니다.
역할 및 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
연결된 BigQuery 데이터 세트를 삭제할 수 없음
연결된 데이터 세트를 더 이상 원하지 않지만 데이터 세트 삭제 옵션이 비활성화되었습니다.
이 오류를 해결하려면 Google Cloud 프로젝트의 시스템 관리자에게 다음 권한이 포함된 IAM 역할을 부여하도록 요청합니다.
logging.links.delete
이전 권한은 Logging 관리자(roles/logging.admin
) 및 로그 구성 작성자(roles/logging.configWriter
) 역할에 포함되어 있습니다.
이 권한을 사용하면 Google Cloud 콘솔의 로그 스토리지 페이지에서 연결된 데이터 세트를 삭제할 수 있습니다. 역할 및 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
쿼리 엔진 설정 버튼이 누락됨
쿼리 실행 버튼 옆에 settings 설정 버튼이 표시되지 않으면 Google Cloud 프로젝트에 예약된 BigQuery 슬롯이 사용 설정되어 있지 않은 것입니다. settings 설정 버튼을 사용 설정하려면 프로젝트에 예약된 BigQuery 슬롯을 구성합니다.
BigQuery에서 실행 버튼이 사용 중지됨
BigQuery에서 실행 버튼이 표시되지만 사용 중지된 경우 쿼리에서 참조하는 로그 뷰에 연결된 데이터 세트가 없는 것입니다. BigQuery 슬롯 예약에서 쿼리를 실행하려면 로그 뷰에서 연결된 BigQuery 데이터 세트를 만듭니다.
모니터링 서비스 계정 없음
SQL 쿼리의 결과를 모니터링하는 알림 정책을 만들려고 합니다. 설정 단계에서 모니터링 서비스 계정에 IAM 역할을 부여해야 하지만 계정이 존재하지 않습니다.
모니터링 서비스 계정은Google Cloud에서 생성하고 관리하므로 서비스 에이전트라고 합니다. 계정이 필요한 리소스 또는 서비스를 구성하면 계정이 자동으로 생성됩니다. 예를 들어 Pub/Sub 알림 채널을 만들면 이 작업으로 인해 모니터링 서비스 계정이 생성될 수 있습니다.
생성 흐름에 따라 모니터링 서비스 계정에 프로젝트에 대한 모니터링 서비스 에이전트(monitoring.NotificationServiceAgent
) 역할이 부여될 수 있습니다. 계정에 부여된 역할을 수정할 수 있습니다.
모니터링 서비스 계정이 없는 경우 SQL 쿼리의 결과를 모니터링하는 알림 정책을 만들려면 다음을 실행해야 합니다.
서비스 에이전트를 수동으로 만듭니다. 이 단계에 관한 자세한 내용은 서비스 에이전트 만들기 및 역할 부여를 참고하세요.
서비스 에이전트에 필요한 역할을 부여합니다. 이러한 역할에 대한 자세한 내용은 SQL 쿼리 결과 모니터링: 시작하기 전에를 참고하세요.
로그 애널리틱스 결과에 중복 로그 항목이 있음
중복 항목을 집계하거나 보고하는 쿼리를 실행합니다. 로그 탐색기는 로그 이름, 타임스탬프, 삽입 ID를 기반으로 중복 항목을 삭제하므로 쿼리가 실행되기 전에 로그 분석에서 로그 항목의 중복을 삭제할 것으로 예상됩니다.
로그 애널리틱스가 로그 탐색기에서 실행하는 것과 동일한 유형의 중복 삭제를 실행하지 않습니다.
중복 로그 항목을 해결하려면 다음을 시도해 보세요.
중복 로그 항목의 수신 타임스탬프 값이 다른지 확인합니다. 타임스탬프가 다른 경우 동일한 데이터가 로깅에 여러 번 작성되었음을 나타냅니다.
중복 쓰기를 해결하려면 로깅 통합에서 오류 메시지 또는 구성 오류가 있는지 조사합니다.
버킷이 Cloud Key Management Service 키를 사용하도록 구성된 경우 할당량을 초과하지 않고 키에 일관되게 액세스할 수 있는지 확인합니다. 할당량을 초과하거나 키 액세스 권한을 잃으면 중복 로그 항목이 발생할 수 있습니다.
이러한 실패를 해결하려면 할당량을 초과하지 않고 키에 액세스할 수 있는지 확인하세요.
쿼리를 수정하여 중복 로그 항목을 삭제합니다.
예를 들어 JSON 페이로드에
fieldA
및fieldB
가 포함되어 있다고 가정해 보겠습니다. 여기서 첫 번째는 문자열이고 두 번째는 숫자입니다. 또한 JSON 페이로드에 문자열이 포함된server
라벨의 필드가 포함되어 있다고 가정합니다. 다음 쿼리를 살펴보겠습니다.SELECT JSON_VALUE(json_payload.fieldA) AS fieldA SUM(IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0)) AS sum_fieldB FROM `TABLE_NAME_OF_LOG_VIEW` WHERE JSON_VALUE(json_payload.server) = "test" GROUP BY fieldA;
로그 이름, 타임스탬프, 삽입 ID를 검사하여 로그 항목이 중복인지 확인하는 중복 로그 항목을 삭제하도록 쿼리를 수정할 수 있습니다.
WITH deduplicated AS ( SELECT JSON_VALUE(json_payload.fieldA) AS fieldA IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0) AS fieldB FROM `TABLE_NAME_OF_LOG_VIEW` a WHERE JSON_VALUE(json_payload.server) = "test" QUALIFY ROW_NUMBER() OVER (PARTITION BY a.log_name, a.timestamp, a.insert_id ) = 1 ) SELECT fieldA, SUM(fieldB) AS sum_fieldB FROM deduplicated GROUP BY fieldA;