Configurar el etiquetado del lado del servidor con App Engine

En esta guía, se explica cómo hacer lo siguiente:

  • Aprovisionar un servidor de etiquetado en App Engine de Google Cloud Platform (GCP).
  • Actualizar el servidor de etiquetado para gestionar el tráfico en tiempo real.
  • Aumentar o reducir el número de servidores que ejecutan el contenedor de Google Tag Manager.
  • Mantener actualizada la versión del servidor de etiquetado después de aprovisionar el servidor.

Requisitos

  1. Necesitas una cuenta de GCP. Si no tienes una, créala.
  2. Necesitas una cuenta de facturación de GCP. Si no tienes una, créala (se necesita el rol Creador de la cuenta de facturación).
  3. Debes tener el rol Creador del proyecto y el rol Usuario de la cuenta de facturación. Consulta más información sobre cómo añadir roles.

1. Aprovisionar un servidor

Para crear un servidor de etiquetado en una instancia de App Engine, debes hacer lo siguiente:

  • Crear un contenedor de servidor en Tag Manager
  • Crear un proyecto de Google Cloud (GCP)
  • Aprovisionar un nuevo servidor de etiquetado de App Engine
  • Añadir la URL del nuevo servidor de etiquetado al contenedor de servidor de Tag Manager

Crear un contenedor de servidor de Google Tag Manager

  1. Abre Google Tag Manager.

  2. En la fila de la cuenta, haz clic en el menú adicional > Crear contenedor.

  3. Crea un contenedor del servidor.

  4. Haz clic en el botón de selección "Aprovisionar manualmente servidor de etiquetado". Anota la configuración del contenedor. Necesitarás esa información para aprovisionar tu servidor.

Crear un proyecto de GCP

Para crear un proyecto de GCP en tu servidor de etiquetado, sigue estos pasos:

  1. Abre la consola de Google Cloud.

  2. Crea un proyecto de GCP.

  3. Ponle un nombre al proyecto. Te recomendamos que utilices el ID del contenedor. Ese nombre solo se usará en GCP.

  4. Anota el ID del proyecto de GCP, ya que lo necesitarás para crear el servidor de etiquetado.

Aprovisionar un nuevo servidor de etiquetado

Para crear tu servidor de etiquetado:

  1. Abre Cloud Shell.

  2. Configura el proyecto de GCP en Cloud Shell. Sustituye project ID por el ID del proyecto de GCP que anotaste anteriormente:

    gcloud config set project project ID
    
  3. Crea el servidor de etiquetado siguiendo el script de shell. Asigna el valor testing al tipo de despliegue.

    bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
    

Añadir la URL del servidor de etiquetado a Tag Manager

  1. Abre Google Tag Manager.

  2. En Administrar > Configuración del contenedor, haz clic en Añadir URL. Si no sabes cuál es la URL de tu servidor, ejecuta el siguiente comando en Cloud Shell:

    gcloud app browse
    

    Resultado: has aprovisionado un servidor de etiquetado con una configuración de testing. Ahora puedes probar el etiquetado del lado del servidor.

Configuración inicial del servidor (testing)

La configuración de pruebas es adecuada para explorar el producto enviando pequeñas cantidades de tráfico de prueba y usando la función de vista previa en Tag Manager. Esta configuración es una clase de instancia F1 de App Engine en el entorno estándar y, en la mayoría de los casos, no se te cobrará nada.

2. Usar App Engine en la fase de producción

En la configuración de production, cada servidor cuesta aproximadamente 40 USD al mes. Cada servidor es una instancia de App Engine con 1 vCPU, 0,5 GB de memoria y disco de 10 GB en el entorno flexible.

Consulta cómo gestionar los costes de App Engine para saber cómo funciona la facturación de esta plataforma y cómo configurar alertas de facturación. Te recomendamos encarecidamente que configures una alerta de facturación.

Te recomendamos que utilices al menos tres servidores para reducir el riesgo de pérdida de datos en caso de que se produzca una interrupción en el funcionamiento de alguno de ellos. No obstante, puedes usar menos servidores (o más). Se estima que, al autoescalar entre tres y seis servidores (que es el número predeterminado), se puedan gestionar entre 50 y 200 solicitudes por segundo. El rendimiento depende del número de etiquetas y de lo que esas etiquetas hagan.

Para configurar el servidor de etiquetado, sigue estos pasos:

  1. Abre Cloud Shell de Google Cloud Platform.
  2. Selecciona el proyecto de Cloud Platform en Cloud Shell. Sustituye project ID por el ID del proyecto de GCP que anotaste anteriormente:
    gcloud config set project project ID
  3. Para volver a configurar el servidor de etiquetado en un entorno de producción, ejecuta la secuencia de comandos de configuración que se indica abajo. Realiza las siguientes tareas:
    bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
    1. Cambia el tipo de despliegue a production.
    2. Configura más servidores para servir tráfico de producción. Te recomendamos que tengas un mínimo de tres servidores.

