2010-07-24 18 views
8

Estoy buscando una manera de configurar un entorno sandbox de Google Analytics que me permita para probar mi código js personalizado casi en tiempo real.Google Analytics Realtime Sandbox Entorno

Mi aplicación utilizará variables personalizadas para la segmentación avanzada, y me gustaría probar varios escenarios rápidamente, en lugar de configurar una cuenta GA ficticia y esperar todo un día para confirmar la prueba.

Gracias

Respuesta

17

Gran pregunta.

Para GA, las actualizaciones del servidor ocurren cada cuatro horas, y después de cada sexta actualización, se vuelve a calcular todo el conjunto, lo que significa retraso de 24 horas del cambio de código a comentarios confiables. Este retraso también se aplica a la mayoría de las personalizaciones del navegador GA (por ejemplo, "filtros personalizados").

Si va a utilizar GA como su sistema de métricas web, y espera contar realmente con esos datos, entonces es esencial contar con un equipo de prueba.

Para mí, es útil agrupar sistemas de prueba para el análisis del lado del cliente usando dos rúbricas: (i) sistemas completos, autocontenidos (de circuito cerrado); o (ii) extracciones de datos automatizadas más simples del sistema de producción (por "sistema de producción" aquí me refiero al sistema de GA, no al Sitio cuyas páginas está rastreando el código GA).

En este último caso, sólo tiene que añadir esta línea para cada página de su sitio que contiene el código de seguimiento de GA, justo debajo de '__trackPageview()':

pageTracker._setLocalRemoteServerMode(); 

Esa línea hará que una copia de cada línea de transacción para registrarse en el registro de actividad de su servidor, por lo que en esencia, usted obtiene los datos capturados por GA en tiempo real. Eso es todo lo que necesita hacer para capturar los datos; para analizarlo, puede utilizar, por ejemplo, cualquiera de los excelentes analizadores de registro web de código abierto como AWStats, o hacer el suyo propio.

Esto es simple y confiable, pero todo lo que puede hacer es decirle (en tiempo real) "¿realmente funciona el código analítico que acabo de implementar en las páginas servidas por mi servidor de producción?"

Por lo general, eso no es suficiente, usted preferiría saber si su código funcionará antes de está en su servidor de producción. Para hacer eso, necesita simular el entorno de producción y encontrar una forma de acceder en tiempo real a los datos que GA recopila.

Este tipo de plataforma de prueba es un poco más complicado, pero todavía no es difícil.

En suma, se requiere los siguientes pasos:

  1. anfitrión/servir a los ga.js. y el seguimiento de píxeles localmente;

  2. registro de las solicitudes __utm.gif (en el flujo de datos GA, cada solicitud corresponde a uno registran transacción); y

  3. analizar los encabezados en algunos conveniente forma legible por humanos.


Si quieres más detalles de los que (es decir, una aplicación paso a paso), aquí está:

