분석 이벤트 및 로그의 대규모 수집 최적화

Last reviewed 2022-08-22 UTC

이 문서에서는 Google Cloud에서 대규모 분석 수집을 최적화하기 위한 아키텍처를 설명합니다. 이 도움말에서 대규모는 초당 100,000개가 넘는 이벤트를 의미하거나 초당 100MB를 초과하는 전체 총 이벤트 페이로드 크기를 의미합니다.

Google Cloud의 탄력적이고 확장 가능한 관리형 서비스를 사용하면 방대한 양의 수신 로그 및 분석 이벤트를 수집한 다음 BigQuery와 같은 데이터 웨어하우스에 입력하도록 처리할 수 있습니다.

상당량의 분석 데이터를 수집하기 위한 아키텍처는 거의 실시간으로 액세스해야 하는 데이터와 짧은 지연 후에 처리할 수 있는 데이터를 고려하여 적절하게 분할해야 합니다. 세그먼트화된 접근 방식은 다음과 같은 이점을 제공합니다.

  • 로그 무결성. 전체 로그를 볼 수 있습니다. 스트리밍 할당량 한도 또는 샘플링으로 인해 로그가 손실되지 않습니다.
  • 비용 절감. 이벤트 및 로그의 스트리밍 삽입에는 일괄 처리 작업을 사용하여 Cloud Storage에서 삽입하는 방법보다 높은 요금이 청구됩니다.
  • 예약된 쿼리 리소스. 우선순위가 낮은 로그를 일괄 로드 방식으로 전환하면 예약된 쿼리 리소스에 영향을 주지 않게 됩니다.

다음 아키텍처 다이어그램에서는 이러한 시스템을 볼 수 있으며 수집을 위한 핫 경로콜드 경로의 개념을 소개합니다.

일반적인 수집 경로

아키텍처 개요

이 아키텍처에서 데이터 출처는 두 가지일 수 있습니다.

  • 로그는 Cloud Logging을 사용하여 수집됩니다.
  • 분석 이벤트는 Pub/Sub 주제에 게시됩니다.

데이터는 메시지의 지연 시간 요구사항을 기반으로 한 소스에서 수집한 후 핫 경로 또는 콜드 경로에 저장됩니다. 핫 경로는 지속적인 데이터 흐름을 처리할 수 있는 스트리밍 입력을 사용하며 콜드 경로는 일괄 처리로서 결정한 일정에 따라 데이터를 로드합니다.

이벤트 로깅

Cloud Logging을 사용하여 표준 운영체제 로깅 기능으로 생성된 로깅 이벤트를 수집할 수 있습니다. Cloud Logging은 기본적으로 표준 이미지를 비롯한 여러 Compute Engine 환경에서 사용할 수 있으며 Cloud Logging 에이전트를 사용하면 다양한 운영체제에 설치할 수도 있습니다. 로깅 에이전트는 App Engine 및 Google Kubernetes Engine의 기본 로깅 싱크입니다.

핫 경로

핫 경로 로깅

핫 경로에서 서비스 모니터링 및 분석에 필요한 중요 로그는 Cloud Logging 싱크에서 필터를 지정함으로써 선택되며 멀티 BigQuery 테이블로 스트리밍됩니다. ERROR 및 WARN 로깅 수준에 별도의 테이블을 사용하고, 높은 볼륨이 예상되는 경우 서비스별로 추가 분할합니다. 이 권장사항은 테이블당 초당 인서트 수를 100,000개 한도 미만으로 유지하고 이 데이터에 대한 쿼리가 잘 수행되도록 합니다.

콜드 경로

콜드 경로 로깅

콜드 경로의 경우 실시간에 가까운 분석이 필요하지 않은 로그는 Cloud Storage 버킷을 가리키는 Cloud Logging 싱크를 사용하여 선택합니다. 로그는 Cloud Storage 시간별 배치에서 일괄 처리되고 로그 파일에 기록됩니다. 이러한 로그는 표준 Cloud Storage 파일 가져오기 프로세스를 사용하여 BigQuery에 일괄적으로 로드할 수 있으며, 이 프로세스는 Google Cloud Console, 명령줄 인터페이스(CLI) 또는 보다 간단한 스크립트를 사용하여 시작할 수 있습니다. 일괄 로드는 핫 경로의 스트리밍 수집 또는 쿼리 성능에 영향을 주지 않습니다. 대부분의 경우 콜드 경로 로그를 핫 경로 로그에서 사용하는 동일한 테이블에 직접 병합하여 문제해결 및 보고서 생성을 단순화하는 것이 가장 좋습니다.

분석 이벤트

분석 이벤트는 Google Cloud의 앱 서비스에서 생성되거나 원격 클라이언트에서 전송될 수 있습니다. Pub/Sub를 통해 이러한 분석 이벤트를 수집한 다음 Dataflow에서 처리하여 대기 시간이 짧고 처리량이 높은 시스템을 제공합니다. 핫 분석 이벤트와 콜드 분석 이벤트를 별도의 두 가지 Pub/Sub 항목으로 보낼 수는 있지만 모든 이벤트를 하나의 주제로 보내고 별도의 핫 경로 및 콜드 경로 Dataflow 작업을 사용하여 처리해야 합니다. 이렇게 하면 새로운 애플리케이션 또는 클라이언트 버전을 배포하는 것보다 쉬운 Dataflow 작업을 업데이트하여 분석 이벤트가 따르는 경로를 변경할 수 있습니다.

핫 경로

핫 경로 이벤트

일부 이벤트는 즉각적인 분석이 필요합니다. 예를 들어 이벤트가 예기치 않은 클라이언트 동작이나 악의적인 사용자를 나타낼 수 있습니다. 자동 확장 Dataflow 작업을 사용하여 Pub/Sub에서 이러한 이벤트를 선별한 다음 BigQuery로 직접 전송해야 합니다. 이 데이터는 테이블당 초당 100,000행 제한에 도달하지 않도록 Dataflow 작업으로 분할할 수 있습니다. 분할은 쿼리도 원활하게 합니다.

콜드 경로

콜드 경로 이벤트

시간별 또는 일별로 추적되고 분석되어야 하지만 즉각적인 분석은 필요하지 않은 이벤트는 Cloud Dataflow에서 Cloud Storage의 객체로 푸시할 수 있습니다. Cloud 콘솔, Google Cloud CLI 또는 간단한 스크립트를 사용하여 Cloud Storage에서 BigQuery로 로드를 시작할 수 있습니다. 핫 경로 이벤트와 마찬가지로 테이블에 이들을 병합할 수 있습니다. 로깅 콜드 경로와 마찬가지로 일괄적으로 로드된 분석 이벤트는 예약된 쿼리 리소스에 영향을 미치지 않으며 스트리밍 수집 경로 로드를 적정하게 유지합니다.

BigQuery에 데이터를 로드하는 방법에 대한 자세한 내용은 데이터 로드 소개를 참조하세요.

다음 단계