Understand Application Tracing Components in Verrazzano

Learn how application tracing components work in Verrazzano

Verrazzano provides Jaeger, a distributed tracing system used for monitoring and troubleshooting microservices.

About distributed tracing

Distributed tracing is a method for tracking application behavior as it propagates through distributed systems. You can track application requests as they flow from front end devices to back end services and databases.

Distributed tracing is useful for tracking and observability, in general, however, it can also help you identify the exact line of occurrence of a error in a complex architecture. You can use distributed tracing to troubleshoot requests that exhibit high latency or errors.

With distributed tracing, the application transactions are captured using request and response headers. A trace header gets added from the original request to subsequent requests and thus creating a link through out the entire transaction that can be traced back to the origin. A single trace typically shows the activity for an individual transaction or request within the application being monitored, from the browser or mobile device, down through to the database and back.

In distributed tracing, a single trace contains a series of tagged time intervals called spans. A span can be thought of as a single unit of work. Spans have a start and end time, and optionally may include other metadata, like tags or events. Spans have relationships between one another, including parent-child relationships, which are used to show the specific path a particular transaction takes through the numerous services or components that make up the application.

  • A trace represents an end-to-end request; it’s made up of a single or multiple spans.
  • A span represents work done by a single-service with time intervals and associated metadata, such as tags and events:
    • Tags let you query your traces to filter the results and help with your collaboration and debugging efforts.
    • Events will show up as logs associated with the span that added the event.

About Jaeger tracing

As with most other distributed tracing systems, Jaeger works with spans and traces, as defined in the OpenTracing specification.

In Verrazzano, Jaeger is comprised of the following components:

  • Collector service, which receives traces from clients, processes them, and stores them in a storage back end.
  • Query service, which exposes the APIs for retrieving traces from storage and hosts the Jaeger console for searching and analyzing traces.
  • Storage, which may be ephemeral (in-memory) or backed by OpenSearch.

Jaeger is very configurable. See the Jaeger documentation for detailed information about Jaeger features and architecture. In Verrazzano, Jaeger does not include the Ingester service or Kafka automatically, but can be customized to implement them. Spark jobs are not supported.

Next steps