Enrol an upstream collector (choose a runtime)
A collector runs one of two upstream runtimes — both are stock binaries
with no proprietary code in the data path. LinkMesh delivers its config
through the runtime’s own native channel: Grafana Alloy pulls via remotecfg,
or otelcol-contrib receives pushes via OpAMP. See
Native remote config for the model.
Pick a runtime
| Grafana Alloy | otelcol-contrib | |
|---|---|---|
| Remote-config protocol | remotecfg (HTTP poll, Connect-RPC) | OpAMP (WebSocket) |
| Config language | Alloy syntax (River) | YAML |
| Auth | per-collector bearer token (minted in UI) | enrollment token on the OpAMP upgrade |
| LinkMesh capability | Full (pipelines, processors, destinations) | Full |
| Best for | Teams standardised on the Grafana stack | OpenTelemetry-native shops |
Both runtimes get the same per-component throughput on the topology canvas and the same fleet-management surface. Pick whichever fits your existing tooling, then follow its step-by-step guide:
What happens after enrollment
The collector immediately starts pulling its real pipeline config (Alloy via
remotecfg, otelcol-contrib via OpAMP RemoteConfig). When you wire a source
or destination to it in the LinkMesh UI:
- LinkMesh renders the pipeline as Alloy syntax or OTel YAML.
- The collector pulls (or is pushed) the updated config within ~60s and reloads without downtime.
- Per-component throughput appears on the topology canvas once data flows — the collector pushes its own internal metrics to LinkMesh over OTLP (its own self-telemetry, not LinkMesh scraping anything).
Removing a collector
On the host, stop and disable the collector, then remove its config:
sudo systemctl disable --now alloy # or: otelcol-contribsudo rm -f /etc/alloy/config.alloy # or: /etc/otelcol-contrib/config.yamlIn the LinkMesh UI, deregister the collector from Collectors → … → Deregister. This revokes its token immediately — if the host comes back it will fail to authenticate, and you’ll re-onboard it with a fresh token.