Configure Thanos Receive to accept Prometheus remote-write metrics for long-term storage without sidecars
domain: thanos.io · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Run `thanos receive` with `--tsdb.path`, `--grpc-address`, `--http-address`, and `--remote-write.address` to start a receiver that exposes a Prometheus-compatible remote-write endpoint at `/api/v1/receive`.
Point each Prometheus instance's `remote_write.url` configuration at the Receive endpoint so samples are pushed directly, eliminating the need for a Thanos Sidecar.
Create a hashring configuration file (JSON, listing receive endpoints) and pass it via `--receive.hashrings-file` so incoming write requests are routed/distributed to the correct ingesting node(s).
Set `--receive.local-endpoint` on each node to identify itself within the hashring; a node with hashring config and a local endpoint runs in RouterIngestor mode (routes and ingests), a node with hashring config but no local endpoint runs RouterOnly, and a node with no hashring config runs IngestorOnly.
Set `--receive.replication-factor` (typically an odd number such as 3) to control how many nodes each incoming write is replicated to for durability.
Configure `--objstore.config-file` so the receiver periodically uploads its local TSDB blocks to object storage, and point Thanos Query and Store Gateway at that same bucket for long-term queries.
Known gotchas
The number of endpoints in the hashring must exceed the configured `--receive.replication-factor`, otherwise writes fail with an "amount of endpoints needs to be larger than replication factor" error.
Because a node's behavior depends on whether hashring config and `--receive.local-endpoint` are both present, misconfiguring one of them silently changes the node's role (RouterOnly vs IngestorOnly vs RouterIngestor) rather than producing an obvious error.
Receive's replication writes identical samples (same timestamps and values) to replicas, so use the default `one-to-one` vertical-compaction dedup for overlap — the `penalty` dedup algorithm is intended for independently-scraped Prometheus HA pairs, not Receive replication.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?