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.
Source Activation
Section titled “Source Activation”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
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.
OTLP: encrypting the listener
Section titled “OTLP: encrypting the listener”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.
When a file is not there
Section titled “When a file is not there”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.
Where it lives
Section titled “Where it lives”| 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.
See also
Section titled “See also”- Create a custom source or destination — write the receiver’s settings as YAML when the guided form doesn’t offer what you need
- Collector — where activations live
- Route — wires an activation through a pipeline to one or more destinations
- Add a collector — activates a starter source as part of enrolment