WORDPRESS

Primeros pasos con Grafana Tempo

Aprendamos los conceptos básicos del backend de rastreo distribuido Grafana Tempo.

El rastreo distribuido es un método para obtener información detallada sobre el rendimiento del sistema. Esta es una forma de visualizar el ciclo de vida de una solicitud a través de una aplicación. Una aplicación puede constar de varios servicios en un solo nodo o puede distribuirse entre nodos.

Por lo tanto, al utilizar el rastreo distribuido, puede obtener una vista unificada de todos los servicios. Grafana Tempo es justamente eso.

¿Qué es Grafana Ritmo?

En la ObservabilityCon de este año, Grafana Labs realizó algunas actualizaciones importantes, y Grafana Tempo fue una de ellas. Grafana Labs ha añadido otro proyecto «Grafana Tempo» a su cartera de código abierto.

Ritmo Grafana es un backend de rastreo distribuido de código abierto que es altamente escalable y fácil de usar. Tempo es totalmente compatible con otros protocolos de rastreo como Zipkin, Jaeger, OpenTelemetry y OpenCensus. Actualmente es compatible con el motor de descubrimiento de datos Tempo en Loki, plataformas de monitoreo como Prometheus y Grafana. Grafana 7.3+ proporciona una experiencia perfecta entre Grafana y Tempo.

¿Por qué usar el ritmo?

Tempo se utiliza para correlacionar métricas, seguimientos y registros. En algunos casos, los usuarios encontraron el mismo tipo de error varias veces. Si quiero entender lo que está pasando, necesito ver los rastros exactos. Pero parte de la información valiosa que podría estar buscando se pierde debido a la reducción de resolución. Con Tempo, ahora no necesitamos reducir la muestra de los datos de rastreo distribuidos. Podemos almacenar trazas completas en almacenamiento de objetos como S3 o GCS, lo que hace que Tempo sea muy rentable.

Además, Tempo le permite depurar/solucionar problemas más rápido al permitirle pasar rápidamente de métricas a seguimientos relevantes de registros específicos donde se registra algún problema.

Artículo Recomendado:  Cómo hacer una auditoría SEO exhaustiva de su sitio web

Las siguientes son las opciones de configuración utilizadas en Tempo.

  • distribuidor: Estos se utilizan para configurar las opciones de recepción para recibir tramos y luego enviarlos a la ingesta.
  • ingerir: se utilizan para crear seguimientos por lotes y enviarlos a TempoDB para su almacenamiento.
  • compactador: Transmite bloques desde almacenamiento como S3 o GCS, los combina y los vuelve a escribir en el almacenamiento.
  • almacenamiento: Esto se usa para configurar TempoDB. Debe mencionar el nombre del backend de almacenamiento (S3 o GCS) con un parámetro adicional en esta configuración.
  • Lista de miembros: Se utiliza para la coordinación entre los componentes de Tempo.
  • autenticación/servidor: Tempo usa el servidor Weaveworks/Common. Se utiliza para establecer la configuración del servidor.

Arquitectura rítmica

La figura anterior muestra la arquitectura de trabajo de Grafana Tempo.

Primero, el distribuidor recibe intervalos en diferentes formatos de Zipkin, Jaeger, OpenTelemetry, OpenCensus y envía estos intervalos al ingerido mediante el hash del ID de seguimiento. Luego, Ingester crea un lote de rastros llamados bloques.

Luego envía estos bloques al almacenamiento de back-end (S3/GCS). Cuando tenga una identificación de seguimiento para solucionar problemas, usará la interfaz de usuario de Grafana y colocará la identificación de seguimiento en la barra de búsqueda. El queryer ahora es responsable de obtener detalles sobre el ID de seguimiento que ingresó desde el ingestor o el almacén de objetos.

Primero, verifica si el ID de seguimiento existe en la ingesta; si no, verifica el backend de almacenamiento. Expone los rastros utilizando un punto final HTTP simple. Al mismo tiempo, el compresor toma bloques del almacenamiento, los combina y los envía nuevamente al almacenamiento para reducir la cantidad de bloques almacenados.

Estableciendo la cadencia con Docker

En esta sección, configuraré Grafana Tempo paso a paso usando Docker. Primero, necesita un backend de Tempo, así que configure una red acoplable.

[[email protected] ~]$ docker network create docker-tempo

Perfil de velocidad de descarga.

[[email protected] ~]$ curl -o tempo.yaml https://raw.githubusercontent.com/grafana/tempo/master/example/docker-compose/etc/tempo-local.yaml

Aquí hay una lista de las opciones de acuerdo que obtiene:

protocolo Puerto
telemetría abierta 55680
Jaeger – compacto frugal 6831
Jaeger – Binario económico 6832
Jaeger – HTTP económico 14268
Jaeger-LeCoultre – GRPC 14250
Zikin 9411

Con el archivo de configuración de tempo, ejecute el contenedor docker.yo elijo aqui Jaeger-LeCoultre – Enviar trazas en formato Thrift Compact (puerto 6831).

[[email protected] ~]$ docker run -d --rm -p 6831:6831/udp --name tempo -v $(pwd)/tempo-local.yaml:/etc/tempo-local.yaml --network docker-tempo grafana/tempo:latest -config.file=/etc/tempo-local.yaml

