Google 애널리틱스와 통합

Google 애널리틱스 플랫폼을 사용하면 다양한 기기와 환경에서 비즈니스와 사용자의 상호작용을 측정할 수 있으며, 이러한 사용자 상호작용을 수집, 저장, 처리, 보고하기 위한 모든 컴퓨팅 리소스 또한 플랫폼에서 이용할 수 있습니다.

애널리틱스 수집은 클라이언트와 서버 측 모두에서 수행될 수 있습니다. Google 애널리틱스는 Google 애널리틱스로 데이터를 보내는 데 사용할 수 있는 간편한 API와 SDK를 제공합니다. Google은 이와 더불어 App Engine 애플리케이션에서 서버 측 애널리틱스를 Google 애널리틱스로 간편하게 보내는 데 사용할 수 있는 코드도 개발했습니다.

클라이언트 측 애널리틱스 수집

수집 API와 SDK를 사용하여 사용자가 콘텐츠 및 마케팅 이니셔티브와 어떻게 상호작용하는지 측정할 수 있습니다. 구현한 후에는 Google 애널리틱스 내에서 또는 Reporting API를 통해 사용자 상호작용 데이터를 확인할 수 있습니다. 클라이언트 측 애널리틱스 수집에 대한 자세한 내용은 아래에서 클라이언트 유형에 맞는 링크를 선택하여 확인하세요.

  • 웹 추적(analytics.js) - 사용자와 웹사이트 또는 웹 애플리케이션의 상호작용을 측정합니다.
  • Android - 사용자와 Android 애플리케이션의 상호작용을 측정합니다.
  • iOS - 사용자와 iOS 애플리케이션의 상호작용을 측정합니다.
  • 측정 프로토콜 - 모든 환경에서 사용자 상호작용을 측정하는 저수준 프로토콜입니다.

App Engine 서버 측 애널리틱스 수집

App Engine에 애플리케이션의 이벤트 로깅 메커니즘이 마련되어 있기는 하지만 Google 애널리틱스에서 특정 서버 측 이벤트를 추적하는 것이 더 유리할 수 있습니다. 몇 가지 이점은 다음과 같습니다.

  • 이전 데이터 분석 - App Engine을 사용하면 로그 파일의 최대 일수 또는 크기를 구성할 수 있습니다. 이 기간이 경과하면 해당 로그 파일에 더 이상 액세스할 수 없습니다. Google 애널리틱스에서 이벤트 추적을 사용하면 훨씬 더 긴 기간 동안의 과거 이벤트를 확인할 수 있습니다.
  • 주요 이벤트 추적 - 애플리케이션의 다양한 구성요소가 데이터를 기록하므로, 로그 파일이 장황해질 수 있습니다. 이벤트 추적을 사용하면 모니터링하려는 주요 이벤트를 선별하고 일부 추가 메타데이터와 함께 추적할 수 있습니다.
  • 강력한 사용자 인터페이스 - Google 애널리틱스가 제공하는 다채로운 사용자 인터페이스를 활용하여 서버 측 이벤트를 시각화하고 보고하고 내보낼 수 있습니다.

아래 샘플 소스 코드를 App Engine 애플리케이션에 통합하면 이러한 작업을 간편하게 수행할 수 있습니다. 이 접근 방식에 대한 자세한 내용은 Google 애널리틱스 개발자 가이드의 이벤트 추적을 참조하세요.

샘플 소스 코드

def track_event(category, action, label=None, value=0):
    data = {
        'v': '1',  # API Version.
        'tid': GA_TRACKING_ID,  # Tracking ID / Property ID.
        # Anonymous Client Identifier. Ideally, this should be a UUID that
        # is associated with particular user, device, or browser instance.
        'cid': '555',
        't': 'event',  # Event hit type.
        'ec': category,  # Event category.
        'ea': action,  # Event action.
        'el': label,  # Event label.
        'ev': value,  # Event value, must be an integer
    }

    response = requests.post(
        'http://www.google-analytics.com/collect', data=data)

    # If the request fails, this will raise a RequestException. Depending
    # on your application's needs, this may be a non-error and can be caught
    # by the caller.
    response.raise_for_status()


@app.route('/')
def track_example():
    track_event(
        category='Example',
        action='test action')
    return 'Event tracked.'