Chapter 6. Observability

One of the greatest challenges with the management of a microservices architecture is simply trying to understand the relationships between individual components of the overall system. A single end-user transaction might flow through several, perhaps a dozen or more, independently deployed microservices running in their independent pods, and discovering where performance bottlenecks or errors have occurred provides valuable information.

In this chapter, we will touch on tracing via Jaeger, metrics via Grafana and Prometheus, plus service graphing via Kiali.

Istio’s Mixer capability is implemented as two different pods and services within the istio-system namespace. The following queries make them easier to spot as they have a common label:

oc get pods -l istio=mixer -n istio-system
oc get services -l istio=mixer -n istio-system

istio-policy and istio-telemetry are the services that make up Istio’s Mixer functionality.

Tracing

Often the first thing to understand about your microservices architecture is specifically which microservices are involved in an end-user transaction. If many teams are deploying their dozens of microservices, all independently of one another, it is often difficult to understand the dependencies across that “mesh” of services. Istio’s Mixer comes “out of the box” with the ability to pull tracing spans from your distributed microservices. This means that tracing is programming-language agnostic so that you can use this capability ...

Get Introducing Istio Service Mesh for Microservices, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.