Ahora necesita ejecutar un contenedor de consulta Tempo. Primero, descargue el perfil de consulta de velocidad.

[[email protected] ~]$ curl -o tempo-query.yaml https://raw.githubusercontent.com/grafana/tempo/master/example/docker-compose/etc/tempo-query.yaml

Use tempo para consultar el archivo de configuración y ejecutar el contenedor docker.

[[email protected] ~]$ docker run -d --rm -p 16686:16686 -v $(pwd)/tempo-query.yaml:/etc/tempo-query.yaml --network docker-tempo grafana/tempo-query:latest --grpc-storage-plugin.configuration-file=/etc/tempo-query.yaml

Ahora se puede acceder a la interfaz de usuario de Jaeger en http://localhost:16686Como sigue.

interfaz de usuario jaeger - geekflare

En la barra de búsqueda, puede agregar el ID de seguimiento del registro que desea solucionar y generará el seguimiento por usted.

traceid - nuevo

Ejecutando la aplicación de demostración en Tempo

Es hora de ejecutar el ejemplo de demostración proporcionado por Grafana Tempo. Voy a ejecutar un ejemplo de docker-compose, por lo que si intenta lo mismo, debe tener instalado docker-compose en su máquina.

Descarga el archivo zip de Grafana Tempo: https://github.com/grafana/tempo

Extráigalo a la carpeta de inicio y vaya al directorio docker-compose. Encontrará varios ejemplos de docker-compose; estoy usando un ejemplo donde los datos de la aplicación se almacenan localmente.

[[email protected] ~]$ cd tempo-master/example/docker-compose/
[[email protected] docker-compose]$ ls
docker-compose.loki.yaml docker-compose.s3.minio.yaml docker-compose.yaml etc
example-data readme.md tempo-link.png

Ejecute el siguiente comando para iniciar la pila.

[[email protected] docker-compose]$ docker-compose up -d
Starting docker-compose_prometheus_1 ... done
Starting docker-compose_tempo_1 ... done
Starting docker-compose_grafana_1 ... done
Starting docker-compose_tempo-query_1 ... done
Starting docker-compose_synthetic-load-generator_1 ... done

Como podéis ver, ha lanzado contenedores para Grafana, Loki, Tempo, Tempo-query y Prometheus.

[[email protected] docker-compose]$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS         PORTS                                                                                                      NAMES
84cd557ce07b   grafana/tempo-query:latest                 "/go/bin/query-linux…"   10 minutes ago   Up 4 seconds   0.0.0.0:16686->16686/tcp                                                                                   docker-compose_tempo-query_1
f7cd9cf460d9   omnition/synthetic-load-generator:1.0.25   "./start.sh"             10 minutes ago   Up 4 seconds                                                                                                              docker-compose_synthetic-load-generator_1
6d9d9fbdb8f1   grafana/grafana:7.3.0-beta1                "/run.sh"                10 minutes ago   Up 6 seconds   0.0.0.0:3000->3000/tcp                                                                                     docker-compose_grafana_1
d8574ea25028   grafana/tempo:latest                       "/tempo -config.file…"   10 minutes ago   Up 6 seconds   0.0.0.0:49173->3100/tcp, 0.0.0.0:49172->14268/tcp                                                          docker-compose_tempo_1
5f9e53b5a09c   prom/prometheus:latest                     "/bin/prometheus --c…"   10 minutes ago   Up 6 seconds   0.0.0.0:9090->9090/tcp                                                                                     docker-compose_prometheus_1

También puede ir a su navegador y verificar que Grafana, Jaeger UI, Prometheus se estén ejecutando.

Grafana

Prometeo

Ahora, el generador de carga sintética que se ejecuta dentro del contenedor genera la identificación de seguimiento y la coloca en la cadencia. Ejecute el siguiente comando para ver el registro.

[[email protected] docker-compose]$ docker-compose logs -f synthetic-load-generator
Attaching to docker-compose_synthetic-load-generator_1
synthetic-load-generator_1 
| using params: 
--jaegerCollectorUrl http://tempo:14268
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /product, 2880 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /cart, 14400 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /checkout, 480 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:37 INFO ScheduledTraceGenerator: Emitted traceId 17867942c5e161f2 for service frontend route /currency
synthetic-load-generator_1 
| 21/04/17 14:24:37 INFO ScheduledTraceGenerator: Emitted traceId 3d9cc23c8129439f for service frontend route /shipping
synthetic-load-generator_1 

Estos son los ID de seguimiento que debe pasar para generar el seguimiento.

nuevo rastro

Estoy copiando uno de los ID de seguimiento y colocándolo en la barra de búsqueda de la interfaz de usuario de Jaeger.

ID de rastreo

Puede ver que ha generado con éxito el seguimiento asociado con la identificación de seguimiento que proporcioné.

en conclusión

Eso es todo lo que hay en Grafana Tempo. Continúe y comience a generar seguimientos con Tempo para obtener más información sobre métricas y problemas en sus registros.

Todo se captura en Tempo y no te pierdes ningún detalle debido a la reducción de resolución que ocurrió antes. Tempo ofrece a los desarrolladores o equipos de producción información directa sobre la causa raíz de posibles errores o advertencias en los registros.

Artículo Recomendado:  Cree su próxima aplicación con estas plataformas de código abierto de código bajo/sin código

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *