LinkMesh

Search docs, blog and changelog

ENDE

Snippets · Sources

Receive log messages over UDP

Some devices send log messages over UDP and never retry. The udplog receiver accepts them on a port and turns each datagram into a log record.

Signals
Logs
Category
Collection
Source
UDP
Components
batchmemory_limiterotlphttp
Destination
OTLP/HTTP endpoint

OpenTelemetry Collector

OpenTelemetry Collector YAML
receivers:
  udplog:
    listen_address: 0.0.0.0:5141

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

exporters:
  otlphttp:
    endpoint: https://your-backend:4318

service:
  pipelines:
    logs:
      receivers: [udplog]
      processors: [memory_limiter, batch]
      exporters: [otlphttp]

LinkMesh

Library › Sources › UDP Log

Listen Address
0.0.0.0:5141

What LinkMesh then pushes to the collector, under receivers:

Pushed to the collector
udplog/input_src_00000501:
  listen_address: 0.0.0.0:5141

The same, as an API call (see automation recipes):

API call
curl -X POST "$LINKMESH/sources" \
  -H "Authorization: Bearer $LMSAT" \
  -H "Content-Type: application/json" \
  -d '{
  "defaultConfig": {
    "listen_address": "0.0.0.0:5141"
  },
  "name": "UDP Log",
  "receiverType": "udplog"
}'

The rest of the collector config above (memory_limiter, batch, otlphttp) is not part of this template: in LinkMesh those are separate sources, processors and destinations on the route.

Generated from LinkMesh's template catalogue by linkmesh-server snippet-render 1.464.3, not written by hand.

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). Replace https://your-backend:4318 with your own OTLP endpoint before you run it.

The gotcha

One datagram is one record, whatever it contains. In our test a datagram holding two lines ("line one\nline two") arrived as one log record with the newline inside its body, not as two. If senders batch lines into one datagram, split them downstream.

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: Sources