I. Alojamiento/Al servicio de la escritura (GA & actualizaciones automatización

para ello, puede crear un pequeño script de shell como éste para wget la última versión ga.js en su directorio local (sustituyendo la versión existente que encuentre allí).

#!/bin/sh 
rm /My_Sites/sitename.com/analytics/ga.js 
cd /My_Sites/sitename.com/analytics/ 
wget http://www.google-analytics.com/ga.js 
chmod 644 /My_Sites/sitename.com/analytics/ga.js 
cd ${OLDPWD} 
exit 0; 

(Gracias a AskApache.com, que proporcionó los originales de motivación y de configuración de detalles de hacer esto en un contexto de producción.)


II. Crear __utm.gif archivo

Esto es sólo una imagen GIF transparente de 1x1 píxeles, que se colocará en el directorio del sitio (no importa dónde, sólo tiene que coincidir con el lugar citado en las páginas)


III. Log the __utm.gif Solicitudes

Para un protocolo de prueba en el que usted es el origen de la actividad del cliente (por ejemplo, desea verificar la fidelidad entre navegadores de algún código de seguimiento de eventos que haya agregado a una página en su Sitio, para automatizar 5000 clics en el botón que acaba de conectar, que sirve la página desde su servidor de desarrollo configurado para este propósito) es probablemente el más simple simplemente registrar los Encabezados de Solicitud, porque está en esos encabezados que la secuencia de comandos GA ordena al cliente que recopile diversos datos del DOM, desde la barra de ubicación (url) y desde encabezados http anteriores, y los adjunte a una solicitud de un recurso en el servidor GA (__utm.gif, que es solo un 1x1 píxeles transparentes).

Para este tipo de protocolo, uso el complemento de Firefox, LiveHTTPHeaders. Lo instalas como cualquier otro complemento de Firefox, con solo unos pocos clics del mouse. A continuación, ábralo y haga clic en la pestaña "Generador". Desde esta ventana, puede ver las solicitudes reales en tiempo real. En la parte inferior de la ventana hay un botón 'guardar' para almacenar el registro. Me resulta más fácil configurar LiveHTTPHeaders para registrar solo las solicitudes __utm.gif; para hacer eso, simplemente haga clic en la pestaña 'Editar' y cree un filtro siimple para excluir todo excepto estas imágenes gif en particular (usando las casillas de verificación a la derecha y el cuadro de texto grande a la derecha).

Otros tipos de protocolos de prueba requieren que trabaje desde los registros de actividad del servidor; en ese caso sólo tiene que añadir esta línea para cada página de su sitio, justo por debajo de __trackPageview():

pageTracker._setLocalRemoteServerMode(); 

IV. Analice las solicitudes registradas para que pueda leerlas

Por lo tanto, ahora su registro contendrá líneas de transmisión individuales, cada una de las cuales es una cadena adjunta a una solicitud HTTP para el píxel de seguimiento GA. Esta cadena es solo una concatenación de pares clave-valor, cada clave comienza con las letras "utm" (probablemente para "urchin tracker"). Cada uno de estos parámetros corresponde a una variable que ve en el Tablero GA (aquí hay un complete list y una descripción de ellos). Esto es todo lo que necesita saber para construir un analizador.En más detalle:

En primer lugar, aquí hay un saneado __utm.gif petición (las entradas en sus LiveHTTPHeaders LOG):

http://www.google-analytics.com/__utm.gif?utmwv=1&utmn=1669045322&utmcs=UTF-8&utmsr=1280x800&utmsc=24-bit&utmul=en-us&utmje=1&utmfl=10.0%20r45&utmcn=1&utmdt=Position%20Listings%20%7C%20Linden%20Lab&utmhn=lindenlab.hrmdirect.com&utmr=http://lindenlab.com/employment&utmp=/employment/openings.php?sort=da&&utmac=UA-XXXXXX-X&utmcc=__utma%3D87045125.1669045322.1274256051.1274256051.1274256051.1%3B%2B__utmb%3D87045125%3B%2B__utmc%3D87045125%3B%2B__utmz%3D87045125.1274256051.1.1.utmccn%3D(referral)%7Cutmcsr%3Dlindenlab.com%7Cutmcct%3D%2Femployment%7Cutmcmd%3Dreferral%3B%2B 

Este es mi programa de análisis (en Python):

# regular expression module imported 
import re 

pattern = r'\&{1,2}' 
pat_obj = re.compile(pattern) 

# splitting the gif request on the '&' character 
# (which GA originally used to concatenate each piece to build the request) 
# (here, i've bound the __utm.gif to the variable by 'gfx') 
gfx1 = pat_obj.split(gfx) 

# create a look-up table to map a descriptive name to each gif request parameter 
# (note, this isn't the entire list, which i've linked to above) 
keys = "utmje utmsc utmsr utmac utmcc utmcn utmcr utmcs utmdt utme utmfl utmhn utmn utmp utmr utmul utmwv" 
values = "java_enabled screen_color_depth screen_resolution account_string cookies campaign_session_new repeat_campaign_visit language_encoding page_title event_tracking_data flash_version host_name GIF_req_unique_id page_request referral_url browser_language gatc_version" 
keys = keys.strip().split() 

#create the look-up table 
GIF_REQUEST_PARAMS = dict(zip(keys, values)) 

# parse each request parameter and map the parameter name to a descriptive name: 
pattern = r'(utm\w{1,2})=(.*?)$' 
pat_obj = re.compile(pattern) 

for itm in gfx1 : 
    m = pat_obj.search(itm) 
    if m : 
     fmt = '{0:25} {1:10}' 
     print(fmt.format(GIF_REQUEST_PARAMS[m.group(1)], m.group(2))) 

El resultado es el siguiente:

gatc_version              1          
    GIF_req_unique_id         1669045322 
    language_encoding         UTF-8      
    screen_resolution         1280x800   
    screen_color_depth        24-bit     
    browser_language          en-us      
    java_enabled              1          
    flash_version             10.0%20r45 
    campaign_session_new      1          
    page_title                Position%20Listings%20%7C%20Linden%20Lab 
    host_name                 lindenlab.hrmdirect.com 
    referral_url              http://lindenlab.com/employment 
    page_request              /employment/openings.php?sort=da 
    account_string            UA-XXXXXX-X 
    cookies 

Para evitar hacer esto aún más, dejé fuera el valor de las cookies. Obviamente requieren un paso de análisis separado, aunque es prácticamente idéntico al paso que acabo de mostrar. De nuevo, cada solicitud representa una sola transacción, por lo que puede almacenarlas como lo necesite.

+0

Doug, ¡gracias por una publicación tan detallada! Seguramente intentaré esto y le notificaré mi progreso la próxima semana. ¿Tal vez quieres crear un proyecto de Google y puedo contribuir a desarrollar un conjunto que otros puedan usar? –

+0

Buena idea, Salman. Utilizo GibHub, así que lo pondré allí la semana que viene y te haré saber cuándo lo hago y dónde encontrarlo. – doug

+0

@doug ¿esto siempre sucedió en Github? Me encantaría verlo si lo hiciera ... – s6mike