Opcional: Inhabilitar el registro de solicitudes

Registro de solicitudes

De forma predeterminada, App Engine registra información sobre cada una de las solicitudes que recibe (por ejemplo, la ruta de la solicitud o los parámetros de consulta). Si el servidor de etiquetado gestiona un gran número de solicitudes al mes (por ejemplo, más de un millón), puede que los mensajes de registro generen cargos elevados. Para reducir o evitar esos cargos, te recomendamos que inhabilites el registro de solicitudes de App Engine.

Para inhabilitar el registro de solicitudes de App Engine:

  1. En Google Cloud Platform, abre el Enrutador de registros. Asegúrate de que estás en el proyecto correspondiente al ID de tu contenedor:
    Captura de pantalla del selector de proyectos de GCP, donde se ve un ID de contenedor de Tag Manager de muestra.
  2. En la línea Tipo: Segmento de Cloud Logging con Nombre: _Default, selecciona el menú adicional y haz clic en Editar sumidero.
  3. En Destino del sumidero, selecciona el contenedor de registros _Default.
  4. En Seleccionar los registros que se incluirán en el sumidero, añade una línea. Introduce la siguiente regla en el filtro de inclusión:

    NOT LOG_ID("appengine.googleapis.com/nginx.request") AND NOT
    LOG_ID("appengine.googleapis.com/request_log")
    
  5. Para inhabilitar también el almacenamiento de registros del balanceador de carga, añade una línea e introduce la siguiente regla en el filtro de inclusión:

    NOT LOG_ID("requests")
    
  6. Haz clic en Actualizar sumidero para aplicar los cambios. A partir de ese momento, las solicitudes de App Engine dejarán de registrarse.

  7. Comprueba que no aparezcan más solicitudes en Explorador de registros.

Registro de mensajes en la consola

El servidor de etiquetado, los clientes o las etiquetas del contenedor pueden registrar mensajes en la consola, lo que puede conllevar gastos. Para reducir o evitar esos cargos, te recomendamos que inhabilites el registro de mensajes que no te interesen en la consola.

Para identificar los registros de los mensajes que no te interesen en la consola:

  1. En GCP, abre Explorador de registros.
  2. Busca los mensajes de registro que tus etiquetas han creado. Por ejemplo:

    Una etiqueta puede enviar los siguientes registros:

    const logToConsole = require('logToConsole');
    
    logToConsole('Custom message: ' + data.param1);
    logToConsole('An important message to keep around!');
    data.gtmOnSuccess()
    

    Busca los mensajes de registro correspondientes en el campo textPayload:
    Captura de pantalla de Explorador de registros en GCP, con registros de muestra.

Para inhabilitar el registro de mensajes en la consola:

  1. En Google Cloud Platform, abre el Enrutador de registros. Asegúrate de que estás en el proyecto correspondiente al ID de tu contenedor:
    Captura de pantalla del selector de proyectos de GCP, donde se ve un ID de contenedor de Tag Manager de muestra.
  2. En la línea Tipo: Segmento de Cloud Logging con Nombre: _Default, selecciona el menú adicional y haz clic en Editar sumidero.
  3. En Destino del sumidero, selecciona el contenedor de registros _Default.
  4. En Seleccionar los registros que se incluirán en el sumidero, añade una línea. Introduce la siguiente regla en el filtro de inclusión:

    NOT textPayload:"Custom message:"
    

    Sustituye el texto Custom message: por una cadena secundaria del registro de la consola que quieres inhabilitar. Si quieres usar filtros más complejos, utiliza el lenguaje de consultas de registro.

  5. Haz clic en Actualizar sumidero para aplicar los cambios. El mensaje logToConsole coincidente debería dejar de registrarse a partir de ese momento.

  6. Comprueba que no aparezcan más mensajes de registro en Explorador de registros.

3. Asociar el despliegue al dominio personalizado

La implementación predeterminada de etiquetado del lado del servidor se aloja en un dominio de App Engine. Te recomendamos que modifiques la implementación para utilizar un subdominio de tu sitio web.

Asigna el subdominio de tu sitio web al servidor de etiquetado.

4. Añadir la URL del servidor a Google Tag Manager

Ahora que tienes un servidor, debes asegurarte de que Google Tag Manager sabe que debe usarlo.

  1. Abre Google Tag Manager.

  2. Haz clic en el contenedor del servidor que quieres dirigir al servidor de etiquetado.

  3. Abre la configuración de tu contenedor del servidor en la pestaña Administrar > Configuración del contenedor.

  4. Haz clic en Añadir URL y pega la URL de tu servidor.

  5. Haz clic en Guardar y vuelve a tu espacio de trabajo.

