> ## Documentation Index
> Fetch the complete documentation index at: https://docs.honeycomb.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Data from Service Meshes and API Gateways

> Collect tracing data from service meshes and API gateways in your production infrastructure and send it to Honeycomb without modifying application code.

The world of service meshes and API gateways opens new possibilities for collecting tracing data from your production infrastructure.

While the data from service meshes and API gateways cannot match the level of detail and granularity that can be achieved through code-level instrumentation, it can be a good first step along the observability journey.

Most, if not all, service meshes and API gateways have distributed tracing capabilities baked in, allowing telemetry data to be sent to Honeycomb with relative ease.

## Service Meshes

### Istio

[Istio](https://istio.io/) supports tracing out of the box using either the Zipkin or Jaeger format.

To send the data to Honeycomb:

1. Install the [OpenTelemetry Collector](/send-data/opentelemetry/collector/).
2. Configure the OpenTelemetry Collector to receive the Jaeger or Zipkin data and export it to Honeycomb using the OTLP format.
3. Configure the `global.tracer.zipkin.address` setting to point at the OpenTelemetry Collector, using Istio's [distributed tracing documentation](https://istio.io/latest/docs/tasks/observability/distributed-tracing/).

To properly trace all services in your system, ensure that you are forwarding tracing headers from your apps so that Istio can inject the correct tracing information as requests are made and received.
For more details, visit [the Istio docs on trace context propagation](https://istio.io/latest/docs/tasks/observability/distributed-tracing/overview/#trace-context-propagation).

Here is an example configuration to update [MeshConfig](https://istio.io/latest/docs/tasks/observability/distributed-tracing/mesh-and-proxy-config/#using-meshconfig-for-trace-settings) that may be passed in as a separate file with the install command `istioctl install --set profile=demo -y -f ./tracing.yaml`:

```yaml theme={}
# tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        zipkin:
          address: otel-collector.default:9411
        sampling: 100
---
```

### AWS App Mesh

[AWS App Mesh](https://aws.amazon.com/app-mesh) supports [tracing](https://docs.aws.amazon.com/app-mesh/latest/userguide/tracing.html) out of the box using the Jaeger format.

To send the data to Honeycomb:

1. Install the [OpenTelemetry Collector](/send-data/opentelemetry/collector/).
2. Configure the OpenTelemetry Collector to receive the Jaeger data and export it to Honeycomb using the OTLP format.
3. Configure the `tracing.address` and `tracing.port` settings to point at the OpenTelemetry Collector, using App Mesh's [Jaeger documentation](https://github.com/aws/aws-app-mesh-examples/blob/master/walkthroughs/eks/o11y-jaeger.md#option-2-existing-jaeger-deployment).

## API Gateways

### Ambassador

[Ambassador](https://www.getambassador.io/) supports [tracing](https://www.getambassador.io/docs/edge-stack/latest/topics/running/services/tracing-service/#tracing-service) out of the box using the Zipkin format.

To send the data to Honeycomb:

1. Install the [OpenTelemetry Collector](/send-data/opentelemetry/collector/).
2. Configure the OpenTelemetry Collector to receive the Zipkin data and export it to Honeycomb using the OTLP format.
3. Configure the `service` setting to point at the OpenTelemetry Collector, using Ambassador's [Zipkin documentation](https://www.getambassador.io/docs/edge-stack/latest/howtos/tracing-zipkin/).

### Kong

[Kong](https://konghq.com/) supports [tracing](https://konghq.com/learning-center/microservices/monitoring-and-distributed-tracing-for-microservices/) out of the box using the Zipkin format.

To send the data to Honeycomb:

1. Install the [OpenTelemetry Collector](/send-data/opentelemetry/collector/).
2. Configure the OpenTelemetry Collector to receive the Zipkin data and export it to Honeycomb using the OTLP format.
3. Configure the `config.http_endpoint` setting to point at the OpenTelemetry Collector, using Kong's [Zipkin documentation](https://docs.konghq.com/hub/kong-inc/zipkin/).
4. Set `config.header_type` to `w3c` for best interoperability with OpenTelemetry.
