이 문서에서는 분석 뷰와 분석 뷰를 만들 시점을 설명합니다. 또한 분석 뷰와 익숙할 수 있는 개념(예: 로그 뷰, 저장된 쿼리)의 차이점도 설명합니다.
분석 뷰를 만들고 쿼리하고 관리하는 방법을 알아보려면 분석 뷰 만들기 및 쿼리하기를 참조하세요.
개요
분석 뷰는 쿼리할 수 있는 리소스입니다. 이 리소스에는 로그 뷰 하나 이상을 쿼리하는 SQL 쿼리가 포함되어 있습니다.
로그 버킷의 로그 뷰는 로그 버킷에서 볼 수 있는 로그 항목을 제어합니다. 로그 탐색기와 로그 애널리틱스 페이지를 사용하여 로그 뷰를 쿼리할 수 있습니다. 두 경우 모두 쿼리되는 데이터의 형식은 LogEntry
데이터 구조에 따라 결정됩니다.
분석 뷰에 포함된 SQL 쿼리를 사용하면 로그 뷰 하나 이상의 로그 데이터를 커스텀 형식으로 변환할 수 있습니다. 즉, 로그 뷰에서 쿼리 결과에 기여하는 로그 항목을 필터링하고 결과 열을 정의할 수 있습니다. 예를 들어 열을 삭제하거나 데이터를 중첩된 JSON 필드에서 열로 이동하거나 열을 추가할 수 있습니다.
분석 뷰는 구체화된 뷰가 아닙니다. 분석 뷰는 쿼리 결과를 주기적으로 캐시하는 미리 계산된 뷰가 아닙니다. 따라서 분석 뷰를 쿼리하는 것은 분석 뷰에서 쿼리하는 로그 뷰를 쿼리하는 것과 같습니다.
분석 뷰와 저장된 쿼리 모두 SQL 쿼리를 포함합니다. 하지만 분석 뷰는 쿼리될 수 있는 리소스입니다. 저장된 쿼리는 다시 실행할 수 있지만 저장된 쿼리 결과를 쿼리할 수 없습니다.
분석 뷰 유형
분석 뷰에는 사용자 정의 뷰 및 시스템 정의 뷰 등 두 가지 유형이 있습니다.
사용자 정의 분석 뷰는 개발자가 만드는 모든 분석 뷰입니다. 사용자 정의 분석 뷰를 쿼리, 수정, 삭제할 수 있습니다.
시스템 정의 분석 뷰는Google Cloud 서비스에서 만든 분석 뷰입니다. 사용자 정의 분석 뷰를 쿼리할 수 있습니다. 하지만 수정하거나 삭제할 수는 없습니다.
Google Cloud 프로젝트에 분석 뷰를 나열하는 방법은 분석 뷰 나열을 참조하세요.
분석 뷰 위치
분석 뷰 위치는 쿼리하는 리소스의 위치에 따라 결정됩니다. 예를 들어 분석 뷰가 global
위치에 있는 로그 뷰를 쿼리하는 경우 분석 뷰 위치도 global
여야 합니다. Google Cloud 콘솔을 사용하여 분석 뷰를 만들면 위치가 자동으로 설정됩니다.
분석 뷰 이점
분석 뷰의 주요 이점은 로그 데이터를 변환하고 다른 쿼리에 일관된 스키마를 만들 수 있다는 점입니다. 하지만 분석 뷰를 만들면 쿼리 작성에 드는 노력을 줄이거나 쿼리 구조를 개선할 수도 있습니다. 분석 뷰는 구체화된 뷰가 아니므로 분석 뷰를 사용한다고 해서 반드시 쿼리 시간이 단축되는 것은 아닙니다.
예시: 데이터 변환
VPC 흐름 로그를 사용하여 네트워크 성능을 분석한다고 가정해 보겠습니다. 전반적인 네트워킹 성능을 분석하고 특정 네트워크, IP 주소 또는 호스트를 식별할 수 있어야 합니다.
안타깝게도 필요한 정보는 로그 항목의 json_payload
필드에 중첩된 필드 내에 포함되어 있습니다.
로그 항목에서 이 정보를 추출하려면 다음 쿼리를 작성한 후 쿼리를 network_details
분석 뷰로 저장합니다.
SELECT
JSON_VALUE(resource.labels.subnetwork_name) subnetwork_name,
JSON_VALUE(json_payload.src_instance.vm_name) vm_name,
JSON_VALUE(json_payload.connection.src_ip) as src_ip,
JSON_VALUE(json_payload.connection.src_port) as src_port,
JSON_VALUE(json_payload.connection.dest_ip) as dest_ip,
JSON_VALUE(json_payload.connection.dest_port) as dest_port,
CAST(JSON_VALUE(json_payload.bytes_sent) as INT64) as bytes_sent,
CAST(JSON_VALUE(json_payload.packets_sent) as INT64) as packets_sent
FROM `TABLE_NAME_OF_LOG_VIEW`
WHERE
log_id = "compute.googleapis.com/vpc_flows"
AND SEARCH(json_payload.reporter, "SRC")
이제 네트워크 성능을 분석하려면 분석 뷰를 쿼리하면 됩니다. 예를 들어 인스턴스 이름과 전송된 데이터 양에만 관심이 있으면 다음 쿼리를 작성할 수 있습니다.
SELECT vm_name, bytes_sent, packets_sent,
FROM `analytics_view.my_project.global.network_details`
ORDER BY bytes_sent DESC
LIMIT 100
예시: API 지연 시간 분석을 위한 기본 쿼리
1주일 간격으로 요청 지연 시간을 평가하고 요약하는 태스크를 수행한다고 가정해 보겠습니다. 다른 팀에서는 주간 성능 분석 데이터를 다른 분석 기반으로 사용합니다.
개발자가 만들고 다른 팀에서 쿼리할 수 있는 분석 뷰는 완료된 요청의 최소, 최대, 평균 지연 시간을 특정 로그 뷰의 로그 항목에 기록된 대로 보고합니다.
SELECT week,MIN(took_ms) as min , MAX(took_ms) AS max, AVG(took_ms) AS avg
FROM (
SELECT TIMESTAMP_TRUNC(timestamp, WEEK) AS week,
CAST( JSON_VALUE(json_payload, '$."http.resp.took_ms"') AS INT64) as took_ms
FROM `TABLE_NAME_OF_LOG_VIEW`
WHERE json_payload IS NOT NULL
AND SEARCH(labels,"frontend")
AND JSON_VALUE(json_payload.message) = "request complete"
ORDER BY took_ms DESC, timestamp ASC
)
GROUP BY week ORDER BY week
필수 IAM 역할 및 권한
분석 뷰는 로그 뷰를 쿼리하므로 분석 뷰를 만들고 쿼리하려면 IAM 역할에서 로그 뷰를 쿼리하고 로그 애널리틱스를 사용할 수 있어야 합니다. 이 섹션에서는 분석 뷰를 만드는 데 필요한 IAM 역할과 로그 뷰를 쿼리하고 로그 애널리틱스를 사용하는 데 필요한 IAM 역할을 보여줍니다.
-
분석 뷰를 생성, 관리, 사용하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 모니터링 가능성 분석 사용자(
roles/observability.analyticsUser
) IAM 역할을 부여해 달라고 요청하세요.이 사전 정의된 역할에는 분석 뷰를 생성, 관리, 사용하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
분석 뷰를 생성, 관리, 사용하려면 다음 권한이 필요합니다.
-
observability.analyticsViews.get
-
observability.analyticsViews.list
-
observability.analyticsViews.create
-
observability.analyticsViews.update
-
observability.analyticsViews.delete
-
-
로그 뷰를 쿼리하고 로그 애널리틱스를 사용하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
_Required
및_Default
로그 버킷을 쿼리하려는 경우: 로그 뷰어(roles/logging.viewer
) -
프로젝트의 모든 로그 뷰를 쿼리하려는 경우: 로그 뷰 접근자(
roles/logging.viewAccessor
)
프로젝트 수준에서 부여된 로그 뷰 접근자 역할에 IAM 조건을 추가하거나 로그 뷰의 정책 파일에 IAM 바인딩을 추가하여 주 구성원을 특정 로그 뷰로 제한할 수 있습니다. 자세한 내용은 로그 뷰에 대한 액세스 제어를 참조하세요.
사용자 정의 버킷에 대한 뷰를 쿼리하거나
_Default
로그 버킷의_AllLogs
뷰를 쿼리하는 데 필요한 추가 역할에 대한 자세한 내용은 Cloud Logging 역할을 참조하세요. -
제한사항
분석 뷰에는 다음과 같은 제한사항이 적용됩니다.
- 분석 뷰에서 다른 분석 뷰를 쿼리할 수 없습니다.
- 분석 뷰에서 로그 뷰 여러 개를 쿼리할 수 있습니다. 그러나 쿼리된 로그 뷰를 호스팅하는 로그 버킷은 한 위치에 있어야 합니다. 예를 들어
us-east1
에 하나,asia-east1
에 하나씩 로그 버킷이 2개 있다고 가정해 보겠습니다. 이러한 로그 버킷에서 로그 뷰를 쿼리하는 분석 뷰를 만들 수 없습니다. - 분석 뷰의 상위 리소스는 Google Cloud 프로젝트여야 합니다. 폴더 또는 조직에 분석 뷰를 만들 수 없습니다.
- 연결된 데이터 세트는 분석 뷰에 지원되지 않습니다. 따라서 로그 애널리틱스 페이지를 사용하여야만 분석 뷰를 쿼리할 수 있습니다. 또한 기본 Cloud Logging 서비스에서 이러한 쿼리를 실행해야 합니다.
- 분석 뷰를 만들거나 관리하는 데 사용할 수 있는 API 지원은 없습니다.
분석 뷰에는 다음 한도가 적용됩니다.
- Google Cloud 프로젝트당 최대 분석 뷰 수: 100개
- Google Cloud 프로젝트당 리전별 최대 분석 뷰 수: 50개
- Google Cloud 프로젝트당 분석 뷰를 저장할 수 있는 최대 리전 수: 10개