Google 애널리틱스와 통합

Google 애널리틱스 플랫폼을 사용하면 다양한 기기와 환경에서 비즈니스와 사용자의 상호작용을 측정할 수 있습니다. Google 애널리틱스는 이러한 사용자 상호작용을 수집, 저장, 처리, 보고하기 위한 리소스를 제공합니다.

클라이언트 측과 서버 측에서 애널리틱스를 수집할 수 있습니다.

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

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

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

서버 측 애널리틱스 수집

App Engine은 애플리케이션의 이벤트를 로깅하는 메커니즘을 제공하지만, Google 애널리틱스를 사용하여 특정 서버 측 이벤트를 추적하여 다음을 수행할 수 있습니다.

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

서버 측 애널리틱스 수집을 사용 설정하려면 HTTP 클라이언트를 통해 Google 애널리틱스 측정 프로토콜을 사용하여 HTTP 요청을 전송합니다. 자세한 내용은 이벤트 추적에 대한 Google 애널리틱스 개발자 가이드를 참조하세요.

샘플 애플리케이션

아래의 샘플 애플리케이션은 App Engine 애플리케이션에서 이벤트를 추적하는 방법을 보여줍니다. 이 애플리케이션은 HTTP 요청을 전송하고 이벤트에 대한 데이터를 Google 애널리틱스에 게시합니다.

App Engine에서 Google 애널리틱스 측정 프로토콜을 사용하기 전에 다음을 수행해야 합니다.

  • 샘플 앱을 로컬에서 실행하기 전에 앱에서 필요한 환경 변수를 설정합니다.

    export GA_TRACKING_ID=YOUR_TRACKING_ID
    
  • 명령줄을 사용하여 로컬에서 샘플 코드를 실행할 수 있습니다. 예를 들면 다음과 같습니다.

    go run analytics.go
    

  • 다음 코드를 App Engine 애플리케이션에 통합하여 Google 애널리틱스에 이벤트 추적 데이터를 게시할 수 있습니다.

    
    // Sample analytics demonstrates Google Analytics calls from App Engine flexible environment.
    package main
    
    import (
    	"errors"
    	"fmt"
    	"log"
    	"net"
    	"net/http"
    	"net/url"
    	"os"
    
    	uuid "github.com/gofrs/uuid"
    
    	"google.golang.org/appengine"
    )
    
    var gaPropertyID = mustGetenv("GA_TRACKING_ID")
    
    func mustGetenv(k string) string {
    	v := os.Getenv(k)
    	if v == "" {
    		log.Fatalf("%s environment variable not set.", k)
    	}
    	return v
    }
    
    func main() {
    	http.HandleFunc("/", handle)
    
    	appengine.Main()
    }
    
    func handle(w http.ResponseWriter, r *http.Request) {
    	if r.URL.Path != "/" {
    		http.NotFound(w, r)
    		return
    	}
    
    	if err := trackEvent(r, "Example", "Test action", "label", nil); err != nil {
    		fmt.Fprintf(w, "Event did not track: %v", err)
    		return
    	}
    	fmt.Fprint(w, "Event tracked.")
    }
    
    func trackEvent(r *http.Request, category, action, label string, value *uint) error {
    	if gaPropertyID == "" {
    		return errors.New("analytics: GA_TRACKING_ID environment variable is missing")
    	}
    	if category == "" || action == "" {
    		return errors.New("analytics: category and action are required")
    	}
    
    	v := url.Values{
    		"v":   {"1"},
    		"tid": {gaPropertyID},
    		// Anonymously identifies a particular user. See the parameter guide for
    		// details:
    		// https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#cid
    		//
    		// Depending on your application, this might want to be associated with the
    		// user in a cookie.
    		"cid": {uuid.Must(uuid.NewV4()).String()},
    		"t":   {"event"},
    		"ec":  {category},
    		"ea":  {action},
    		"ua":  {r.UserAgent()},
    	}
    
    	if label != "" {
    		v.Set("el", label)
    	}
    
    	if value != nil {
    		v.Set("ev", fmt.Sprintf("%d", *value))
    	}
    
    	if remoteIP, _, err := net.SplitHostPort(r.RemoteAddr); err != nil {
    		v.Set("uip", remoteIP)
    	}
    
    	// NOTE: Google Analytics returns a 200, even if the request is malformed.
    	_, err := http.PostForm("https://www.google-analytics.com/collect", v)
    	return err
    }
    

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Go용 Google App Engine Flexible Environment