domingo, 30 de noviembre de 2008

Generación de estadísticas web vía ficheros de log o vía etiquetas

(Aquí teniu disponible el post original escrit en català)

A finales de mayo, del presente año, estuve elaborando una propuesta para modificar el sistema de estadísticas web que internamente utiliza el Ayuntamiento de Barcelona en la creación de indicadores de la Web e Intranet municipales.

Desde siempre el Ayuntamiento ha utilizado un sistema basado en ficheros de log, ahora se está planteando la idea de pasar al sistema de etiquetas, de aquí la realización de la propuesta.

Por otra parte, comentar que el Ayuntamiento actualmente utiliza para la generación y consulta de información de estadísticas web el software WebTrends Analytics. Este aplicativo también se puede utilizar para el sistema de generación vía etiquetas, (complementándolo con el WebTrends SmartSource Data Collector, el servidor que almacena la información estadística).

Aprovechando el trabajo hecho, os copio aquí unas breves explicaciones de cómo funciona cada sistema de generación de estadísticas (vía ficheros de log o vía etiquetas) y una comparación entre ambos sistemas, (pros y contras), desde la óptica del sistema basado en etiquetas.

Soy consciente de que sobre el mundo de los indicadores web hay mucha literatura, de hecho, no estoy explicando nada nueve; pero quizás le servirá a alguien ... ni que sea como resumen.

Cómo funciona el sistema de generación de estadísticas web vía ficheros de log

La siguiente imagen detalla el funcionamiento genérico de un proceso de estadísticas basado en logs:

Los pasos que se siguen son:

