이 문서에서는 로그 데이터의 패턴 및 추세를 식별할 수 있는 로그 애널리틱스 쿼리 결과를 차트로 만드는 방법을 설명합니다. 로그 애널리틱스를 사용하면 SQL 쿼리를 사용하여 로그를 검색 및 합산하여 유용한 통계를 생성할 수 있습니다.
쿼리를 실행한 후 테이블에서 쿼리 결과를 보거나 차트로 변환할 수 있으며 쿼리와 시각화를 대시보드에 저장할 수 있습니다.
예를 들어 로그에서 생성되는 심각도 유형을 확인하려면 지난 12시간 동안 생성된 로그 수를 표시하는 차트를 만들고 severity
로 로그를 분석합니다. 다음 스크린샷은 여러 심각도 유형으로 분류된 데이터 포인트를 보여줍니다.
시작하기 전에
로그 애널리틱스를 사용하기 전에 다음을 수행합니다.
-
로그 애널리틱스를 사용하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
_Required
및_Default
로그 버킷을 쿼리하려는 경우: 로그 뷰어(roles/logging.viewer
) -
프로젝트의 모든 로그 뷰를 쿼리하려는 경우: 로그 뷰 접근자(
roles/logging.viewAccessor
)
프로젝트 수준에서 부여된 로그 뷰 액세스자 역할에 IAM 조건을 추가하거나 로그 뷰의 정책 파일에 IAM 바인딩을 추가하여 주 구성원을 특정 로그 뷰로 제한할 수 있습니다. 자세한 내용은 로그 뷰에 대한 액세스 제어를 참조하세요.
이는 로그 탐색기 페이지에서 로그 항목을 보는 데 필요한 권한과 같습니다. 사용자 정의 버킷에 대한 뷰를 쿼리하거나
_Default
로그 버킷의_AllLogs
뷰를 쿼리하는 데 필요한 추가 역할에 대한 자세한 내용은 Cloud Logging 역할을 참조하세요. -
-
차트를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Monitoring 편집자(
roles/monitoring.editor
) IAM 역할을 부여해 달라고 요청하세요. 로그 애널리틱스를 사용하도록 로그 버킷이 업그레이드되었는지 확인합니다.
-
Google Cloud 콘솔에서 로그 스토리지 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
- 쿼리하려는 로그 뷰가 있는 로그 버킷마다 로그 애널리틱스 사용 가능 열에 열기가 표시되어 있는지 확인합니다. 업그레이드가 표시되면 업그레이드를 클릭하고 대화상자를 완료합니다.
-
차트로 표시할 데이터 선택
차트에 표시할 데이터를 구성하려면 SQL을 사용하여 쿼리를 빌드합니다. 차트 탭을 선택하면 Logging이 쿼리 결과를 기반으로 차트를 자동으로 생성합니다. 쿼리가 실행되고 차트가 생성된 후 차트 유형을 변경하고 다른 데이터를 볼 열을 선택하여 차트 구성을 맞춤설정할 수 있습니다.
쿼리 결과를 차트로 보려면 다음을 수행하여 쿼리를 실행합니다.
-
Google Cloud 콘솔에서 로그 분석 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
쿼리 창에서 쿼리를 입력한 후 실행을 클릭합니다.
쿼리가 완료되면 결과 탭에서 쿼리 결과를 볼 방법을 선택합니다.
표: 표 형식으로만 봅니다.
차트: 차트 형식으로만 봅니다.
둘 다: 차트 및 표 형식으로 봅니다.
쿼리 결과를 보는 방법을 선택한 후에는 선택한 시각화를 위한 필드를 구성한 다음 쿼리와 결과를 커스텀 대시보드에 저장할 수 있습니다. 표 옵션을 선택한 경우 저장된 형식은 표 형식입니다. 그 외의 경우 형식은 차트입니다.
차트의 경우 시각화 옵션을 사용하면 차트 유형을 선택하고 차트에 표시할 행과 열을 선택할 수 있습니다. 차트 구성에 대한 자세한 내용은 차트 구성 맞춤설정을 참조하세요.
차트 구성 맞춤설정
차트 유형을 변경하고, 차트에서 측정기준을 선택하고 측정하거나, 분류를 적용하여 차트 구성을 맞춤설정할 수 있습니다. 측정기준은 행을 그룹화하거나 분류하는 데 사용되며 X축 값입니다. 측정 또는 Y축 값은 Y축을 기준으로 표시되는 데이터 계열입니다.
차트 유형 변경
측정기준 및 측정으로 선택한 행과 열의 종류 및 해당 데이터를 시각화하는 방법에 따라 다음 차트 유형 중에서 선택할 수 있습니다.
막대 그래프(기본값): 막대 그래프는 두 축에 데이터를 표시합니다. 차트에서 카테고리 또는 문자열을 측정기준으로 사용하는 경우 막대 차트의 차트 구성을 가로 또는 세로로 설정할 수 있으며 여기서 측정기준 및 측정 축이 전환됩니다.
선 차트: 선 차트를 사용하면 시간 경과에 따른 데이터 변경사항을 표시할 수 있습니다. 선 차트를 사용하면 각 시계열이 선택한 측정값에 해당하는 다른 선으로 표시됩니다.
X축이 시간 기준인 경우 각 데이터 포인트가 시간 간격의 시작 부분에 배치됩니다. 각 데이터 포인트는 선형 보간으로 연결됩니다.
누적 영역 차트: 영역 차트는 선 차트를 기반으로 하며 각 선 아래의 영역은 음영 처리됩니다. 영역 차트에서 데이터 계열이 누적됩니다. 예를 들어 동일한 계열이 2개 있는 경우 선 차트에서는 계열이 겹치지만 음영 처리된 영역은 영역 차트에 누적됩니다.
원형 또는 도넛 차트: 원형 차트는 원을 사용하여 전체 데이터 세트를 나타내고 원의 웨지로 데이터 세트의 카테고리를 표현함으로써 데이터 세트의 카테고리가 전체 데이터 세트와 어떻게 관련되는지 보여줍니다. 웨지 크기는 카테고리가 전체에 기여하는 정도를 백분율로 주로 나타냅니다.
표: 표에는 쿼리 결과의 행마다 행 하나가 표시됩니다. 표의 열은
SELECT
절로 정의됩니다. 데이터를 표 형식으로 대시보드에 표시하려면LIMIT
절을 사용하여 결과의 행 수를 수백 개 미만으로 제한합니다.게이지 또는 스코어카드: 게이지와 스코어카드는 임곗값 집합과 비교되는 방식에 따라 초록색, 황색 또는 빨간색 표시와 함께 최신 값을 제공합니다. 최신 값에 대한 정보만 표시하는 게이지와 달리 스코어카드는 과거 값에 대한 정보도 포함할 수 있습니다.
차트와 스코어카드는 쿼리 결과에 행이 최소 하나 이상 포함되어 있고 해당 행에 타임스탬프가 포함된 열과 숫자 데이터가 포함된 열이 있는 경우에만 쿼리 결과를 표시할 수 있습니다. 쿼리 결과에는 행 여러 개와 열 3개 이상이 포함될 수 있습니다.
쿼리의 일부로 시간 기반 집계를 수행하려면 다음을 수행합니다.
시간 간격에 걸쳐 데이터를 합산하고 타임스탬프를 내림차순하여 결과를 정렬하며 결과의 행 수를 제한하도록 쿼리를 구성합니다.
LIMIT
절을 사용하거나 시간 범위 선택기를 사용하여 쿼리 결과의 행 수를 제한할 수 있습니다.예를 들어 다음 쿼리는 시간 단위로 데이터를 집계하고 한도를 적용한 후 결과를 정렬합니다.
SELECT TIMESTAMP_TRUNC(timestamp, HOUR) AS hour, severity, COUNT(*) AS count FROM `TABLE_NAME_OF_LOG_VIEW` WHERE severity IS NOT NULL AND severity = "DEFAULT" GROUP BY hour,severity ORDER BY hour DESC LIMIT 10
시간 단위를 보고하는 열과 일치하도록 측정기준을 설정합니다. 예를 들어 쿼리에서 1시간 단위로 데이터를 집계하고
hour
라는 열을 만드는 경우 측정기준 메뉴를hour
로 설정합니다.쿼리에서 이미 집계 간격을 지정했으므로 간격 중지를 선택합니다. 이 예시에서 이 간격은 1시간입니다.
측정기준을 숫자 열로 설정하고 함수를 없음으로 설정합니다.
로그 애널리틱스를 사용하여 시간 기반 집계를 자동으로 수행하려면 다음을 수행합니다.
- 쿼리 결과의 행 수에 영향을 미치는 시간 범위 선택기를 구성합니다.
- 시간 단위를 보고하는 열과 일치하도록 측정기준을 설정합니다.
예를 들어 이 메뉴를
timestamp
로 설정할 수 있습니다. - 간격 메뉴를 설정하여 특정 간격을 집계 간격으로 설정합니다. 예를 들어 이 필드 값을
1 hour
로 설정합니다. 자동 간격을 선택하지 마세요. - 측정을 숫자 열로 설정하고 sum과 같은 함수를 선택합니다.
측정기준 및 측정 변경
측정기준 및 측정 필드를 선택하여 차트로 만들 행과 열을 선택할 수 있습니다.
측정기준
측정기준은 타임스탬프, 숫자, 문자열 열이어야 합니다. 기본적으로 측정기준은 스키마의 첫 번째 타임스탬프 기반 열로 설정됩니다. 쿼리에 타임스탬프가 없으면 첫 번째 문자열 열이 측정기준으로 선택됩니다. 차트 표시 패널에서 측정기준을 맞춤설정할 수도 있습니다. 타임스탬프 열을 측정기준으로 선택하면 차트에 시간 경과에 따른 데이터 변화가 표시됩니다.
기본적으로 타임스탬프 간격은 자동으로 설정되지만 커스텀 간격을 선택할 수도 있습니다. 자동 간격은 비슷한 크기의 그룹을 유지하기 위해 시간 범위 선택기에 따라 값을 변경합니다.
또한 간격을 사용 중지하여 보다 복잡한 분석을 위해 쿼리 내에서 자체 집계 및 시간 범위를 지정할 수 있습니다. 간격을 사용 중지하면 측정의 집계 함수가
none
으로 설정됩니다. 측정기준 간격이 사용 중지된 경우 숫자 측정만 허용됩니다.측정
차트 표시 패널에서 여러 측정을 선택할 수 있습니다. 측정을 선택할 때는
count
,sum
,average
,percentile-99
와 같이 그룹화된 값에 수행할 집계 함수도 선택해야 합니다. 예를 들어count-distinct
는 지정된 열에서 고유한 값 수를 반환합니다.측정기준에 간격 사용 중지 체크박스를 선택하면
none
집계 함수 옵션을 사용할 수 있습니다. 측정기준이 문자열 값이면 간격 사용 중지 체크박스가 표시되지 않습니다. 하지만 측정의 집계 함수를none
으로 설정하면 간격이 사용 중지됩니다.
분류 추가
단일 데이터 계열을 다른 열을 기준으로 여러 데이터 계열로 분할하려면 분류를 추가합니다.
분류를 선택할 때는 textPayload
와 같이 다수의 문자열이나 긴 문자열이 포함될 수 있는 필드 대신 region_name
과 같이 짧고 의미 있는 라벨의 작은 열이 포함된 열을 선택합니다.
예를 들어 측정기준 필드가 유형으로 설정되고 측정 필드가 행 수 계산으로 분류 필드가 심각도로 설정된 다음 차트 구성을 참조하세요.
다음 차트는 분류가 추가된 차트의 예시입니다.
이전 스크린샷에는 리소스 유형 k8s_container
가 서로 다른 severity
유형으로 분할된 누적 데이터 계열이 표시됩니다. 이를 통해 특정 리소스에서 생성된 각 심각도 유형의 로그 수를 식별할 수 있습니다.
차트를 커스텀 대시보드에 저장
쿼리에서 차트가 생성된 후 해당 차트를 커스텀 대시보드로 저장합니다. 커스텀 대시보드를 사용하면 다양한 위제 유형을 사용하여 사용자에게 유용한 정보를 표시하고 구성할 수 있습니다. 예를 들어, Cloud Storage 버킷의 사용에 대한 자세한 정보를 제공하는 대시보드를 만들 수 있습니다.
차트를 대시보드에 저장하려면 다음을 수행합니다.
-
Google Cloud 콘솔에서 로그 분석 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
쿼리를 실행하여 차트를 생성한 후 차트 탭에서 차트 저장을 클릭합니다.
대시보드에 저장 대화상자에서 차트 제목을 입력하고 차트를 저장할 대시보드를 선택합니다.
선택사항: 커스텀 대시보드를 보려면 토스트 메시지에서 대시보드 보기를 클릭합니다.
로그 애널리틱스 SQL 쿼리로 생성된 차트가 포함된 커스텀 대시보드 목록을 보려면 차트 저장 버튼으로 이동하고 arrow_drop_down 메뉴를 클릭합니다.
커스텀 대시보드에 저장된 차트 수정하기
대시보드에 저장된 로그 애널리틱스 SQL 쿼리로 생성된 차트를 수정하려면 위젯 구성 수정을 참조하세요. 위젯 구성 대화상자에서 차트를 생성하는 데 사용되는 쿼리를 편집하거나, 차트 구성을 맞춤설정하여 다른 데이터를 시각화할 수 있습니다.
제한사항
Google Cloud 프로젝트가 Assured Workloads를 사용하는 폴더에 있는 경우 생성한 차트를 커스텀 대시보드에 표시할 수 없습니다.
대시보드 수준 필터는 로그 애널리틱스 SQL 쿼리에서 생성된 차트에는 적용되지 않습니다.
샘플 쿼리
이 섹션에서는 쿼리 결과를 차트로 표시하는 샘플 SQL 쿼리를 제공합니다. 로그에서 유용한 정보를 더 얻기 위해 차트 구성을 맞춤설정합니다. 샘플 쿼리를 사용하려면 다음을 수행하세요.
-
Google Cloud 콘솔에서 로그 분석 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
쿼리하려는 로그 뷰의 테이블 이름을 식별합니다.
이 이름을 식별하려면 로그 뷰 목록으로 이동하여 로그 뷰를 찾은 후 쿼리를 선택합니다. 쿼리 창은 쿼리되는 로그 뷰의 테이블 이름이 포함된 기본 쿼리로 채워집니다. 테이블 이름은
project_ID.region.bucket_ID.view_ID
형식입니다.기본 쿼리에 액세스하는 방법에 대한 자세한 내용은 로그 뷰 쿼리를 참조하세요.
TABLE_NAME_OF_LOG_VIEW를 쿼리하려는 로그 뷰의 테이블 이름으로 바꾼 후 쿼리를 복사합니다.
쿼리 창에 쿼리를 붙여넣은 다음 쿼리 실행을 클릭합니다.
위치 및 심각도별 로그 항목 차트
다음 쿼리는 위치 변환을 문자열로 사용하여 location
및 severity
를 선택합니다.
SELECT
CAST(JSON_VALUE(resource.labels.location) AS STRING) AS location,
severity,
FROM
`TABLE_NAME_OF_LOG_VIEW`
샘플 차트 및 차트 구성은 다음과 같습니다.
위 스크린샷의 차트 구성에는 다음과 같은 차트 구성이 있습니다.
- 차트 유형: 막대 그래프, 가로
- 측정기준:
location
(10개로 제한) - 측정: 행 수 계산
- 분류:
severity
(5개로 제한)
BigQuery 데이터 액세스 감사 로그 차트
다음 쿼리는 BigQuery data_access
감사 로그를 필터링하고 user_email
, ip
, auth_permission
, job_execution_project
와 같은 특정 필드를 선택합니다. 예를 들어 시간 경과에 따라 각 주 구성원의 BigQuery API 사용 빈도를 시각화하는 차트를 만들 수 있습니다.
SELECT
timestamp,
proto_payload.audit_log.authentication_info.principal_email as user_email,
proto_payload.audit_log.request_metadata.caller_ip as ip,
auth.permission as auth_permission,
auth.granted as auth_granted,
JSON_VALUE(data_access.resource.labels.project_id) AS job_execution_project,
SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(1)] AS referenced_project,
SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(3)] AS referenced_dataset,
SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(5)] AS referenced_table
FROM `TABLE_NAME_OF_LOG_VIEW` as data_access,
UNNEST(proto_payload.audit_log.authorization_info) AS auth
WHERE
log_id="cloudaudit.googleapis.com/data_access"
AND data_access.resource.type = 'bigquery_dataset'
샘플 차트 및 차트 구성은 다음과 같습니다.
위 스크린샷의 차트 구성에는 다음과 같은 차트 구성이 있습니다.
- 차트 유형: 막대 그래프, 세로
- 측정기준:
user_email
(5개로 제한) - 측정: 행 수 계산
- 분류:
auth_permission
(5개로 제한)
제한사항
선택한 열에는 null이 아닌 값이 있는 행이 최소 하나 이상 있어야 합니다.
쿼리를 저장하고 차트 구성을 맞춤설정하면 커스텀 차트 구성이 저장되지 않습니다.
쿼리에 이미 집계가 포함된 경우 로그 애널리틱스에 의해 자동으로 적용되는 추가 집계로 인해 생성된 차트가 다를 수 있습니다.
JSON 경로를 차트로 만들려면 문자열 및 숫자로 변환해야 합니다.
다음 단계
로그 애널리틱스에 대한 개요는 로그 쿼리 및 분석 개요를 참조하세요.
샘플 쿼리는 샘플 SQL 쿼리를 참조하세요.
로그 애널리틱스를 사용하여 감사 로그로 분석하는 방법을 알아보려면 보안 통계를 위한 SQL 쿼리를 참조하세요.