LinkMesh

Search docs, blog and changelog

ENDE

Snippets · Destinations

Send to Azure Monitor (Application Insights)

Azure Monitor's Application Insights takes all three signals, addressed by a connection string that carries the instrumentation key and ingestion endpoint. The azuremonitor exporter reads it from the environment.

Signals
LogsMetricsTraces
Source
OTLP
Components
otlpbatchmemory_limiter
Destination
Azure Monitor

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:
  azuremonitor:
    connection_string: ${env:APPLICATIONINSIGHTS_CONNECTION_STRING}
    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: [azuremonitor]
    traces:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [azuremonitor]
    metrics:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [azuremonitor]

LinkMesh

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

Custom destination body (azuremonitor)
connection_string: ${env:APPLICATIONINSIGHTS_CONNECTION_STRING}
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

validate does not catch a missing connection string. In our test, with APPLICATIONINSIGHTS_CONNECTION_STRING unset, otelcol-contrib validate passed, and then the collector exited at start: "failed to start \"azuremonitor\" exporter: ConnectionString and InstrumentationKey cannot be empty". Check the variable is set wherever this config runs.

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