2010-07-24 17 views
8

मैं एक Google Analytics सैंडबॉक्स वातावरण स्थापित करने का एक तरीका ढूंढ रहा हूं जो मुझे वास्तविक समय के पास मेरे कस्टम जेएस कोड का परीक्षण करने के लिए की अनुमति देगा।Google Analytics रीयलटाइम सैंडबॉक्स पर्यावरण

मेरा ऐप उन्नत सेगमेंटेशन के लिए कस्टम चर का उपयोग करेगा, और मैं एक डमी जीए खाता स्थापित करने के विरोध के रूप में कई परिदृश्यों का परीक्षण करना चाहता हूं और परीक्षण की पुष्टि करने के लिए पूरे दिन इंतजार करना चाहता हूं।

धन्यवाद

उत्तर

17

महान प्रश्न।

जीए के लिए, सर्वर अद्यतन हर चार घंटे होते हैं, और हर छठे इस तरह के अपडेट के बाद, पूरे सेट पुनर्गणना की जाती है, जो विश्वसनीय प्रतिक्रिया के लिए कोड परिवर्तन से एक 24 घंटे अंतराल का मतलब है। यह देरी GA ब्राउज़र (उदा।, "कस्टम फ़िल्टर") के अधिकांश अनुकूलन पर भी लागू होती है।

तो यदि आप अपने वेब मेट्रिक्स सिस्टम के रूप में GA का उपयोग करने जा रहे हैं, और आप वास्तव में उन डेटा पर भरोसा करने की उम्मीद करते हैं तो एक परीक्षण रिग आवश्यक है।

मेरे लिए, क्लाइंट-साइड एनालिटिक्स के लिए दो रूब्रिक का उपयोग करके समूह परीक्षण समूह के लिए उपयोगी है: (i) पूर्ण, स्वयं निहित (बंद-लूप) सिस्टम; या (ii) सरल स्वचालित डेटा उत्पादन प्रणाली से खींचता है (यहां "उत्पादन प्रणाली" द्वारा मेरा मतलब है जीए सिस्टम, साइट नहीं जिनके पृष्ठ GA कोड ट्रैकिंग कर रहे हैं)।

ओमकारा के लिए सिर्फ इतना है कि जीए ट्रैकिंग कोड है आपकी साइट के प्रत्येक पृष्ठ के लिए इस लाइन जोड़ने के लिए, बस नीचे दिए गए '__trackPageview()':

pageTracker._setLocalRemoteServerMode(); 

कि लाइन प्रत्येक आइटम पंक्ति की एक प्रति का कारण होगा अपने सर्वर के गतिविधि लॉग में लॉग इन होने के लिए - संक्षेप में, आपको वास्तविक समय में जीए द्वारा कैप्चर किया गया डेटा मिलता है, डेटा को कैप्चर करने के लिए आपको बस इतना करना होगा; इसका विश्लेषण करने के लिए, उदाहरण के लिए, AWStats जैसे उत्कृष्ट ओपन सोर्स वेब लॉग विश्लेषकों में से कोई भी इसका उपयोग कर सकते हैं, या अपना खुद का रोल कर सकते हैं।

यह सरल और भरोसेमंद है - लेकिन यह सब कुछ आपको बता सकता है (वास्तविक समय में) "क्या मेरे एनालिटिक्स कोड द्वारा किए गए पृष्ठों पर लागू एनालिटिक्स कोड वास्तव में काम करता है?"

आमतौर पर, यह पर्याप्त नहीं है - आपको पता होगा कि आपका कोड से पहले आपके उत्पादन सर्वर पर होगा या नहीं। ऐसा करने के लिए, आपको उत्पादन वातावरण को अनुकरण करने और जीए एकत्रित होने वाले वास्तविक समय में पहुंचने का एक तरीका ढूंढने की आवश्यकता है।

इस प्रकार का परीक्षण रिग थोड़ा अधिक शामिल है, लेकिन अभी भी मुश्किल नहीं है।

संक्षेप में, यह इन चरणों की आवश्यकता है:

  1. मेजबान/ga.js और ट्रैकिंग पिक्सेल स्थानीय स्तर पर की सेवा;

  2. लॉग __utm.gif अनुरोध ( जीए डाटा प्रवाह में, प्रत्येक अनुरोध एक से मेल खाती है लेनदेन लॉग इन); और

  3. कुछ सुविधाजनक मानव-पठनीय रूप में हेडर को पार्स करें।


आपको लगता है कि अधिक से अधिक विस्तार (यानी, एक कदम-दर-कदम कार्यान्वयन) चाहते हैं, यहाँ यह है:

