Route to Grafana Cloud Loki
Grafana Cloud Loki is one of the most common destinations for log
telemetry. The loki exporter ships in both Grafana Alloy and
otelcol-contrib — no additional install, no custom build.
What you’ll do
Section titled “What you’ll do”- Get your Grafana Cloud Loki endpoint URL, tenant ID, and an API key with the
logs:writescope. - Add a Grafana Cloud Loki destination in the LinkMesh UI with those credentials.
- Wire it into a route on the collector that produces your logs.
- Verify delivery in Grafana Explore.
1. Get the credentials
Section titled “1. Get the credentials”In Grafana Cloud → My Account → Loki, you’ll see:
- A push URL like
https://logs-prod-eu-west-0.grafana.net/loki/api/v1/push - Your tenant ID (the numeric user under “Username / Instance ID”)
- An API key — create one with the MetricsPublisher role if you don’t already have one
2. Create the destination
Section titled “2. Create the destination”Open Route → Destinations in the sidebar and click + New Destination.
Pick Grafana Cloud Loki. The form prompts for:
- Endpoint URL — paste verbatim from Grafana Cloud
- Tenant ID — the numeric user / instance ID
- API key — pasted into the credential field (LinkMesh stores it
encrypted in the destination config; collectors receive it via their
runtime’s config channel — Alloy over
remotecfg, otelcol-contrib over OpAMP — never as plaintext in a pushed config)
3. Wire it into a route
Section titled “3. Wire it into a route”Open the collector that handles your log source. Switch to the Routing tab and either create a new route or edit an existing one. Set:
- Source: the log source you want to ship
- Pipeline: whatever pipeline you want (or none — raw passthrough)
- Destinations: add the new
Grafana Cloud Lokidestination
Save. The collector picks up the new routing within a few seconds.
4. Verify
Section titled “4. Verify”Open Grafana Cloud → Explore → select the Loki datasource. Query:
{job="linkmesh"} |= ""
You should see log records flowing within ~30 seconds of the route save. If nothing arrives:
journalctl -u alloy -e(or-u otelcol-contrib -e) will print 4xx auth errors or 5xx endpoint errors- The LinkMesh UI’s per-component throughput on the collector’s
Outputs tab shows the
loki/grafana_cloudexporter with rec/s and any failures — that’s faster than tailing the collector log
How the generated config looks
Section titled “How the generated config looks”For operators auditing what the UI pushed, the underlying OTel YAML on the collector is:
exporters:
loki/grafana_cloud:
endpoint: https://logs-prod-eu-west-0.grafana.net/loki/api/v1/push
auth:
authenticator: basicauth/grafana_cloud
default_labels_enabled:
exporter: false
job: true
extensions:
basicauth/grafana_cloud:
client_auth:
username: "<your-tenant-id>"
password: ${env:GRAFANA_LOKI_API_KEY}
service:
extensions: [basicauth/grafana_cloud]
pipelines:
logs:
receivers: [otlp, filelog]
processors: [batch]
exporters: [loki/grafana_cloud]
The API key lands in the collector runtime’s own environment — the
supervisor’s environment for otelcol-contrib under OpAMP, or Alloy’s
service environment for remotecfg — and the collector reads it through
${env:GRAFANA_LOKI_API_KEY} at startup.
Related
Section titled “Related”- Destination — the concept this recipe creates
- Route — what binds the destination to actual traffic
- Mask PII before this exporter — strongly recommended for any log pipeline that touches user data
- LinkMesh pricing — LinkMesh is priced per Collector, so multi-tenant routing to Loki has no per-GB cost on the LinkMesh side (your Grafana Cloud usage is separate)