SigNoz Cloud - This page is relevant for SigNoz Cloud editions.
Self-Host - This page is relevant for self-hosted SigNoz editions.

OpenTelemetry Kong Gateway Integration

Kong Gateway provides a native OpenTelemetry plugin to capture proxy latencies, upstream traces, traffic metrics, and access logs. By configuring this plugin, you send your telemetry data directly to SigNoz.

Prerequisites

  • For OpenTelemetry Traces: Kong Gateway version 3.0+ (Enterprise or OSS).
  • For OpenTelemetry Logs: Kong Gateway version 3.8+ (Enterprise or OSS).
  • For OpenTelemetry Metrics: Kong Gateway Enterprise version 3.13+. (The latest open-source community edition release is 3.9.x, which predates native OpenTelemetry metrics support).
  • An instance of SigNoz (Cloud or Self-Hosted).

Configure OpenTelemetry Export

Configure the opentelemetry plugin either via declarative config (decK) or via the Kong Ingress Controller in Kubernetes.

kong-state.yaml
_format_version: "3.0"
_transform: true

plugins:
  - name: opentelemetry
    config:
      traces_endpoint: "https://ingest.<region>.signoz.cloud:443/v1/traces"
      logs_endpoint: "https://ingest.<region>.signoz.cloud:443/v1/logs"
      metrics:
        endpoint: "https://ingest.<region>.signoz.cloud:443/v1/metrics"
        push_interval: 10
        enable_bandwidth_metrics: true
        enable_latency_metrics: true
        enable_request_metrics: true
        enable_upstream_health_metrics: true
      headers:
        signoz-ingestion-key: "<your-ingestion-key>"
      resource_attributes:
        service.name: "<service_name>"
      queue:
        max_batch_size: 200
        max_coalescing_delay: 3

Verify these values:

  • <region>: Your SigNoz Cloud region
  • <your-ingestion-key>: Your SigNoz ingestion key
  • <service_name>: The name of your service

Sync your state via Kong's Admin API:

deck gateway sync kong-state.yaml --kong-addr <YOUR-KONG-ADMIN-URL>

To collect only specific signal types, remove the endpoints you don't need:

  • Traces only: remove logs_endpoint and the metrics block
  • Logs only: remove traces_endpoint and the metrics block
  • Metrics only: remove traces_endpoint and logs_endpoint

Available Telemetry

Kong instruments each proxied request as an OTel span with child spans for each phase:

  • Proxy latency: time Kong spends routing the request before forwarding it upstream
  • Plugin execution: time spent inside each enabled plugin (e.g. auth, rate-limiting)
  • DNS resolution: upstream hostname lookup time
  • Upstream latency: time waiting for the upstream service to respond

Each span carries standard HTTP attributes: http.method, http.url, http.host, http.scheme, http.flavor, and net.peer.ip.

Kong supports W3C TraceContext, B3/B3-single (Zipkin), Jaeger, OpenTracing, Datadog, AWS X-Ray, and GCP propagation formats. Existing distributed traces from upstream or downstream services pass through without extra configuration.

Validate

Verify your data appears in SigNoz:

  1. Open Services to confirm <service_name> appears in the list.
  2. Head to Traces to browse distributed traces for your Kong routes.
  3. Open Metrics Explorer and query kong.latency.total or kong.nginx.connection.count.
  4. Head to Logs and filter by service.name = <service_name> to read access logs.
Kong Gateway - Sample Traces
Kong Gateway - Sample Traces
Kong Gateway - Services Page
Kong Gateway - Services Page

Troubleshooting

Metrics do not appear in SigNoz

Verify your Kong Gateway version and edition. Kong Open-Source (CE) presently terminates at version 3.9 and lacks the config.metrics object. Using the metrics configuration against Kong 3.12 or older produces a schema validation error.

Schema Validation Error on "metrics"

Ensure you pass metrics as an object containing endpoint, rather than a flat string. Earlier plugin schema versions rejected the metrics map entirely. See Kong OpenTelemetry plugin schema.

Setup OpenTelemetry Collector (Optional)

Avoid hardcoding the SigNoz cloud endpoints in your Kong instance by configuring Kong to point to a local OpenTelemetry Collector instead.

  1. Ensure your OpenTelemetry Collector instance exposes the otlp HTTP receiver on port 4318.
  2. Update the Kong Plugin configuration to point to your collector:
    • traces_endpoint: http://<your-collector-ip>:4318/v1/traces
    • logs_endpoint: http://<your-collector-ip>:4318/v1/logs
    • endpoint: http://<your-collector-ip>:4318/v1/metrics
  3. Remove the signoz-ingestion-key header from the Kong configuration, and let your Collector append the authentication header to SigNoz.

Read the Collector configuration guide for implementation details.

Next Steps

Get Help

If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack.

If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.

Last updated: April 26, 2026

Edit on GitHub

Was this page helpful?

Your response helps us improve this page.