Skip to main content

Descripción general

La integración utiliza un Cloudflare Worker que se ejecuta como middleware para recopilar metadatos de las solicitudes y enviarlos a nuestra API de Agent Analytics. El Worker captura información importante de las solicitudes, como direcciones IP, user agents y referrers, sin afectar el manejo real de la solicitud.

Requisitos previos

  • Una cuenta de Cloudflare con acceso a Workers
  • Node.js instalado en tu máquina de desarrollo
  • Acceso a la configuración de Cloudflare de tu dominio
  • Un Log Ingestion Token de Profound para Agent Analytics
¿Usas el plan Cloudflare Enterprise? Consulta nuestra guía de integración con Cloudflare Logpush. Logpush siempre es preferible a un Worker: funciona fuera de banda y no puede afectar el tráfico en vivo.
Un Worker en una ruta * se sitúa en la ruta de cada solicitud a ese hostname, por lo que puede afectar el tráfico de producción. Usa el código siguiente tal cual y, en particular:
  • Nunca clones la respuesta ni leas el cuerpo de la respuesta dentro del Worker. Almacenar cuerpos en búfer puede superar el límite de memoria de 128 MB del isolate del Worker, lo que Cloudflare muestra al visitante (o crawler) como Error 1102 Worker exceeded resource limits.
  • Mantén la llamada de registro dentro de ctx.waitUntil() e ignora sus errores para que una solicitud de registro lenta o fallida nunca se convierta en un 5xx.
  • Mantén las rutas sensibles completamente fuera del Worker. La lista de rutas del código siguiente solo omite el registro; las solicitudes siguen pasando por el Worker. Para sacar por completo las rutas de checkout, carrito y administración del Worker, restringe el propio patrón de ruta (o añade una ruta de mayor prioridad que no esté vinculada al Worker).
Los síntomas de un Worker que incumple estas reglas son respuestas 5xx intermitentes en respuestas grandes o transmitidas por streaming, y consecuencias posteriores como rechazos en Google Merchant Center / Google Ads (“destination not working”, “image not accessible”) cuando AdsBot-Google encuentra uno de esos errores durante un rastreo.
¿Tienes una tienda en Shopify? No pongas un Worker delante. En su lugar, usa una de las opciones de log drain de nuestra guía de Shopify, que recopila los registros fuera de banda.
Logpush detectado

Guía de implementación

1

Configura tu entorno de desarrollo

Crea un nuevo proyecto de Worker e instala las dependencias:

Crea un nuevo proyecto de Worker

Primero, usa la CLI de Cloudflare Worker para crear un nuevo proyecto de Worker:En este ejemplo, usamos la versión 2.37.4 de la CLI de Cloudflare Worker. Puedes usar la versión más reciente, pero puede haber algunas diferencias menores en el proceso.
Después de que npm se inicie, se te pedirá que selecciones un punto de partida. Selecciona “Hello World” como categoría inicial.Cloudflare Worker paso 1 - Elegir punto de partidaSelecciona la plantilla de worker “Hello World”.Cloudflare Worker paso 1 - Seleccionar plantilla de WorkerSelecciona el lenguaje “TypeScript”.Cloudflare Worker paso 1 - Seleccionar lenguajeAhora la CLI creará un nuevo proyecto con el nombre log-collector e instalará las dependencias necesarias.Selecciona Git para el control de versiones.Cloudflare Worker paso 2 - Seleccionar control de versionesImplementa la aplicación ahora. La aplicación se implementará con un dominio de desarrollo de Cloudflare y no afectará tu entorno de producción.Cloudflare Worker paso 3 - Implementar aplicaciónLa CLI de Cloudflare te pedirá que inicies sesión y selecciones la cuenta en la que quieres implementar la aplicación. Elige la cuenta a la que está asociado tu dominio.Cloudflare debería abrir automáticamente una ventana del navegador con “Hello World”. Puedes navegar al directorio del proyecto una vez implementada la aplicación.
2

Configura tu Worker

