Cómo usar Stackdriver Trace con Zipkin

En este instructivo, se usa un servidor Zipkin con el fin de recibir seguimientos desde clientes de Zipkin y reenviar esos seguimientos a Stackdriver Trace para analizarlos.

El servidor Zipkin es útil para los desarrolladores de aplicaciones que ya están instrumentados con Zipkin y que no desean ejecutar sus propios backend de seguimiento, o que deseen acceder a las herramientas de análisis avanzado de Stackdriver Trace.

Ten en cuenta que es el mismo proyecto de Zipkin el que mantiene esta funcionalidad y que no cuenta con el respaldo oficial de Google.

Hay varias maneras de configurarlo:

Cómo usar una imagen de contenedor para configurar el servidor

Una imagen de contenedor del recopilador Zipkin de Stackdriver Trace se encuentra disponible en GitHub. Este repositorio contiene la definición y las capas de compilación de Docker que admite GCP en la imagen base de Docker para Zipkin, además de los pasos de configuración detallados.

Puedes ejecutarla en el host de contenedor que desees, incluido Google Kubernetes Engine.

Para ejecutar la imagen:

$ docker run -d -p 9411:9411 \
-e STORAGE_TYPE=stackdriver \
-e GOOGLE_APPLICATION_CREDENTIALS=/root/.gcp/credentials.json \
-e STACKDRIVER_PROJECT_ID=your_project \
-v $HOME/.gcp:/root/.gcp:ro \
openzipkin/zipkin-gcp

Si estás ejecutando este contenedor dentro de Google Cloud Platform (como en una instancia de Compute Engine o un clúster de Google Kubernetes Engine), se capturarán de manera automática las credenciales predeterminadas del entorno y se intentará enviar seguimientos a Stackdriver Trace.

Puedes ver el proceso de configuración completo aquí.

También debes configurar los rastreadores de Zipkin.

Cómo ejecutar el servidor fuera de Google Cloud Platform

Si deseas compilar y ejecutar el recopilador fuera de GCP, como en un servidor físico dentro de las instalaciones:

Crea o selecciona un proyecto

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

No se requiere una cuenta de facturación, ya que el recopilador no se ejecutará con recursos de Google.

Crea una cuenta de servicio

Para permitir que el servicio se autentique en la API de Stackdriver Trace, realiza los siguientes pasos:

  1. Crea una cuenta de servicio.
    1. Asegúrate de que se haya concedido una función de editor del proyecto a la cuenta de servicio nueva, de manera que pueda escribir datos en la API de Trace.
    2. Selecciona Proporcionar una clave privada nueva y elige JSON.
    3. Guarda el archivo de credenciales de JSON en un directorio de la máquina que ejecute el servicio de recopilación.

Configura el firewall

Configura los ajustes de red con el fin de permitir el tráfico de TCP en el puerto 9411 para pasar a la máquina que ejecuta el recopilador Zipkin.

Si decides enviar seguimientos desde aplicaciones alojadas fuera del firewall, ten en cuenta que el tráfico del rastreador Zipkin al recopilador no se encuentra encriptado o autenticado. Las conexiones entre el recopilador Zipkin de Stackdriver Trace y la API de Stackdriver Trace están encriptadas y autenticadas, así como lo están las conexiones que se originan en las bibliotecas de instrumentación de Stackdriver Trace.

Configura el servidor con la imagen de contenedor

Consulta Cómo usar una imagen de contenedor antes.

Configura los rastreadores Zipkin

Sigue las instrucciones de la sección común Cómo configurar los rastreadores Zipkin.

Cómo modificar un servidor Zipkin existente

El proyecto Zipkin mantiene instrucciones sobre cómo usar Stackdriver Trace como un destino de almacenamiento para un servidor Zipkin existente. Estas instrucciones se encuentran disponibles en GitHub, aquí.

Cómo configurar los rastreadores Zipkin

Sin importar cómo alojes el recopilador Zipkin de Stackdriver Trace, deberás configurar los rastreadores Zipkin para que le envíen los datos.

El recopilador se puede referenciar mediante la dirección IP interna, la dirección IP externa (en caso de que reciba seguimientos desde aplicaciones alojadas fuera de Google Cloud Platform) o el nombre de host. Cada rastreador Zipkin se configura de diferentes maneras; por ejemplo, para dirigir un rastreador Brave hacia un recopilador con la dirección IP 1.2.3.4, se deben agregar las siguientes líneas a la base de código Java:

Reporter reporter = AsyncReporter.builder(OkHttpSender.create("1.2.3.4:9411/api/v1/spans")).build();
Brave brave = Brave.Builder("example").reporter(reporter).build()

Preguntas frecuentes

P: ¿Qué limitaciones tiene?

Esta versión tiene dos limitaciones conocidas:

  1. Los rastreadores Zipkin deben admitir la semántica Zipkin correcta para tiempo y duración.

  2. Los rastreadores Zipkin y las bibliotecas de instrumentación de Stackdriver Trace no pueden agregar intervalos a los mismos seguimientos, lo que significa que los seguimientos que se capturan en una biblioteca no tendrán intervalos para los servicios instrumentados en otro tipo de biblioteca. Por ejemplo:

    El seguimiento de las solicitudes que se realicen a la aplicación web Node.js se hará con la biblioteca Zipkin y se enviarán a Stackdriver Trace. Sin embargo, estos seguimientos no tendrán intervalos generados dentro de la aplicación de la API o para las llamadas RPC que se hacen a la base de datos. Esto se debe a que Zipkin y Stackdriver Trace usan formatos diferentes para propagar contextos de seguimiento entre servicios.

    Por eso recomendamos que los proyectos que deseen usar Stackdriver Trace deben usar rastreadores compatibles con Zipkin con el recopilador Zipkin o bibliotecas de instrumentación que funcionen de manera nativa con Stackdriver Trace (como las bibliotecas oficiales de Node.js, Java o Go).

P: ¿Esta característica funciona como un servidor Zipkin completo?

No, esta característica solo escribe datos en Stackdriver Trace.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Stackdriver Trace