2010-07-24 17 views
8

Sto cercando un modo per configurare un ambiente sandbox di google analytics che mi consenta di testare il codice js personalizzato in tempo reale con lo .Ambiente di sandbox in tempo reale di Google Analytics

La mia app utilizzerà variabili personalizzate per la segmentazione avanzata e vorrei testare rapidamente più scenari, anziché impostare un account GA fittizio e attendere un intero giorno per confermare il test.

Grazie

risposta

17

Grande domanda.

Per GA, aggiornamenti del server si verificano ogni quattro ore, e dopo ogni sesto tale aggiornamento, l'intero set viene ricalcolato, il che significa un ritardo 24 ore dal cambiamento codice a risposte affidabile. Questo ritardo si applica anche alla maggior parte delle personalizzazioni del browser GA (ad esempio, "filtri personalizzati").

Quindi, se si intende utilizzare GA come sistema di metriche web e si prevede di fare affidamento su tali dati, è essenziale un banco di prova.

Per me, è utile raggruppare i sistemi di test per l'analisi lato client utilizzando due rubriche: (i) sistemi completi e autonomi (a circuito chiuso); o (ii) più semplici estrazioni automatizzate dei dati dal sistema di produzione (per "sistema di produzione" qui intendo il sistema di GA, non il Sito le cui pagine sono tracciate dal codice GA).

Per questi ultimi, basta aggiungere questa riga a ogni pagina del tuo sito che contiene il codice di monitoraggio GA, appena sotto '__trackPageview()':

pageTracker._setLocalRemoteServerMode(); 

Quella linea causerà una copia di ogni riga della transazione per essere loggato al registro delle attività del tuo server - in pratica, ottieni i dati acquisiti da GA in tempo reale. Tutto ciò che devi fare per acquisire i dati; per analizzarlo, è possibile utilizzare, ad esempio, uno degli eccellenti analizzatori di log web open source come AWStats o eseguire il rollover.

Questo è semplice e affidabile, ma tutto ciò che può fare è dirvi (in tempo reale) "il codice di analisi che ho appena implementato sulle pagine servite dal mio server di produzione funziona davvero?"

Di solito, questo non è abbastanza buono - preferiresti sapere se il tuo codice funzionerà prima del sul tuo server di produzione. Per fare ciò, è necessario simulare l'ambiente di produzione e trovare un modo per accedere in tempo reale ai dati raccolti da GA.

Questo tipo di banco di prova è un po 'più impegnativo, ma non ancora difficile.

In sintesi, si richiede come segue:

  1. ospite/servire i ga.js e il pixel di tracciamento a livello locale;

  2. log le richieste __utm.gif (nel flusso di dati GA, ogni richiesta corrisponde ad una registrati transazione); e

  3. analizzare le intestazioni in qualche forma facilmente leggibile.


Se volete maggiori dettagli rispetto a quella (vale a dire, un'implementazione passo-passo), eccolo:

I. Hosting/servizio Script GA (& automatizzando gli aggiornamenti

per fare questo, è possibile creare un piccolo script di shell come questo per wget l'ultima versione ga.js nella directory locale (che sostituisce la versione esistente che trova lì).

#!/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; 

(Grazie a AskApache.com, che ha fornito la motivazione e la configurazione dettagli originali per fare questo in un contesto di produzione.)


II. Creare file di __utm.gif

Questa è solo un'immagine trasparente di 1x1 pixel gif, che verrà posto nella directory del sito (non importa dove, ha solo bisogno di corrispondere alla posizione recitati nelle vostre pagine)


III. Accedi al __utm.gif Richieste

Per un protocollo di test in cui sei l'origine dell'attività lato client (ad esempio, desideri verificare la fedeltà cross-browser di un codice di monitoraggio eventi che hai aggiunto a una pagina sul tuo sito, in modo da automatizzare 5000 click sul pulsante che hai appena cablato, servendo la pagina dal tuo server dev impostato per questo scopo) è probabilmente più semplice per solo registrare le intestazioni di richiesta, perché è in quelle intestazioni che lo script GA indirizza il client a raccogliere vari dati dal DOM, dalla barra degli indirizzi (url) e dalle intestazioni HTTP precedenti e li aggiunge a una richiesta di una risorsa sul server GA (__utm.gif, che è solo un 1x1 pixel trasparente).

Per questo tipo di protocollo, utilizzo l'addon di Firefox, LiveHTTPHeaders. Lo si installa come qualsiasi altro addon di Firefox, pochi clic del mouse è tutto. Quindi, aprilo e fai clic sulla scheda "Generatore". Da questa finestra è possibile visualizzare le richieste effettive in tempo reale. Nella parte inferiore della finestra c'è un pulsante 'salva' per memorizzare il registro. Trovo più semplice configurare LiveHTTPHeaders per registrare solo le richieste __utm.gif; per fare ciò, basta fare clic sulla scheda "Modifica" e creare un semplice filtro per escludere tutto tranne queste particolari immagini gif (usando le caselle di controllo a destra e la grande casella di testo a destra).

Altri tipi di protocolli di test richiedono l'utilizzo dei registri delle attività del server; in questo caso è sufficiente aggiungere questa riga a ogni pagina del tuo sito, appena sotto __trackPageview():

pageTracker._setLocalRemoteServerMode(); 

IV. Analizza le richieste registrate così puoi leggerle effettivamente

Così ora il tuo log conterrà le singole linee di transcription, ognuna delle quali è una stringa aggiunta ad una richiesta HTTP per il pixel di tracciamento GA. Questa stringa è solo una concatenazione di coppie chiave-valore, ogni chiave inizia con le lettere "utm" (probabilmente per "urchin tracker"). Ognuno di questi parametri corrisponde a una variabile che vedi in GA Dashboard (qui c'è un complete list e una descrizione di essi). Questo è tutto ciò che devi sapere per creare un parser.Più in dettaglio:

In primo luogo, ecco un sterilizzata __utm.gif richiesta (le voci nella tua 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 

Questo è il mio parser (in 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))) 

Il risultato è il seguente:

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 

Per evitare di fare questo più a lungo, ho omesso il valore dei cookie. Ovviamente richiedono un passo di analisi separato, sebbene sia praticamente identico al passaggio che ho appena mostrato. Ancora una volta, ogni richiesta rappresenta una singola transazione, quindi è possibile memorizzarle a proprio piacimento.

+0

Doug, grazie per un post così dettagliato! Sicuramente darò una prova e informarti dei miei progressi la prossima settimana. Forse vuoi creare un progetto google e posso contribuire a sviluppare una suite che altri possono usare? –

+0

Buona idea, Salman. Io uso GibHub, quindi lo metterò la settimana prossima e ti farò sapere quando lo faccio e dove trovarlo. – doug

+0

@doug ha fatto questo su Github? Mi piacerebbe vederlo se lo facesse ... – s6mike

Problemi correlati