Tracing

Open Service Mesh (OSM) allows optional deployment of Jaeger for tracing. Similarly, tracing can be enabled and customized during installation (tracing section in values.yaml) or at runtime by editing the osm-config ConfigMap. Tracing can be enabled, disabled and configured at any time to support BYO scenarios.

Jaeger

Jaeger is an open source tracing system used for monitoring and troubleshooting distributed systems. It can be deployed with OSM as a new instance or you may bring your own instance.

Automatic bring up

By default, Jaeger deployment and tracing as a whole is disabled.

Jaeger can be automatically deployed by using the --deploy-jaeger OSM CLI flag at install time or by toggling the deployJaeger value in values.yaml.

BYO (Bring-your-own)

The following section documents the additional steps needed to allow an already running instance of Jaeger to integrate with your OSM control plane.

NOTE: This guide outlines steps specifically for Jaeger but you may use your own tracing application instance with applicable values

Prerequisites

  • A running Jaeger instance

The sections below outline how to make required updates depending on whether you already have a running instance of OSM or are installing OSM for the first time. In either case, the following tracing values in values.yaml are being updated to point to your Jaeger instance:

  1. enable: set to true to tell the Envoy connection manager to send tracing data to a specific address (cluster)
  2. address: set to the destination cluster of your Jaeger instance
  3. port: set to the destination port for the listener that you intend to use
  4. endpoint: set to the destination’s API or collector endpoint where the spans will be sent to

Deploying Jaeger to a running instance of the OSM control plane

If you already have OSM running, tracing values must be updated in the OSM ConfigMap using:

# Replace osm-system with osm-controller's namespace if using a non default namespace
kubectl patch ConfigMap osm-config -n osm-system -p '{"data":{"tracing_enable":"true", "tracing_address":"<tracing server hostname>", "tracing_port":"<tracing server port>", "tracing_endpoint":" <tracing server endpoint>"}}' --type=merge

Note: To make this change persistent between upgrades, see osm mesh upgrade –help.

You can verify these changes have been deployed by inspecting osm-config:

kubectl get configmap osm-config -n osm-system -o yaml

Deploying Jaeger during OSM deployment

To deploy your own instance of Jaeger during OSM installation, you can use the --set flag as shown below to update the values:

osm install --set OpenServiceMesh.tracing.enable=true,OpenServiceMesh.tracing.address=<tracing server hostname>,OpenServiceMesh.tracing.port=<tracing server port>,OpenServiceMesh.tracing.endpoint=<tracing server endpoint>