Edita tu archivo wrangler.json para configurar la variable de entorno PROFOUND_API_URL y la vinculación de ruta:
Reemplaza el patrón example.com/* por tu dominio real. Usa la URL de tu sitio objetivo (normalmente el sitio de marketing). Por ejemplo, si tu sitio de marketing es https://www.example.com, debes usar www.example.com/* como patrón. El zone_name debe ser tu dominio canónico sin www.
Si no estás seguro de la configuración correcta, contacta con el soporte de Profound.
wrangler.json
Luego copia el código TypeScript en src/index.ts:
src/index.ts
El Worker registra dos fallos distintos. Log ingestion rejected the request: <status> <body> significa que Profound recibió la solicitud y la rechazó. Suele tratarse de un problema de autenticación o de payload, y el estado y el cuerpo indican cuál. Failed to send logs: <name>: <message> significa que la solicitud nunca se completó. TimeoutError corresponde al tiempo de espera de cinco segundos. Otros nombres apuntan a un problema de conexión o de configuración. Ambos mensajes van a los registros del Worker. Puedes leerlos en Workers & Pages > tu Worker > Logs.
bytes se deriva del encabezado de respuesta content-length en lugar del cuerpo de la respuesta. Leer el cuerpo (por ejemplo, mediante response.clone() y blob()) obliga a Cloudflare a almacenar todo el payload en búfer en el isolate del Worker, lo que falla con un 5xx en respuestas grandes o transmitidas por streaming. Este Worker nunca lee ni modifica el cuerpo de la respuesta. Transmite la respuesta del origen sin cambios, pero sigue estando en la ruta de la solicitud, por lo que los fallos de obtención del origen aparecen igual que sin él. Por tanto, bytes cuenta los encabezados más content-length, y solo cuando la respuesta realmente transmite un cuerpo (no HEAD, 204 ni 304).
3

Implementa tu Worker

Inicia sesión en Cloudflare

Usa la CLI de Wrangler para implementar el Worker:

Configura el Log Ingestion Token de Profound

Secrets es una función de Cloudflare Workers que te permite almacenar información sensible, como los Log Ingestion Tokens, en un entorno seguro.
Se te pedirá que introduzcas el Log Ingestion Token. Copia y pega el token y pulsa Enter.Configurar Log Ingestion Token

Implementa el Worker

4

Prueba tu implementación

Verifica que tu Worker funciona correctamente:Ve a Agent Analytics en Profound y comprueba que los registros aparecen en el panel Logs. El filtro de registros de IA está activado de forma predeterminada. Desactívalo con el filtro situado en la parte superior del panel Logs.Si aparecen registros, todo está listo. Deberías ver cómo se completan los datos en el panel de Analytics.

Solución de problemas

  • Si los registros no aparecen, verifica que la variable de entorno PROFOUND_API_URL y el secreto PROFOUND_LOG_INGESTION_TOKEN estén configurados correctamente
  • Log ingestion rejected the request: 401 o 403 en los registros del Worker: el secreto PROFOUND_LOG_INGESTION_TOKEN falta, está mal escrito o no es el token emitido para este sitio. Vuelve a configurarlo con npx wrangler secret put PROFOUND_LOG_INGESTION_TOKEN
  • Failed to send logs: TimeoutError: la solicitud de registro superó el tiempo de espera de cinco segundos. Es normal que haya un pequeño número de estos errores y solo te cuestan las líneas de registro afectadas, ya que el tiempo de espera mantiene la llamada de registro alejada de tus visitantes. Si la tasa es sostenida, conviene informar al soporte de Profound con algunos valores de requestId de los registros del Worker
  • Failed to send logs: con cualquier otro nombre de error: compara PROFOUND_API_URL con el valor del paso de configuración anterior. Una URL que se resuelve en un hostname de tu propia zona de Cloudflare hace que el Worker se llame a sí mismo, lo que falla en cada solicitud
  • Revisa Cloudflare Workers > Analytics en busca de errores de ejecución
  • Asegúrate de que tu patrón de ruta coincida con la configuración de tu dominio
  • Verifica que el Worker está recibiendo solicitudes revisando las métricas del panel de Cloudflare
  • 5xx intermitentes tras implementar el Worker: revisa Metrics > Errors > Invocation Statuses en busca de Exceeded Memory (Error 1102) o Script threw exception (Error 1101). Ambos significan que el propio Worker está fallando, no tu origen. Confirma que estás ejecutando el código anterior (sin clone(), sin lecturas del cuerpo) y que la llamada de registro está envuelta en ctx.waitUntil() con un .catch()
  • Rechazos en Google Ads / Merchant Center como “destination not working” o “image not accessible” tras implementar el Worker: provienen de AdsBot-Google o del fetcher de Merchant Center al recibir uno de los errores del Worker mencionados. Corrige los errores del Worker y luego solicita una nueva revisión
  • Para descartar por completo el Worker, elimina la vinculación de ruta (npx wrangler triggers delete o elimina la ruta en el panel) y confirma que los errores se detienen

Recursos adicionales

Consideraciones de seguridad

  • Almacena los Log Ingestion Tokens como secretos en entornos de producción
  • Rota los Log Ingestion Tokens con regularidad
  • Supervisa el uso y los registros del Worker para detectar patrones inusuales