분석 뷰 정보

이 문서에서는 분석 뷰와 뷰를 만들 때 유용한 시점에 대해 설명합니다. 또한 분석 보기와 로그 보기, 저장된 쿼리와 같이 익숙할 수 있는 개념 간의 차이점도 설명합니다.

분석 뷰를 만들고 쿼리하고 관리하는 방법을 알아보려면 분석 뷰 만들기 및 쿼리하기를 참고하세요.

개요

분석 뷰는 쿼리할 수 있는 리소스입니다. 이 리소스에는 하나 이상의 로그 뷰를 쿼리하는 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 역할을 보여줍니다.

  • 분석 뷰를 만들고, 관리하고, 사용하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Observability Analytics 사용자 (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에 하나씩 로그 버킷이 두 개 있다고 가정해 보겠습니다. 이러한 로그 버킷에서 로그 뷰를 쿼리하는 분석 뷰를 만들 수 없습니다.
  • 분석 뷰의 상위 리소스는 Google Cloud 프로젝트여야 합니다. 폴더 또는 조직에서는 분석 보기를 만들 수 없습니다.
  • 연결된 데이터 세트는 분석 뷰에서 지원되지 않습니다. 따라서 로그 애널리틱스 페이지를 사용하여야만 분석 뷰를 쿼리할 수 있습니다. 또한 기본 Cloud Logging 서비스에서 이러한 쿼리를 실행해야 합니다.
  • 분석 뷰를 만들거나 관리하기 위한 API 지원은 없습니다.
  • 분석 뷰에는 다음 한도가 적용됩니다.

    • Google Cloud 프로젝트당 최대 분석 뷰 수: 100
    • Google Cloud 프로젝트당 지역별 최대 분석 뷰 수: 50
    • Google Cloud 프로젝트당 분석 뷰를 저장할 수 있는 최대 지역 수: 10개

다음 단계