मैं होस्टिंग/जीए स्क्रिप्ट सेवित (& स्वचालित अद्यतन

कि ऐसा करने के लिए, तो आप इस एक अपने स्थानीय निर्देशिका में नवीनतम ga.js संस्करण wget के लिए (वर्तमान संस्करण यह वहाँ पाता की जगह) की तरह एक छोटे से खोल स्क्रिप्ट बना सकते हैं।

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

(AskApache.com है, जो मूल प्रेरणा और config विवरण एक उत्पादन के संदर्भ में यह करने के लिए प्रदान की है। के लिए धन्यवाद)


द्वितीय। __utm.gif फ़ाइल

बनाएं यह (कोई फर्क नहीं पड़ता है, जहां, यह सिर्फ स्थान अपने पृष्ठों में सुनाई मैच के लिए की जरूरत है)


सिर्फ एक पारदर्शी 1x1 पिक्सेल gif छवि है, जो आप साइट निर्देशिका में जगह नहीं है

III। लॉग इन करें __utm.gif अनुरोध

एक परीक्षण प्रोटोकॉल के लिए जिसमें आप क्लाइंट-साइड गतिविधि का स्रोत हैं (उदाहरण के लिए, आप कुछ ईवेंट-ट्रैकिंग कोड के क्रॉस-ब्राउज़र निष्ठा को सत्यापित करना चाहते हैं जिसे आपने जोड़ा है आपकी साइट पर एक पृष्ठ, ताकि आप जिस बटन को अभी तक तारित कर चुके हैं, उस बटन पर 5000 क्लिक स्वचालित करें, इस उद्देश्य के लिए आपके देव सर्वर से पेज की सेवा करना) यह संभवतः अनुरोध हेडर पर लॉग इन करें, क्योंकि यह उन शीर्षकों में है जीए स्क्रिप्ट क्लाइंट को स्थान बार (यूआरएल) से, और पूर्व http शीर्षकों से डीओएम से विभिन्न डेटा एकत्र करने के लिए निर्देशित करता है, और उन्हें GA सर्वर (__utm.gif) पर संसाधन के अनुरोध के लिए जोड़ता है, जो कि केवल एक है 1 एक्स 1 पारदर्शी पिक्सेल)।

इस प्रकार के प्रोटोकॉल के लिए, मैं फ़ायरफ़ॉक्स एडन, LiveHTTPHeaders का उपयोग करता हूं। आप इसे किसी भी अन्य फ़ायरफ़ॉक्स एडन की तरह स्थापित करते हैं, कुछ माउस क्लिक सभी होते हैं। इसके बाद, इसे खोलें, और "जनरेटर" टैब पर क्लिक करें। इस विंडो से, आप वास्तविक समय में वास्तविक अनुरोध देख सकते हैं। विंडो को निचले हिस्से में लॉग को स्टोर करने के लिए 'सेव' बटन है। मुझे केवल __utm.gif अनुरोधों को लॉग इन करने के लिए LiveHTTPHeaders को कॉन्फ़िगर करना आसान लगता है; ऐसा करने के लिए, बस 'संपादित करें' टैब पर क्लिक करें और इन विशेष gif छवियों को छोड़कर सबकुछ बाहर करने के लिए एक सिंपल फ़िल्टर बनाएं (दाईं ओर स्थित चेक बॉक्स का उपयोग करके, और दाईं ओर बड़े टेक्स्ट बॉक्स का उपयोग करें)।

अन्य प्रकार के परीक्षण प्रोटोकॉल के लिए आपको अपने सर्वर गतिविधि लॉग से काम करने की आवश्यकता होती है; उस मामले में सिर्फ अपने साइट के प्रत्येक पृष्ठ में इस लाइन जोड़ने के लिए, बस __trackPageview नीचे():

pageTracker._setLocalRemoteServerMode(); 

चतुर्थ। उन लॉग इन अनुरोधों को पार्स करें ताकि आप वास्तव में उन्हें

तो अब आपके लॉग में व्यक्तिगत ट्रांसक्शन लाइनें होंगी, जिनमें से प्रत्येक एक GA ट्रैकिंग पिक्सेल के लिए HTTP अनुरोध में संलग्न स्ट्रिंग है। यह स्ट्रिंग केवल कुंजी-मूल्य जोड़े का एक संयोजन है, प्रत्येक कुंजी "utm" अक्षरों से शुरू होती है (शायद "urchin tracker" के लिए)। इनमें से प्रत्येक पैरामीटर एक वैरिएबल से मेल खाता है जिसे आप GA डैशबोर्ड में देखते हैं (यहां एक complete list है और उनका विवरण)। एक पार्सर बनाने के लिए आपको यह जानने की जरूरत है।और अधिक विस्तार से:

सबसे पहले, यहाँ है एक स्वच्छ __utm.gif अनुरोध (अपने LiveHTTPHeaders में लॉग प्रविष्टियों):

# 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))) 
:

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 

यह मेरा पार्सर (अजगर में) है

परिणाम इस तरह दिखता है:

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 

इसे बनाने से बचने के लिए अभी भी, मैंने कुकीज़ के मूल्य को छोड़ दिया। उन्हें स्पष्ट रूप से एक अलग पार्सिंग चरण की आवश्यकता होती है, हालांकि यह उस चरण के समान है जो मैंने अभी दिखाया है। दोबारा, प्रत्येक अनुरोध एक एकल लेनदेन का प्रतिनिधित्व करता है, ताकि आप उन्हें स्टोर कर सकें।

+0

डौग, इस तरह के एक विस्तृत पोस्ट के लिए धन्यवाद! मैं निश्चित रूप से यह कोशिश करूंगा और आपको अगले हफ्ते मेरी प्रगति की सूचना दूंगा। हो सकता है कि आप एक Google प्रोजेक्ट बनाना चाहते हैं और मैं दूसरों के उपयोग के लिए एक सूट विकसित करने में योगदान दे सकता हूं? –

+0

अच्छा विचार, सलमान। मैं गिबहब का उपयोग करता हूं, इसलिए मैं इसे अगले हफ्ते वहां रखूंगा और आपको बताऊंगा कि मैं कब और कहां ढूंढूं। – doug

+0

@doug यह कभी भी गितूब पर चला गया? मुझे यह देखना अच्छा लगेगा अगर ऐसा हुआ ... – s6mike