In-Depth Telemetry

This example demonstrates how to obtain uniform metrics, logs, traces across different services using Istio Mixer and Istio sidecar.

Overview

Deploying a microservice-based application in an Istio service mesh allows one to externally control service monitoring and tracing, request (version) routing, resiliency testing, security and policy enforcement, etc., in a consistent way across the services, for the application as a whole.

In this example, we will use the Bookinfo sample application to show how operators can obtain uniform metrics and traces from running applications involving diverse language frameworks without relying on developers to manually instrument their applications.

Before you begin

Tasks

  1. Collecting metrics This task will configure Mixer to collect a uniform set of metrics across all services in the Bookinfo application.

  2. Querying metrics This task installs the Prometheus add-on for metrics collection and demonstrates querying a configured Prometheus server for Istio metrics.

  3. Distributed tracing We will now use Istio to trace how requests are flowing across services in the application. Distributed tracing speeds up troubleshooting by allowing developers to quickly understand how different services contribute to the overall end-user perceived latency. In addition, it can be a valuable tool to diagnosis and troubleshooting in distributed applications.

  4. Using the Istio Dashboard This task installs the Grafana add-on with a preconfigured dashboard for monitoring mesh traffic.

Cleanup

When you’re finished experimenting with the Bookinfo sample, you can uninstall it by following the Bookinfo cleanup instructions corresponding to your environment.

See also

This task shows you how to query for Istio Metrics using Prometheus.

This task shows you how to configure Istio to collect metrics and logs.

This task shows you how to configure Istio to collect metrics for TCP services.

This task shows you how to configure Istio to log to a Fluentd daemon.

How to configure the proxies to send tracing requests to Zipkin or Jaeger.

Improving availability and reducing latency.