SQL 쿼리 결과 차트 표시

이 문서에서는 SQL 쿼리를 실행하는 로그 애널리틱스 쿼리 결과를 차트로 만드는 방법을 설명합니다. SQL로 로그 및 트레이스 데이터를 분석하면 패턴과 추세를 파악할 수 있습니다. 쿼리 결과를 표로 보거나 차트를 만들어 시각화할 수 있습니다. 맞춤 대시보드에 차트를 저장할 수도 있습니다.

다음 스크린샷은 이 문서의 뒷부분에 나오는 추적 예시 쿼리의 결과를 보여줍니다. 스크린샷에는 시간별 및 service_name별로 응답을 집계한 후 스팬에서 보고한 상태가 표시됩니다.

서비스 이름별 분석 대상 분류를 보여주는 차트 예시

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 관측 가능성 API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할 (roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기

    API 사용 설정하기

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 관측 가능성 API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할 (roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기

    API 사용 설정하기

  8. 로그 애널리틱스 페이지를 로드하고, 로그 및 추적 데이터에 대한 쿼리를 작성하고 실행하고, 맞춤 대시보드에 차트를 저장하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

    • 프로젝트에 대한 모니터링 편집자(roles/monitoring.editor)
    • 관측 가능성 뷰 접근자 (roles/observability.viewAccessor)를 부여해야 합니다. 쿼리할 관측 가능성 뷰에 대한 이 역할은 특정 뷰에 대한 권한 부여를 제한할 수 있는 IAM 조건을 지원합니다. 역할 부여에 조건을 연결하지 않으면 주 구성원이 모든 관측 가능성 뷰에 액세스할 수 있습니다. 관측 가능성 뷰는 공개 프리뷰 버전입니다.
    • 프로젝트의 로그 뷰어(roles/logging.viewer)
    • 쿼리하려는 로그 뷰를 저장하는 프로젝트에 대한 로그 뷰 접근자 (roles/logging.viewAccessor).

    역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

차트로 표시할 데이터 선택

차트에 표시할 데이터를 구성하려면 SQL을 사용하여 쿼리를 빌드합니다. 차트 탭을 선택하면 쿼리 결과가 차트로 표시됩니다. 쿼리가 실행되고 차트가 생성된 후 차트 유형을 변경하고 다른 데이터를 볼 열을 선택하여 차트 구성을 맞춤설정할 수 있습니다.

쿼리 결과를 차트로 보려면 다음을 수행하여 쿼리를 실행합니다.

  1. Google Cloud 콘솔에서 로그 애널리틱스 페이지로 이동합니다.

    로그 애널리틱스로 이동

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

  2. 쿼리 창에서 쿼리를 입력한 후 실행을 클릭합니다.

  3. 쿼리가 완료되면 결과 탭에서 쿼리 결과를 볼 방법을 선택합니다.

    • : 표 형식으로만 봅니다.

    • 차트: 차트 형식으로만 봅니다.

    • 둘 다: 차트 및 표 형식으로 봅니다.

      쿼리 결과를 보는 방법을 선택한 후에는 선택한 시각화를 위한 필드를 구성한 다음 쿼리와 결과를 커스텀 대시보드에 저장할 수 있습니다. 옵션을 선택한 경우 저장된 형식은 표 형식입니다. 그 외의 경우 형식은 차트입니다.

      차트의 경우 시각화 옵션을 사용하면 차트 유형을 선택하고 차트에 표시할 행과 열을 선택할 수 있습니다. 차트 구성에 대한 자세한 내용은 차트 구성 맞춤설정을 참조하세요.

차트 구성 맞춤설정

차트 유형을 변경하고, 차트에서 측정기준을 선택하고 측정하거나, 분류를 적용하여 차트 구성을 맞춤설정할 수 있습니다. 측정기준은 행을 그룹화하거나 분류하는 데 사용되며 X축 값입니다. 측정 또는 Y축 값은 Y축을 기준으로 표시되는 데이터 계열입니다.

차트 유형 변경

측정기준 및 측정으로 선택한 행과 열의 종류 및 해당 데이터를 시각화하는 방법에 따라 다음 차트 유형 중에서 선택할 수 있습니다.

  • 막대 그래프(기본값): 막대 그래프는 두 축에 데이터를 표시합니다. 차트에서 카테고리 또는 문자열을 측정기준으로 사용하는 경우 막대 차트의 차트 구성을 가로 또는 세로로 설정할 수 있으며 여기서 측정기준 및 측정 축이 전환됩니다.

  • 선 차트: 선 차트를 사용하면 시간 경과에 따른 데이터 변경사항을 표시할 수 있습니다. 선 차트를 사용하면 각 시계열이 선택한 측정값에 해당하는 다른 선으로 표시됩니다.

    X축이 시간 기준인 경우 각 데이터 포인트가 시간 간격의 시작 부분에 배치됩니다. 각 데이터 포인트는 선형 보간으로 연결됩니다.

  • 누적 영역 차트: 영역 차트는 선 차트를 기반으로 하며 각 선 아래의 영역은 음영 처리됩니다. 영역 차트에서 데이터 계열이 누적됩니다. 예를 들어 동일한 계열이 2개 있는 경우 선 차트에서는 계열이 겹치지만 음영 처리된 영역은 영역 차트에 누적됩니다.

  • 원형 또는 도넛 차트: 원형 차트는 원을 사용하여 전체 데이터 세트를 나타내고 원의 웨지로 데이터 세트의 카테고리를 표현함으로써 데이터 세트의 카테고리가 전체 데이터 세트와 어떻게 관련되는지 보여줍니다. 웨지 크기는 카테고리가 전체에 기여하는 정도를 백분율로 주로 나타냅니다.

  • 표: 표에는 쿼리 결과의 행마다 행 하나가 표시됩니다. 표의 열은 SELECT 절로 정의됩니다. 데이터를 표 형식으로 대시보드에 표시하려면 LIMIT 절을 사용하여 결과의 행 수를 수백 개 미만으로 제한합니다.

  • 게이지 또는 스코어카드: 게이지와 스코어카드는 임곗값 집합과 비교되는 방식에 따라 초록색, 황색 또는 빨간색 표시와 함께 최신 값을 제공합니다. 최신 값에 대한 정보만 표시하는 게이지와 달리 스코어카드는 과거 값에 대한 정보도 포함할 수 있습니다.

    차트와 스코어카드는 쿼리 결과에 행이 최소 하나 이상 포함되어 있고 해당 행에 타임스탬프가 포함된 열과 숫자 데이터가 포함된 열이 있는 경우에만 쿼리 결과를 표시할 수 있습니다. 쿼리 결과에는 행 여러 개와 열 3개 이상이 포함될 수 있습니다.

    쿼리의 일부로 시간 기반 집계를 수행하려면 다음을 수행합니다.

    • 시간 간격에 걸쳐 데이터를 합산하고 타임스탬프를 내림차순하여 결과를 정렬하며 결과의 행 수를 제한하도록 쿼리를 구성합니다. LIMIT 절을 사용하거나 시간 범위 선택기를 사용하여 쿼리 결과의 행 수를 제한할 수 있습니다.

      로그 데이터

      예를 들어 다음은 로그 뷰를 쿼리하고 시간 단위로 데이터를 집계하고 한도를 적용한 후 결과를 정렬합니다.

      SELECT TIMESTAMP_TRUNC(timestamp, HOUR) AS hour, severity, COUNT(*) AS count
      FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
      WHERE severity IS NOT NULL AND severity = "DEFAULT"
      GROUP BY hour,severity
      ORDER BY hour DESC
      LIMIT 10
      

      다음은 이전 표현식의 필드 의미를 설명합니다.

      • PROJECT_ID: 프로젝트 식별자
      • LOCATION: 로그 뷰 또는 분석 뷰의 위치
      • BUCKET_ID: 로그 버킷의 이름 또는 ID
      • LOG_VIEW_ID: 로그 뷰의 식별자. 100자(영문 기준)로 제한되며 문자, 숫자, 밑줄, 하이픈만 포함할 수 있습니다.

      Trace 데이터

      예를 들어 다음 쿼리는 추적 데이터를 쿼리하고 1시간 간격으로 데이터를 집계하고 한도를 적용한 후 결과를 정렬합니다.

      SELECT TIMESTAMP_TRUNC(start_time, HOUR) AS hour,
         COALESCE(
            JSON_VALUE(resource.attributes, '$."service.name"'),
            JSON_VALUE(attributes, '$."service.name"'),
            JSON_VALUE(attributes, '$."g.co/gae/app/module"')) AS service_name,
         status.code AS status,
         COUNT(*) AS count
      FROM `PROJECT_ID.LOCATION._Trace.Spans._AllSpans`
      GROUP BY hour, service_name, status
      ORDER BY hour DESC
      LIMIT 1000
      

      다음은 이전 표현식의 필드 의미를 설명합니다.

      이전 쿼리는 이 문서의 시작 부분에 표시된 그림을 생성하는 데 사용되었습니다. 이 그림에는 차트 구성도 표시되어 있습니다.

    • 시간 단위를 보고하는 열과 일치하도록 측정기준을 설정합니다. 예를 들어 쿼리에서 1시간 단위로 데이터를 집계하고 hour라는 열을 만드는 경우 측정기준 메뉴를 hour로 설정합니다.

    • 쿼리에서 이미 집계 간격을 지정했으므로 간격 중지를 선택합니다. 이 예시에서 이 간격은 1시간입니다.

    • 측정기준을 숫자 열로 설정하고 함수를 없음으로 설정합니다.

    로그 애널리틱스를 사용하여 시간 기반 집계를 자동으로 수행하려면 다음을 수행합니다.

    • 쿼리 결과의 행 수에 영향을 미치는 시간 범위 선택기를 구성합니다.
    • 시간 단위를 보고하는 열과 일치하도록 측정기준을 설정합니다. 예를 들어 이 메뉴를 timestamp로 설정할 수 있습니다.
    • 간격 메뉴를 설정하여 특정 간격을 집계 간격으로 설정합니다. 예를 들어 이 필드 값을 1 hour로 설정합니다. 자동 간격을 선택하지 마세요.
    • 측정을 숫자 열로 설정하고 sum과 같은 함수를 선택합니다.

측정기준 및 측정 변경

측정기준 및 측정 필드를 선택하여 차트로 만들 행과 열을 선택할 수 있습니다.

  • 측정기준

    측정기준은 타임스탬프, 숫자, 문자열 열이어야 합니다. 기본적으로 측정기준은 스키마의 첫 번째 타임스탬프 기반 열로 설정됩니다. 쿼리에 타임스탬프가 없으면 첫 번째 문자열 열이 측정기준으로 선택됩니다. 차트 표시 패널에서 측정기준을 맞춤설정할 수도 있습니다. 타임스탬프 열을 측정기준으로 선택하면 차트에 시간 경과에 따른 데이터 변화가 표시됩니다. 막대 그래프의 측정기준으로 문자열 열을 선택하면 오름차순 또는 내림차순으로 데이터를 정렬할 수 있으며, 이렇게 하면 측정기준이 사전순으로 정렬됩니다. 해당 측정항목의 값을 기준으로 측정기준을 내림차순으로 정렬하는 '기본' 정렬 순서를 유지할 수도 있습니다.

    기본적으로 타임스탬프 간격은 자동으로 설정되지만 커스텀 간격을 선택할 수도 있습니다. 자동 간격은 비슷한 크기의 그룹을 유지하기 위해 시간 범위 선택기에 따라 값을 변경합니다.

    또한 간격을 사용 중지하여 보다 복잡한 분석을 위해 쿼리 내에서 자체 집계 및 시간 범위를 지정할 수 있습니다. 간격을 사용 중지하면 측정의 집계 함수가 none으로 설정됩니다. 측정기준 간격이 사용 중지된 경우 숫자 측정만 허용됩니다.

  • 측정

    차트 표시 패널에서 여러 측정을 선택할 수 있습니다. 측정을 선택할 때는 count, sum, average, percentile-99와 같이 그룹화된 값에 수행할 집계 함수도 선택해야 합니다. 예를 들어 count-distinct는 지정된 열에서 고유한 값 수를 반환합니다.

    측정기준에 간격 사용 중지 체크박스를 선택하면 none 집계 함수 옵션을 사용할 수 있습니다. 측정기준이 문자열 값이면 간격 사용 중지 체크박스가 표시되지 않습니다. 하지만 측정의 집계 함수를 none으로 설정하면 간격이 사용 중지됩니다.

분류 추가

단일 데이터 계열을 다른 열을 기준으로 여러 데이터 계열로 분할하려면 분류를 추가합니다.

분류를 선택할 때는 textPayload와 같이 다수의 문자열이나 긴 문자열이 포함될 수 있는 필드 대신 region_name과 같이 짧고 의미 있는 라벨의 작은 열이 포함된 열을 선택합니다.

로그 데이터

예를 들어 측정기준 필드가 유형으로 설정되고 측정 필드가 행 수 계산으로 분류 필드가 심각도로 설정된 다음 차트 구성을 참조하세요.

심각도별 분류가 포함된 차트 예시

이전 스크린샷에는 리소스 유형 k8s_container가 서로 다른 severity 유형으로 분할된 누적 데이터 계열이 표시됩니다. 이를 통해 특정 리소스에서 생성된 각 심각도 유형의 로그 수를 식별할 수 있습니다.

Trace 데이터

예를 들어 다음 차트는 각 서비스에서 생성된 스팬 수를 스팬 이름별로 분류된 데이터와 함께 표시합니다.

Cloud Storage 버킷 사용을 보여주는 대시보드 예시

차트를 커스텀 대시보드에 저장

쿼리에서 차트가 생성된 후 해당 차트를 커스텀 대시보드로 저장합니다. 커스텀 대시보드를 사용하면 다양한 위제 유형을 사용하여 사용자에게 유용한 정보를 표시하고 구성할 수 있습니다. 이러한 대시보드에서는 특정 위젯에만 적용되는 대시보드 수준 필터인 변수를 정의할 수도 있습니다. 위젯에 변수를 적용하려면 쿼리를 수정해야 합니다. 자세한 내용은 위젯에 변수 적용을 참조하세요.

쿼리가 BigQuery 엔진에서 실행되고 쿼리된 리소스가 동일한 소유권 경계에 있지 않으면 SQL 쿼리가 포함된 위젯에 대한 경고 메시지가 대시보드에 표시됩니다. 소유권 경계는 여러 요인에 의해 결정되며, 그중 하나는 쿼리에서 사용하는 리소스의 계층 구조입니다. 이러한 경고를 방지하려면 서비스 경계를 설정하세요.

차트를 대시보드에 저장하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 로그 애널리틱스 페이지로 이동합니다.

    로그 애널리틱스로 이동

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

  2. 쿼리를 실행하여 차트를 생성한 후 차트 탭에서 차트 저장을 클릭합니다.

  3. 대시보드에 저장 대화상자에서 차트 제목을 입력하고 차트를 저장할 대시보드를 선택합니다.

  4. (선택사항) 커스텀 대시보드를 보려면 토스트 메시지에서 대시보드 보기를 클릭합니다.

SQL 쿼리로 생성된 차트가 포함된 커스텀 대시보드 목록을 보려면 차트 저장 버튼으로 이동하고 메뉴를 클릭합니다.

커스텀 대시보드에 저장된 차트 수정하기

차트를 대시보드에 저장한 후 수정할 수 있습니다. 자세한 내용은 위젯 구성 수정을 참조하세요. 위젯 구성 대화상자에서 다음을 수행할 수 있습니다.

  • 쿼리하는 데이터를 변경합니다.
  • 차트를 생성하는 데 사용되는 쿼리를 수정합니다.
  • 차트 구성을 맞춤설정하여 다양한 데이터를 시각화합니다.

제한사항

  • Google Cloud 프로젝트가 Assured Workloads를 사용하는 폴더에 있는 경우 생성한 차트를 커스텀 대시보드에 표시할 수 없습니다.

  • 대시보드 수준 필터는 SQL 쿼리에서 생성된 차트에는 적용되지 않습니다.

  • 선택한 열에는 null이 아닌 값이 있는 행이 최소 하나 이상 있어야 합니다.

  • 쿼리를 저장하고 차트 구성을 맞춤설정하면 커스텀 차트 구성이 저장되지 않습니다.

  • 쿼리에 이미 집계가 포함된 경우 로그 애널리틱스에 의해 자동으로 적용되는 추가 집계로 인해 생성된 차트가 다를 수 있습니다.

  • JSON 경로를 차트로 만들려면 문자열 또는 숫자로 변환해야 합니다.

다음 단계