1. El usuario realiza una petición web, por ejemplo pide la página home del web municipal del Ayuntamiento de Barcelona (http://www.bcn.cat/). Hay que tener en cuenta que, aunque el usuario haya pedido una sola página, esta petición usualmente se transformará en varias peticiones web. Esta transformación la realiza el propio navegador del usuario y de forma transparente a éste. En este gráfico se ha simplificado suponiendo que la petición de la página se transforma en una sola petición web.

2. El segundo paso es sencillo: la infraestructura web (servidores web, servidores de aplicaciones, gestores de contenido, etc.) del Ayuntamiento de Barcelona sirven la petición que les ha llegado. Si simplificamos el proceso, son los servidores web los que reciben las peticiones y son ellos los que las envían de vuelta a los navegadores de los usuarios. Por este motivo ellos saben si se ha podido procesar la petición y otras características de ésta, como por ejemplo el tamaño de los datos que se envían al usuario. Después de este envío, los servidores web realizan una tarea imprescindible para las estadísticas web: escribir en un dietario (llamado fichero de log) información acerca de este envío: a quién se ha enviado, en qué momento (día, hora), qué se había pedido, cómo ha acabado la petición (bien, mal, por qué motivo), etc.

3. El tercer paso es recoger esta información de los diferentes ficheros de log, (habrá uno por servidor) y pasarle todo al aplicativo de generación de estadísticas. Éste, con los datos de los logs será capaz de realizar potentes estadísticas web.

Estos son los 3 pasos que se realizan en un entorno genérico para la realización de estadísticas web mediante el análisis de los ficheros de log de los servidores web.

Cómo funciona el sistema de generación de estadísticas web vía etiquetas (tags)

La siguiente imagen detalla el funcionamiento genérico de un proceso de estadísticas basado en etiquetas, es un poco más complejo que el caso del sistema basado en ficheros de log:

Los pasos que se siguen son:

1. Este primer paso es idéntico al visto antes en el caso de la generación de estadísticas basándose en ficheros de log. El usuario realiza una petición web, por ejemplo pide la página home del web municipal del Ayuntamiento de Barcelona (http://www.bcn.cat/). Hay que tener en cuenta que, aunque el usuario haya pedido una sola página, esta petición usualmente se transformará en varias peticiones web. Esta transformación la realiza el propio navegador del usuario y de forma transparente a éste. En este gráfico se ha simplificado suponiendo que la petición de la página se transforma en una sola petición web.

2. También como en el caso del sistema basado en ficheros de logs, es en este segundo paso cuando la infraestructura web (servidores web, servidores de aplicaciones, gestores de contenido, etc.) del Ayuntamiento de Barcelona sirven la petición que les ha llegado. También registrarán los datos relacionados con la petición en un fichero de log, aunque nosotros, para la generación de estadísticas, ya no lo utilizaremos. Pero hay una importante diferencia en este segundo caso, la página que devolvemos al usuario contiene un pequeño código en JavaScript, (etiquetamos la página).

3. El navegador del usuario mostrará la página al usuario y al detectar el código JavaScript lo que hará será ejecutarlo. Esto generará una segunda petición a un determinado servidor (que no tiene por qué estar en las mismas instalaciones dónde están los servidores web). Este servidor es un servidor dedicado específicamente a la recolección de datos estadísticos, (en la imagen tiene el nombre de SmartSource Data Collector, es la terminología de WebTrends).

4. Dicho servidor de recolección de datos estadísticos procesará la petición del navegador del usuario, ésta no es más que la petición de una imagen casi invisible, (usualmente es una imagen de 1 pixel por 1 pixel). Se utiliza esta técnica para engañar a los navegadores, que piensen que es una imagen más de la página aunque su verdadero objetivo es controlar estadísticamente el uso que está haciendo el usuario en nuestro site. Por otro lado, los datos de este procesamiento de la petición de una imagen de 1 pixel por 1 pixel, quedan registrados en un fichero, tal como ocurría en el sistema de estadísticas basado en logs. Aquí la diferencia es que este fichero de registro no está fijado, es un fichero flexible, de esta forma podemos adaptarlo a nuestras necesidades.

5. El último paso es recoger la información de este fichero de registro y procesarlo mediante un aplicativo de generación de estadísticas web. El aplicativo que utiliza actualmente el Ayuntamiento para el procesado de ficheros de log – el WebTrends Analytics – también es capaz de procesar este otro tipo de información.

Tal como se ha comentado, este sistema utiliza un fichero de registro parecido a los ficheros de log pero dotado de flexibilidad para adaptarlo a nuestras necesidades.

Comparación entre los dos sistemas

Hasta ahora hemos visto cómo funcionan los dos sistemas de generación de estadísticas web, vía ficheros de log o vía etiquetas.

Cada uno tiene sus pros y sus contras. Los dos siguientes subpuntos contienen las ventajas y las desventajas, respectivamente, de utilizar etiquetas para la generación de estadísticas web. Hay que tener en cuenta que las ventajas de un sistema son las desventajas del otro, y viceversa.

Ventajas de utilizar el sistema basado en etiquetas

Conviene recordar que las ventajas del sistema basado en etiquetas se corresponden con las desventajas del sistema basado en ficheros de log.

Registro de las peticiones recibidas:

  • Sistema basado en ficheros de log:
    • Los ficheros de log registran todo el tráfico web, esto es, todas las peticiones tengan o no interés estadístico. Consecuentemente, dichos ficheros de log contienen gran cantidad de entradas despreciables a nivel estadístico, por cada página vista se tienen 'n' peticiones: la petición propia de la página más las peticiones de los elementos que la integran (imágenes, ficheros de estilos, frames...), esto dificulta en gran medida la explotación estadística.
  • Sistema basado en etiquetas:
    • Mediante el sistema de etiquetas, sólo se tiene una petición por cada página vista, que contendrá la misma información que el registro de una petición en un fichero de log, en formato extendido, más meta-información del navegador del visitante (título, resolución de pantalla, idioma, tipo de conexión, si tiene flash instalado...).
    • Por ejemplo el WebTrends SmartSource Data Collector facilita tener registros ligeros con sólo la información de las páginas con interés estadístico, y además con unos datos más ricos que ayudan a complementar la información estadística generada.

Registro de las peticiones de los spiders:

  • Sistema basado en ficheros de log:
    • Los ficheros de log registran todo el tráfico web, tanto si este tráfico está generado por usuarios como si quién lo genera es un programa de forma automática. Un caso muy común son los spiders, son programas que continuamente están leyendo todas las páginas de nuestro site para proporcionar información a los buscadores web, (por ejemplo Google, Yahoo!, MSN, etc). Se calcula que estos spiders, de media, pueden generar entre un 15% y un 20% de todas las peticiones que reciben los servidores web. Este tipo de información no sólo no nos interesa sino que además ralentiza el procesamiento del resto de datos.
  • Sistema basado en etiquetas:
    • Mediante el sistema de etiquetas, sólo se tiene la información estadística de los usuarios. Esto es así debido a que los spiders, por regla general, no ejecutan código JavaScript, consecuentemente, no realizan la petición que generará el registro de datos estadísticos.

Registro de las peticiones a páginas cacheadas:

  • Sistema basado en ficheros de log:
    • Cuando un usuario realiza una petición web, ésta usualmente no va directamente al servidor web. Lo que primero hace el navegador es consultar si la tiene en su zona de páginas en caché, si no está le pasará la petición al proxy correspondiente, éste primero mirará si lo tiene en caché, en caso negativo lo pasará al siguiente proxy que realizará la misma operación. Sólo en el caso que no esté en ninguna caché entonces llegará la petición al servidor web (y quedará registrada en el fichero de log). Por tanto, se puede llegar al caso de que una petición es servida por alguna caché sin llegar al servidor web, si así fuera dejaríamos de registrar esta petición en el fichero de log del servidor web.
  • Sistema basado en etiquetas:
    • Por regla general, el código JavaScript no es cacheable, esto implica que en todos los casos se registrará la petición al servidor de estadísticas.

Título de las páginas:

  • Sistema basado en ficheros de log:
    • El W3C fijó un estándar que rige los 10 campos que contiene un fichero de log, mediante esta información se generan las estadísticas web. Los títulos de las páginas no forma parte de los datos que se registran en un fichero de log. Por este motivo, un aplicativo generador de estadísticas basado en ficheros de log no es capaz de saber los títulos de las páginas, (a no ser que emule un navegador y realice la petición del título de las páginas al site, aunque esto genera mucho más carga a los servidores web).
  • Sistema basado en etiquetas:
    • Con este sistema no sólo tenemos la misma información que se guarda en un fichero de log sino que, además, tenemos más datos. Uno de ellos es el título.
    • En el caso concreto del WebTrends SmartSource Data Collector (SDC), al realizar una petición ésta genera una petición estadística que contiene un parámetro configurable con el título de la página, no siendo necesario hacer una petición adicional a los servidores web. Por otro lado, si todas las páginas del site tienen el mismo título o si este no es clarificador, se puede personalizar durante el registro de la visita

Identificación de las sesiones de usuario:

  • Sistema basado en ficheros de log:
    • Aunque utilizar cookies es claramente lo mejor para identificar las sesiones de los usuarios, (lo que se conoce como tracking de usuarios), usualmente no se utilizan ya que es necesario disponer de una cookie persistente y a nivel de todo el site. Esto es complejo de gestionar cuando tenemos varios servidores web y estos, además, no necesariamente están en nuestras instalaciones. Esto provoca que se realice el tracking de usuarios mediante el par dirección IP + Campo User Agent (información del navegador y del sistema operativo del usuario). Esta identificación de sesión de usuario es débil y no permite el uso del histórico de visitantes y, por consiguiente, no se puede medir la fidelidad de los visitantes.
  • Sistema basado en etiquetas:
    • Con este sistema de la gestión de la cookie se encarga el servidor de etiquetas liberando el grupo de servidores web de esta tarea. Esto implica que se pueda realizar el tracking de usuarios vía cookies con relativa facilidad.
    • El WebTrends SDC incorpora una gestión de cookie que nos permite identificar de manera unívoca las sesiones de nuestros visitantes y, consecuentemente, medir la fidelidad de éstos, por ejemplo visitantes nuevos vs visitantes que repiten.

Análisis estadístico de conceptos avanzados:

  • Sistema basado en ficheros de log:
    • Este sistema esencialmente está trabajando con URLs, no con páginas. La diferencia, aunque pueda parecer sutil, es importante. A menudo tenemos que una misma información – una página – puede tener varias URLs. Por otro lado, estas URLs también acostumbran a ser crípticas y/o tener poca información. Todo ello dificulta la definición de elementos avanzados de análisis (grupos de contenidos, gestión de escenarios, url parameter analysis...) porque se basan en patrones de URL que desgraciadamente no siempre son aplicables.
  • Sistema basado en etiquetas:
    • Con el WebTrends SDC y el uso de meta tags se traslada la definición dichos elementos a la página, de manera que, si ésta contiene los meta tags correspondientes entonces no es necesaria ninguna configuración adicional, en tiempo de análisis se auto crearán los elementos avanzados de análisis.

Utilización de un hosting externo en parte (o en su totalidad) de los servidores web:

  • Sistema basado en ficheros de log:
    • Este sistema dificulta la generación de estadísticas para aquellas secciones servidas en servidores que no residen en nuestras instalaciones corporativas. El motivo proviene de la necesidad de un procesamiento previo de los ficheros de log, (tenemes que 'precocinar' los datos), esto no permite un análisis continuo.
  • Sistema basado en etiquetas:
    • Tener servidores web en instalaciones externas es transparente respecto a la información estadística, (ya que no tenemos que hacer ‘cocinilla’ con los ficheros de log). Toda la información estadística siempre estará en el mismo servidor, por ejemplo en un WebTrends SmartSource Data Collector.

Listado de estadísticas resultantes:

  • Sistema basado en ficheros de log:
    • En este caso, el listado de estadísticas resultantes es limitado ya que todo se basa en ficheros de log que tienen, como mucho, 10 campos con información, (aunque es conveniente indicar que la principal información está contenida en estos 10 campos).
  • Sistema basado en etiquetas:
    • En cambio, en el sistema de etiquetas el listado de estadísticas es, en teoría, ilimitado debido a que el fichero de registro nos da absoluta libertad para guardar los datos que nos apetezca, (aunque usualmente sólo se guarda unos pocos datos más, a parte de los 10 que ya aparecene en los ficheros de log).
Desventajas de utilizar el sistema basado en etiquetas

El uso del sistema de generación de estadísticas web basado en etiquetas también tiene desventajas, aunque, realmente, tiene una gran desventaja y otras desventajas menores.

Esta gran desventaja es la necesidad de poner el código JavaScript en todas las páginas que queramos controlar. Esto provoca que este sistema sea idóneo en nuevos sites, y menos adecuado en sites que tienen muchas páginas ya creadas.

Modificación de las páginas:

  • Sistema basado en ficheros de log:
    • Este sistema es totalmente transparente a todos los recursos que forman un web. Por este motivo, no se requiere la modificación de las páginas ni de ningún otro elemento: imágenes, hojas de estilo, etc. Esto implica que todas las páginas tendrán sus datos estadísticos, sólo se requiere que alguien las haya realizado como mínimo una petición.
  • Sistema basado en etiquetas:
    • En cambio, en este caso hay que modificar todas las páginas que queramos que sean controladas estadísticamente. Este es el gran handicap de este sistema. Además, si nos dejamos una determinada página esta no tendrá información estadística, aunque sea la que tiene más peticiones. Se puede simplificar este problema si tenemos un gestor de contenidos en todo nuestro site, (en el caso del web municipal del Ayuntamiento de Barcelona, existe un gestor de contenidos pero sólo para una parte del web).
    • En el caso del WebTrends SDC, todas las páginas del site que queramos sacar estadísticas deben contener el código JavaScript correspondiente más los meta tags que creamos oportuno.

Infraestructura para la realización de las estadísticas:

  • Sistema basado en ficheros de log:
    • Sólo se requiere el aplicativo para la realización de estadísticas. No obstante, en casos de sites con grandes volúmenes de visitas – como el caso del web del Ayuntamiento de Barcelona – se puede requerir una infraestructura necesaria para la gestión de los ficheros de log.
  • Sistema basado en etiquetas:
    • Se requiere un servidor web dedicado sólo para la recopilación de datos estadísticos.
    • En el caso del WebTrends SDC, se requiere instalar el componente SDC en un servidor dedicado sólo para esto y que esté situado en el mismo segmento de red que los servidores web.

Registro de la información estadística:

  • Sistema basado en ficheros de log:
    • En los ficheros de log se registran siempre todas las peticiones que se reciben y, además, esto se realiza de forma transparente, sin generar más tráfico web.
  • Sistema basado en etiquetas:
    • Sólo se registran las peticiones de las páginas que tienen el código JavaScript, esto implica que previamente hay que pensar de qué páginas se quiere tener estadísticas. También hay que tener en cuenta que el navegador del usuario tiene que poder interactuar tanto con el servidor web como con el servidor de estadísticas y, además, este navegador debe tener habilitado el uso de JavaScript y de las cookies para realizar el tracking de sesiones.
    • Por otro lado, para cada petición recibida se genera otra petición para el control estadístico, se genera más ruido en forma de peticiones adicionales.

2 comentarios:

Andrés Flores dijo...

Hola Marc,

Excelente comparación de ambas tecnologías de medición.

Creo que hay una alternativa híbrida. Me parece que Webtrends lo tiene y Urchin de Google es otro que también lo ofrece. Básicamente consiste en utilizar un tag de javascript pero la información se procesa en tus servidores(solicitando la imagen de 1x1 y guardando las peticiones en tu log).

Adicionalmente puedes también procesar el log normal del servidor para tener información de crawlers y otra información técnica que no se obtiene fácilmente del log generado por el tag.

Pense en comentarte esto porque en ese caso, al menos si trabajas con URCHIN, puedes utilizar cookies en lugar del combo IP-user_agent-OS y no depende de una implementación en el servidor ya que las cookies de 1st-party son fijadas del lado del browser por javascript.

El único escenario en que esto no funciona del todo bien es si tu sitio se compone de múltiples dominios ya que en ese caso la utilización de 3rd-party cookies es mejor para consolidar pero desafortunadamente estas no pueden ser fijadas del lado cliente(browser).

MarcG dijo...

Andrés,

Primero: perdona por tardar tanto en responderte, las vacaciones...

Efectivamente WebTrends dispone de lo que tú llamas "alternativa híbrida", o sea, utilizar un tag de javascript pero procesando la información en nuestros servidores.

De hecho, es lo que inicialmente se propuso a la dirección.

Respecto a procesar el log para tener información de crawlers comentarte que esto ya lo hacemos actualmente.

Y respecto al tracking de las visitas, actualmente utilizamos la combinación IP-UserAgent-OS.

No tenemos cookies ya que nuestro site tiene múltiples dominios y, además, está servido por diferentes servidores web repartidos por diferentes CPDs (no todos pertenecen al Ayto).

Gracias por la visita!, estamos en contacto.