Observe Service Mesh through Zipkin traces

Istio has built-in support to generate Zipkin traces from Envoy proxy sidecar, and SkyWalking can serve as a Zipkin server to collect and provide query APIs for these traces, you can deploy SkyWalking to replace Zipkin server in Istio, and point the Zipkin address to SkyWalking. SkyWalking also embeds Zipkin Lens UI as part of SkyWalking UI, you can use it to query Zipkin traces.

Enable Zipkin Traces Receiver

SkyWalking has built-in Zipkin receiver, you can enable it by setting receiver-zipkin to default in application.yml, or by setting environment variable SW_RECEIVER_ZIPKIN=default before starting OAP server:

  selector: ${SW_RECEIVER_ZIPKIN:default}
    # Other configurations...

After enabling the Zipkin receiver, SkyWalking listens on port 9411 for Zipkin traces, you can just change the Zipkin server address to SkyWalking’s address with 9411 as the port.

Enable Zipkin Traces Query Module

If you want to query Zipkin traces from SkyWalking, you need to enable the Zipkin traces query module by setting query-zipkin to default in application.yml, or by setting environment variable SW_QUERY_ZIPKIN=default before starting OAP server:

  selector: ${SW_QUERY_ZIPKIN:default}
    # Other configurations

After enabling Zipkin query module, SkyWalking listens on port 9412 for Zipkin query APIs, you can also query the Zipkin traces from SkyWalking UI, menu Service Mesh --> Services --> Zipkin Trace.

Set Up Zipkin Traces in Istio

When installing Istio, you can enable Zipkin tracing and point it to SkyWalking by setting

istioctl install -y --set profile=demo \
		--set meshConfig.defaultConfig.tracing.sampling=100 \
		--set meshConfig.defaultConfig.tracing.zipkin.address=oap.istio-system.svc.cluster.local:9411 \
		--set meshConfig.enableTracing=true

so that Istio proxy (Envoy) can generate traces and sent them to SkyWalking.

For more details about Zipkin on Istio, refer to the Istio doc.