5. Validación

Ahora que has configurado el servidor de etiquetado, asegúrate de que funciona correctamente. En tu espacio de trabajo de Tag Manager, haz clic en el botón Vista previa. Si se carga la página de vista previa, significa que todo está configurado correctamente.

Previsualizar varias URLs

Si has asignado varios dominios a un único servidor de etiquetado, asegúrate de que cada URL se haya añadido a la configuración del contenedor.

Si has proporcionado varias URLs, todas las rutas (la cadena que hay después del nombre de dominio) deben coincidir.

Funciona No funciona
URL 1: example.com/abc
URL 2: example2.com/abc
URL 1: example.com/abc
URL 2: example2.com/def

Si se añaden varias URLs, junto al botón Previsualizar verás un icono que te permite seleccionar la URL para previsualizarla.

Actualizar la versión del servidor de etiquetado

Las nuevas actualizaciones del servidor de etiquetado incluyen correcciones de vulnerabilidades de seguridad y nuevas funciones. Te recomendamos que, al menos, actualices tu servidor de etiquetado en cada lanzamiento de versión principal (por ejemplo, de la versión 1.xx a la 2.xx) cuando Tag Manager te indique que debes actualizarlo.

Para actualizar el servidor de etiquetado, vuelve a ejecutar la secuencia de comandos de configuración con los mismos ajustes que hayas usado anteriormente. De forma predeterminada, se utiliza la configuración que ya existe.

Para actualizar el servidor de etiquetado, sigue estos pasos:

  1. Abre Cloud Shell de Google Cloud Platform.
  2. Selecciona el proyecto de Cloud Platform en Cloud Shell. Sustituye project ID por el ID del proyecto de GCP que anotaste anteriormente:
    gcloud config set project project ID
  3. Ejecuta la secuencia de comandos de configuración con los mismos ajustes que hayas usado anteriormente. De forma predeterminada, se utiliza la configuración que ya existe.
    bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"

Para verificar que la actualización se haya realizado correctamente:

  1. En el contenedor de servidor, haz clic en el botón Vista previa para empezar una nueva sesión de depuración y envía una solicitud de depuración en otra pestaña.
  2. En Resumen, selecciona la pestaña Consola y comprueba que no haya ningún mensaje que indique que debes actualizar el servidor de etiquetado.

En Tag Manager, puede que sigan apareciendo mensajes en los que se te pide que actualices el servidor de etiquetado hasta un día después de que lo hayas actualizado. Sin embargo, en la página de vista previa se mostrará un mensaje actualizado sobre la versión del servidor de etiquetado.

Solucionar problemas con tiempos de espera que se agotan en despliegues de producción

Al ejecutar la secuencia de comandos de configuración para crear o volver a configurar el servidor de etiquetado, es posible que se agote el tiempo de espera de la secuencia de comandos. Esto puede ocurrir por varios motivos. Los dos más habituales son los siguientes:

  1. Las cuentas de servicio tienen permisos incorrectos: las cuentas de servicio de Compute Engine y App Engine son responsables de implementar y mantener el despliegue de producción. De forma predeterminada, están preconfiguradas con los permisos adecuados. Sin embargo, en algunos casos puede que no tengan los permisos correctos debido a la política de la organización.

    1. En la barra de navegación izquierda de la consola de Google Cloud, ve a la página IAM y administración.
    2. Busca la cuenta de servicio de Compute Engine <project_number>-compute@developer.gserviceaccount.com y la cuenta de servicio de App Engine <project_name>@appspot.gserviceaccount.com.
    3. Ambas cuentas deben tener el rol Editor. Si alguna de ellas no tiene el rol Editor, actualiza el rol haciendo clic primero en el icono del lápiz situado a la derecha de la cuenta en cuestión y, después, en el menú desplegable del rol. A continuación, desplázate hasta la parte superior, selecciona Proyecto y, a continuación, Editor.
  2. La cuota es insuficiente: el despliegue de producción consume la cuota de Compute Engine. Si el proyecto no tiene suficiente cuota, es posible que se agote el tiempo de espera del despliegue mientras intenta aprovisionar recursos.

    1. En la barra de navegación izquierda de la consola de Google Cloud, ve a la página IAM y administración y, en la barra de navegación izquierda de esa página, haz clic en la pestaña Cuotas.
    2. En la parte superior de la página, haz clic en el cuadro de texto en el que se indica Filtrar tabla y escribe Compute Engine API. Haz clic en el único resultado.
    3. Comprueba que todos los estados de cuota estén dentro del límite o tengan una marca de verificación verde.
    4. Busca y haz clic en CPUs. Comprueba que el uso actual más el número de instancias que se van a desplegar sigue por debajo del límite de la región de despliegue.