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
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:
udplog/input_src_00000501:
listen_address: 0.0.0.0:5141
The same, as an API call (see automation recipes):
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
Related snippets
- Prometheus counters to a delta-only backend (cumulativetodelta)Scrape Prometheus counters and convert them to the delta temporality Dynatrace requires - gauges untouched.
- Receive logs from Fluent Bit and Fluentd (forward)Take logs from existing Fluent Bit or Fluentd agents over the forward protocol, without replacing them first.
- Collect host metrics (CPU, memory, disk, network, processes)CPU, memory, disk, filesystem, network, load and per-process metrics from every host, without a separate node agent.
- Check HTTP endpoints (synthetic availability)Probe your HTTP endpoints from the collector and get status class, duration and error metrics per URL.