Introduction
Metrics provide aggregated, quantitative data about the performance and behavior of your APIs over time. They offer insights into the overall health of the system. Tyk supports several ways to export metrics, from different components:OpenTelemetry Metrics
Availability
Tyk Gateway Metrics
Tyk Gateway natively exports metrics via the OpenTelemetry Protocol (OTLP). When enabled, it pushes standard RED metrics (Rate, Errors, Duration) plus Go runtime and configuration state metrics to any OTLP-compatible backend. For a complete reference, see:- Default Metrics: all metrics exported automatically (RED, Go runtime, configuration state)
- Custom Metrics: defining custom counters and histograms with your own dimensions
Control Plane Metrics
Tyk Dashboard, Tyk MDCB, and Tyk Developer Portal export metrics through the same OTLP pipeline:
For every metric, see Default Metrics.
Supported Backends
The metrics exporter sends data using standard OTLP, so any OTLP-compatible backend works. Some common setups: Via OTel Collector (recommended for self-managed): Route metrics from the OTel Collector to Prometheus, Grafana Mimir, Splunk, or other backends. The Collector also handles batching, retries, and fanout to multiple destinations. Direct OTLP: Send directly to backends that natively accept OTLP, such as:- New Relic (
otlp.nr-data.net:4317) - Dynatrace (via the Dynatrace OTLP endpoint)
- Grafana Cloud Mimir
Configuration Options
Metrics can be enabled independently; distributed tracing does not need to be configured. To configure distributed tracing alongside metrics, see Distributed Tracing.Enable Metrics
If you only need metrics export, configure themetrics sub-object directly:
opentelemetry.metrics block, in tyk_analytics.conf and tyk_sink.conf respectively. For a worked example of both, see Get Started with Tyk Observability.
Tyk Developer Portal uses a separate OpenTelemetry.Metrics configuration section instead of the opentelemetry.metrics block. Set it with the PORTAL_OPENTELEMETRY_METRICS_* or TYK_PORTAL_OPENTELEMETRY_METRICS_* environment variables. For a worked example, see Configure Tyk Developer Portal. For what it exports, see Control Plane Metrics.
Traces and Metrics Together
When both are configured,metrics.endpoint defaults to the traces.endpoint value if not set explicitly:
Reference
All fields are also documented in the Tyk Gateway Configuration Reference.
Root-level configuration such as
opentelemetry.enabled and opentelemetry.endpoint still work for traces but are deprecated. Use opentelemetry.traces.* for new deployments.Control Plane Fields
Tyk Dashboard and Tyk MDCB add two fields that Tyk Gateway does not have:
Tyk Developer Portal sets
deployment.environment with its DeploymentEnvironment field, which also defaults to unknown.
Metric Family Flags
Each metric family has its own on/off flag in the metrics configuration of its component. Every flag defaults totrue, so when you enable metrics, the component exports all of its families. To turn off a family, set its flag to false.
Each flag also has an environment variable, for example
TYK_DB_OPENTELEMETRY_METRICS_GATEWAYMETRICS, TYK_MDCB_OPENTELEMETRY_METRICS_RPCMETRICS, or PORTAL_OPENTELEMETRY_METRICS_PROVIDERMETRICS.
Tyk Dashboard has two more settings under opentelemetry.metrics.objects_metrics:
For what a metric family is, see Metric Groups and Families.
Cardinality Control
Each unique combination of dimension values creates a separate time series in your metrics backend. For example, a metric with 100 APIs × 5 methods × 10 status codes = 5,000 time series. Adding dimensions that have many possible values (such as user IDs or free-text fields) can create millions of time series, causing high storage costs and potential out-of-memory crashes. Theopentelemetry.metrics.cardinality_limit field caps how many unique attribute combinations are tracked per metric instrument:
- Default limit: 2,000 combinations per instrument
- When the limit is reached: New attribute combinations are aggregated into an overflow bucket marked with
otel.metric.overflow=true - Existing time series are not affected; only new combinations are blocked
- To disable the limit: Set to
0(not recommended for production)
Tyk Cloud
On Tyk Cloud, metrics export is enabled per environment via the Telemetry settings in the Tyk Cloud UI. A Telemetry entitlement is required; contact your account team if it is not available on your plan. Supported export destinations on Tyk Cloud:- New Relic
- Elastic (Elasticsearch / OpenSearch)
- Dynatrace
- Custom OTLP endpoint (any OTLP-compatible backend)
Metrics Pumps
Tyk Pump can expose metrics derived from the traffic logs that Tyk Gateway stores in Redis, the same traffic logs used for Tyk Dashboard Analytics. This is an older, separate mechanism: computed by Tyk Pump after the fact from traffic log records, not by the gateway in real time, so it can only produce traffic-derived counters and histograms (status codes, latency, and whatever traffic log fields you tag). It has no visibility into the gateway’s own runtime health or configuration state. There are three Metrics Pumps, documented here, that target different backends:- Prometheus
- DogStatsD (Datadog)
- StatsD (not to be confused with the native Tyk Gateway StatsD instrumentation)
Deprecated Backends
New Relic Instrumentation
Tyk Gateway has been instrumented for New Relic metrics since v2.5. Add the following totyk.conf to enable it:
StatsD Instrumentation
Tyk Gateway, Tyk Pump, and Tyk Dashboard have been instrumented for StatsD monitoring. StatsD is a network daemon that listens for statistics sent over UDP or TCP and forwards aggregates to pluggable backend services.Not to be confused with Tyk Pump’s
statsd/dogstatsd Metrics Pumps above: those export traffic-log-derived request metrics, a different mechanism from this internal system instrumentation.Configuring StatsD
To enable StatsD instrumentation, set the environment variableTYK_INSTRUMENTATION=1 and configure statsd_connection_string in each component’s config file. This field specifies how to connect to the StatsD server (host, port, and optional configuration).
You can also set statsd_prefix to a custom value to differentiate metrics between environments (for example, separate prefixes for production and staging).
For Tyk Pump specifically, both fields sit at the top level of pump.conf, alongside log_level and the other global settings.