Skip to content

Source

A source is an inbound receiver: syslog, OTLP gRPC/HTTP, file tail, journald, Kafka, Prometheus scrape, hostmetrics — anything in the OTel ecosystem that produces telemetry for the collector to forward.

A source by itself is a type, not a running thing. To start ingesting, activate it on a collector.

Activating a source creates a Source Activation — the per-collector instance of that receiver. It carries the runtime configuration:

  • Listen port + bind address (for receivers that open a socket)
  • Parser settings (severity mapping, timestamp extraction, multiline rules)
  • Resource attributes that get stamped on every record (service.name, deployment.environment, etc.)
  • An optional input filter that drops records before they enter any route
The source picker on a collector's Inputs tab. Each card is a receiver type; clicking one opens the activation form.

A single source type can be activated multiple times on the same collector with different settings — for example, two syslog activations listening on different ports for two different upstream applications.

OTLP: one listener per protocol you ask for

Section titled “OTLP: one listener per protocol you ask for”

An OTLP source opens the protocols its configuration names, and no others. The OTLP gRPC template fills in gRPC Endpoint and leaves HTTP Endpoint empty, so the collector listens on 0.0.0.0:4317 and does not bind 4318. The OTLP HTTP template is the mirror of that.

To receive over both protocols, give both fields an address on the same source:

Field Value Result
gRPC Endpoint 0.0.0.0:4317 gRPC listener opened
HTTP Endpoint 0.0.0.0:4318 HTTP listener opened

Clearing a field closes that listener on the next config apply. At least one of the two must have an address — a source that listens on nothing is refused when you save it.

The addresses are part of the activation, so editing them on one collector’s activation changes what that collector binds and leaves every other activation of the same source alone.

An OTLP listener is plaintext until you give it a TLS Mode. The mode is the switch — the file fields below it do nothing until it is set.

TLS Mode What the listener does
Disabled Accepts plaintext from anyone who can reach the port
TLS Encrypted. Senders verify the collector; the collector does not check senders
Mutual TLS Encrypted, and a sender must present a certificate signed by your client CA

The three file fields are paths on the collector host, not uploads. Put the files there first — LinkMesh never stores a certificate, a key or a passphrase, and pasting one into a path field is refused when you save.

Field Needed for What to give
Server Certificate TLS, Mutual TLS The certificate this listener presents, e.g. /etc/linkmesh/tls/server.crt
Server Key TLS, Mutual TLS That certificate’s private key
Client CA Mutual TLS The CA that signs your senders’ certificates — this is what makes the listener demand one
Minimum TLS Version optional 1.0–1.3. Empty leaves the collector’s default, 1.2
Certificate Reload Interval optional e.g. 24h, to pick up a renewed certificate without restarting the collector

One TLS section covers every protocol the source opens: with both gRPC and HTTP enabled, both listeners use the same certificate.

The collector cannot start a listener whose certificate it cannot read, and LinkMesh cannot see the collector’s filesystem to check in advance. If a path is wrong, the source’s status on the Sources list reads Cannot load <filename> and carries the collector’s own message, naming the full path. Create the file on that host, or correct the path, and the listener comes up on the next config apply.

Surface Path
UI Collector detail → Inputs tab
Storage YAML file at gitops/collectors/<collectorID>/sources/<activationID>.yaml
Generated config The collector’s rendered OTel config has one receiver block per activation

The YAML is the source of truth. Every change made in the UI is recorded as a version; the collector picks up the new config on its next poll (Alloy) or push (OpAMP).

The YAML holds the activation: which collector the source runs on and the settings you override there. The source’s own settings are stored in the server’s database, so they are not part of the version history and a rollback does not restore them.