LinkMesh

Search docs, blog and changelog

ENDE

Snippets · Destinations

Send to New Relic over OTLP

New Relic accepts OTLP natively. The otlphttp exporter sends all three signals with the ingest license key in the api-key header; this config uses the EU endpoint, otlp.eu01.nr-data.net.

Signals
LogsMetricsTraces
Source
OTLP
Components
otlpbatchmemory_limiterotlphttp
Destination
New Relic

OpenTelemetry Collector

OpenTelemetry Collector YAML
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317

processors:
  memory_limiter:
    check_interval: 1s
    limit_percentage: 80
    spike_limit_percentage: 25
  batch:
    timeout: 5s

exporters:
  otlphttp/newrelic:
    # The base URL: the exporter appends /v1/traces, /v1/metrics, /v1/logs.
    endpoint: https://otlp.eu01.nr-data.net
    headers:
      api-key: ${env:NEW_RELIC_LICENSE_KEY}
    compression: gzip
    sending_queue:
      enabled: true
      queue_size: 5000
    retry_on_failure:
      enabled: true
      initial_interval: 5s
      max_interval: 30s
      max_elapsed_time: 300s

service:
  pipelines:
    logs:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [otlphttp/newrelic]
    traces:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [otlphttp/newrelic]
    metrics:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [otlphttp/newrelic]

LinkMesh

LinkMesh has no built-in template for this job. Add it as a custom destination in raw mode, with otlphttp as the component type and this body - the same lines as under otlphttp/newrelic in the collector config:

Custom destination body (otlphttp)
endpoint: https://otlp.eu01.nr-data.net
headers:
  api-key: ${env:NEW_RELIC_LICENSE_KEY}
compression: gzip
sending_queue:
  enabled: true
  queue_size: 5000
retry_on_failure:
  enabled: true
  initial_interval: 5s
  max_interval: 30s
  max_elapsed_time: 300s

How custom components are validated and rolled out: create a custom destination.

Download config.yamlValidated with otelcol-contrib v0.161.0 on 2026-10-26

Complete config files, each checked with the collector's own validate command (otelcol-contrib v0.161.0).

The gotcha

endpoint is the base URL; the exporter appends /v1/traces, /v1/metrics and /v1/logs itself. In our test an endpoint that already ended in /v1/logs produced requests to /v1/logs/v1/logs. Use the base URL, not a signal-specific one.

Manage this across a fleet

LinkMesh manages collector configuration across a fleet from one self-hosted control plane, so a change like this is made once rather than host by host. The first 25 Collectors are free after a no-card registration in the OpenSight Customer Portal (5 without one).

Doing this in LinkMesh: Create a custom source or destination