Аналитика Google среда песочницы в реальном времени

Я ищу способ установить среду песочницы аналитики Google, которая позволит мне проверять свое пользовательское псевдореальное время кода js.

Мое приложение будет использовать пользовательские переменные для усовершенствованной сегментации, и я хотел бы проверить несколько сценариев быстро, в противоположность установке фиктивного GA считают и ожидают в течение целого дня для подтверждения теста.

Спасибо

8
задан Salman Paracha 24 July 2010 в 18:02
поделиться

1 ответ

Отличный вопрос.

Для GA обновления сервера происходят каждые четыре часа, и после каждого шестого такого обновления весь набор пересчитывается, что означает 24-часовую задержку от изменения кода до получения достоверной обратной связи. Эта задержка также касается большинства настроек браузера GA (например, "пользовательских фильтров").

Так что если вы собираетесь использовать GA в качестве системы веб-метрик и рассчитываете действительно полагаться на эти данные, то тестовый стенд просто необходим.

Для меня полезно группировать тестовые системы для аналитики на стороне клиента по двум признакам: (i) полные, самодостаточные (замкнутые) системы; или (ii) более простые автоматизированные системы получения данных из производственной системы (под "производственной системой" здесь подразумевается система GA, а не сайт, страницы которого отслеживает код GA).

Для последнего варианта просто добавьте эту строку на каждую страницу вашего сайта, содержащую код отслеживания GA, чуть ниже '__trackPageview()':

pageTracker._setLocalRemoteServerMode();

Эта строка заставит копию каждой строки транзакции записываться в журнал активности вашего сервера - таким образом, по сути, вы получаете данные, захваченные GA в реальном времени Это все, что вам нужно сделать для захвата данных; для их анализа вы можете использовать, например, любой из отличных анализаторов веб-журналов с открытым исходным кодом, таких как AWStats, или создать свой собственный.

Это просто и надежно - но все, что он может сделать, это сказать вам (в режиме реального времени) "работает ли код аналитики, который я только что внедрил на страницах, обслуживаемых моим производственным сервером?"

Обычно этого недостаточно - вам лучше знать, будет ли работать ваш код до того, как он окажется на вашем производственном сервере. Для этого вам нужно смоделировать производственную среду и найти способ доступа в реальном времени к данным, которые собирает GA.

Такой тестовый стенд немного сложнее, но все же не сложнее.

В целом, он требует следующих шагов:

  1. разместить/сохранить ga.js и пиксель отслеживания локально;

  2. регистрировать запросы __utm.gif (в потоке данных GA, каждый запрос соответствует одной зарегистрированной транзакция); и

  3. разбор заголовков в некоторую удобную человекочитаемую форму.


Если вам нужно больше деталей (т.е. пошаговая реализация), то вот:

I. Размещение/обслуживание скрипта GA (и автоматизация обновлений

Для этого вы можете создать небольшой shell-скрипт, подобный этому, который будет загружать последнюю версию ga.js в ваш локальный каталог (заменяя найденную там версию).

#!/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, который предоставил оригинальную мотивацию и детали конфигурации, чтобы сделать это в производственном контексте.)


II. Создайте файл __utm.gif

Это просто прозрачное gif-изображение размером 1x1 пиксель, которое вы поместите в директорию сайта (не имеет значения, где именно, оно просто должно соответствовать расположению, указанному на ваших страницах)


III. Регистрация запросов __utm.gif

Для протокола тестирования, в котором вы являетесь источником активности на стороне клиента (например, вы хотите проверить кроссбраузерность кода отслеживания событий, который вы добавили на страницу вашего сайта, поэтому вы автоматизируете 5000 нажатий на кнопку, которую вы только что подключили, обслуживая страницу с вашего сервера, созданного для этой цели), вероятно, проще всего регистрировать заголовки запросов, потому что именно в этих заголовках скрипт GA направляет клиента на сбор различных данных из DOM, из строки расположения (url) и из предыдущих http-заголовков, и добавляет их к запросу на ресурс на сервере GA (__utm. gif, который представляет собой просто прозрачный пиксель размером 1x1).

Для этого типа протокола я использую аддон Firefox, LiveHTTPHeaders. Вы устанавливаете его как любой другой аддон Firefox, несколько щелчков мыши - и все. Затем откройте его и перейдите на вкладку "Генератор". В этом окне вы можете видеть фактические запросы в реальном времени. Внизу окна есть кнопка "сохранить" для сохранения журнала. Мне проще настроить LiveHTTPHeaders на регистрацию только запросов __utm.gif; для этого просто перейдите на вкладку "Edit" и создайте простой фильтр, чтобы исключить все, кроме этих конкретных gif-изображений (используя флажки справа и большое текстовое поле справа).

Другие виды тестовых протоколов требуют работы с журналами активности сервера; в этом случае просто добавьте эту строку на каждую страницу вашего сайта, чуть ниже __trackPageview():

pageTracker._setLocalRemoteServerMode();

IV. Разбор этих запросов, чтобы вы могли их прочитать

Итак, теперь ваш журнал будет содержать отдельные строки транзакций, каждая из которых является строкой, добавленной к HTTP-запросу для пикселя отслеживания GA. Эта строка - просто конкатенация пар ключ-значение, каждый ключ начинается с букв "utm" (вероятно, для "urchin tracker"). Каждый из этих параметров соответствует переменной, которую вы видите в GA Dashboard (вот полный список и их описание). Это все, что вам нужно знать для создания парсера. Более подробно:

Во-первых, вот санированный __utm.gif запрос (записи в вашем журнале LiveHTTPHeaders):

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

Это мой парсер (на 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) ) )

Результат выглядит так:

    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

Чтобы не делать это длиннее, я опустил значение cookies. Они, очевидно, требуют отдельного шага разбора, хотя он практически идентичен шагу, который я только что показал. Опять же, каждый запрос представляет собой одну транзакцию, поэтому вы можете хранить их так, как вам нужно.

17
ответ дан 5 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: