LinkMesh

Search docs, blog and changelog

ENDE

Grafana Alloy Fleet Management

Manage Grafana Alloy centrally

A handful of Alloy agents you edit by hand is fine. A fleet of them drifts, skews versions, and needs a restart per change. LinkMesh is a self-hosted control plane that pushes configuration, stages rollouts, and monitors your Alloy fleet over Alloy’s native remotecfg — and manages otelcol-contrib in the same place. Priced per collector, not per gigabyte.

Start free →

25 Collectors free after a no-card registration · 5 without one How the free tier works

Managing a few Alloy agents is easy. Managing a fleet isn’t.

Every technique that works for a few agents — copy config.alloy, reload, move on — stops working somewhere between the tenth and the fiftieth. These are the failure modes that show up next.

config.alloy per host

Every agent has its own hand-edited config.alloy. Two of them drift the moment someone fixes a river block on one box and forgets the rest.

Restart-to-apply

Applying a change means pushing a file and reloading Alloy on each host — a scripted loop you hope succeeded, with no confirmation the new config actually took.

Version skew

Half the fleet is on last quarter’s Alloy release, the other half on this one, and a component behaves differently on the hosts you forgot to upgrade.

No inventory

Ask how many Alloy agents you run, on what version, in which environment — and the honest answer is a spreadsheet that’s three weeks stale.

No staged rollout

A new config goes to every agent at once. A bad receiver or relabel rule takes down collection everywhere at 2am, with no canary and no blast-radius control.

No rollback

"Who changed the sampling rule, when, and can we undo it?" shouldn’t mean diffing config.alloy across forty boxes by hand.

Where LinkMesh sits

LinkMesh is a control plane, not a data plane. Configuration and health flow between the fleet and the LinkMesh server over remotecfg (Alloy) and OpAMP (otelcol-contrib); your telemetry flows straight from the agents to your own backends and never passes through LinkMesh.

CONTROL PLANE · remotecfg + OpAMPLinkMesh Serveryour self-hosted control plane · config, rollout, drift, healthmanaged configeffective-config · healthDATA PLANE · OTLP (never through LinkMesh)Sourceshosts · Kubernetescloud · syslog · appsAlloy FleetGrafana Alloyvia remotecfgotelcol-contribvia OpAMPYour BackendsPrometheus · LokiTempo · Grafana Cloudany OTLP · …telemetrytelemetry
Sources feed the Alloy fleet, which sends telemetry straight to your backends. LinkMesh pushes config down and reads health back — out of the data path.

01

Centralized configuration over remotecfg

Problem

When every Alloy agent owns its own config.alloy, the fleet has no single artifact you can point to and call "the configuration". They diverge by hand, one edit at a time.

LinkMesh

Define configuration once — per group, per environment — and LinkMesh renders and delivers it to every Alloy agent over Alloy’s native remotecfg endpoint. The agent pulls its managed config on a poll and applies it, no SSH and no file-copy loop. Standard upstream Alloy, no forked build and no proprietary agent.

One source of truth for the fleet. What you set is what runs — on agent 1 and on agent 400.

How-to: enroll Grafana Alloy over remotecfg →
The LinkMesh Collectors view — a fleet of agents showing status, version, last-seen, CPU, and memory for every node.
The fleet view: status, Alloy version, and host footprint for every managed agent.

02

Staged & targeted rollouts

Problem

Pushing a config change to a whole Alloy fleet at once is how a single bad relabel rule takes down collection across the estate.

LinkMesh

Roll a change out to one group first — a canary environment, a single region, a tenant — watch health and effective-config convergence, then promote it to the rest. Target rollouts by group, label, or environment instead of editing hosts one by one.

Ship Alloy configuration the way you ship code: small blast radius, observed, promoted deliberately.

How-to: stage a fleet-wide config change →
The LinkMesh collector group overview for us-east-ingest — environment Production, two agents, an acme-logistics tag, and per-group scoped access controls.
A group is the rollout unit: environment, membership, tags, and scoped access — target a change at it, not at individual hosts.

03

Fleet visibility & inventory

Problem

You cannot manage what you cannot list. The fleet’s size, Alloy versions, and placement live in people’s heads and a stale spreadsheet.

LinkMesh

Every enrolled Alloy agent is inventoried automatically — status, version, last-seen, host, and the group and environment it belongs to. Organize the fleet into groups (production, staging, per-region, per-tenant) and scope user access per group.

A live inventory of your Alloy edge that never goes out of date.

How collector groups and environments work →

04

Configuration drift detection

Problem

An agent’s running config quietly diverges from what you pushed — a local override, a manual edit, a half-applied reload. You find out when telemetry stops arriving.

LinkMesh

LinkMesh compares each agent’s reported effective-config against the config it was assigned and flags the mismatch. The agent timeline shows exactly when a node reported a config that differs from the last server push, and when it re-converged.

Drift becomes a visible event on a timeline, not a silent outage.

How effective-config reconciliation works →
A LinkMesh agent detail page whose activity log shows the agent applying the server-pushed config and, separately, reporting a config that differs from the last server push.
An agent’s timeline: it applies a server-pushed config, and a later drift event where its reported config diverges.

05

Change history & rollback

Problem

"Who changed the sampling rule, when, and can we undo it?" should be a one-click answer, not a diff across forty config.alloy files.

LinkMesh

Every route, pipeline, processor, and destination edit lands as a commit in the GitOps config repo — full diff, author, and timestamp. Roll back to any previous revision and re-push it to the fleet over remotecfg.

Git-grade change history and one-click rollback for your whole Alloy configuration.

How managed config is versioned →

06

Alloy and otelcol-contrib in one control plane

Problem

Most estates aren’t pure Alloy. There are otelcol-contrib collectors too — and managing two runtimes with two sets of tooling doubles the drift, the skew, and the on-call surface.

LinkMesh

LinkMesh manages both from one place. Alloy agents pull managed config over remotecfg; otelcol-contrib collectors receive it over OpAMP with the standard opampsupervisor. The same rendered configuration, groups, rollouts, and drift detection apply to both — one fleet view, one policy model.

A mixed Alloy + otelcol-contrib fleet, managed as one — not two half-solutions.

How a collector is modelled in LinkMesh →

What LinkMesh is — and what it isn’t

What it is

A self-hosted control plane that configures, versions, rolls out, and monitors your Grafana Alloy fleet over Alloy’s native remotecfg — and manages otelcol-contrib collectors over OpAMP in the same place, from one fleet view.

What it isn’t

It is not a telemetry backend, and it does not replace Alloy. LinkMesh does not ingest, index, or retain your logs, metrics, or traces — your Alloy agents do that work and send it straight to your own backends. Because it’s self-hosted, your telemetry never transits LinkMesh.

If nothing changes

Left alone, none of this gets cheaper: the volume grows on its own, the data that already left cannot be recalled, and each agent added is one more to remove later.

Once it is running

  • A per-collector bill that a volume spike does not move.
  • Sensitive fields masked on the host, before anything leaves the network.
  • Every config change a diff you can review and roll back.
  • Backends you can swap, because nothing proprietary sits in the path.

Common questions

How does LinkMesh manage Grafana Alloy — OpAMP or remotecfg?

Over remotecfg, Alloy’s native remote-configuration endpoint. Each Alloy agent pulls its managed configuration from the LinkMesh server and applies it. OpAMP is used for otelcol-contrib collectors; Alloy is not managed over OpAMP.

Can LinkMesh manage Grafana Alloy and otelcol-contrib together?

Yes. A mixed fleet is managed from one control plane: Alloy agents pull config over remotecfg and otelcol-contrib collectors receive it over OpAMP. The same groups, rollouts, and drift detection apply to both.

Does my telemetry pass through LinkMesh?

No. LinkMesh is self-hosted and carries only configuration, health, and status. Your Alloy agents send logs, metrics, and traces directly to your own backends — Prometheus, Loki, Grafana Cloud, or any OTLP destination — and the telemetry never transits LinkMesh.

Does LinkMesh replace Grafana Alloy?

No. You keep running standard upstream Alloy. LinkMesh is the control plane that configures, versions, rolls out, and monitors your Alloy fleet — it does not fork Alloy or replace it with a proprietary agent.

How is LinkMesh priced?

By managed collector, never by data volume. The first 25 agents are free after a no-card registration in the OpenSight Customer Portal (5 without one); beyond that it is a flat USD 12.50 · CHF 12.00 · EUR 12.50 per collector per month, billed annually, and the bill stops growing at 200 collectors.

Does it work air-gapped or fully self-hosted?

Yes. LinkMesh runs entirely on your own infrastructure with no dependency on a LinkMesh SaaS. Alloy agents reach the LinkMesh server over a single outbound connection, so it works in isolated and air-gapped networks as long as the agents can reach that server.

Bring your Alloy fleet under one control plane

Self-hosted, remotecfg-native, and priced per collector. The first 25 Collectors are free after a no-card registration in the OpenSight Customer Portal (5 without one).

Install the control plane on any Linux VM — Ubuntu / Debian

curl -fsSL https://artifacts.saas.opensight.ch/binaries/linkmesh-server/latest/linkmesh-server_latest_amd64.deb -o linkmesh-server.deb && sudo apt install -y ./linkmesh-server.deb

RHEL / Rocky / AlmaLinux, Alloy enrollment over remotecfg, and the full walkthrough: Install guide →

Start with one test collector.

Save the current configuration, connect one collector and verify a real signal in your backend. Test one change and its rollback before expanding to the fleet.

Setup guides and evaluation checklist

No email required for the download. Includes failure tests, rollback and checks for ingest-cost assumptions.