Deploy Grafana Mimir in microservices mode (for production) or monolithic mode (for evaluation) using the official Helm chart; configure a shared object store backend (S3, GCS, or Azure Blob) in the mimir.yaml config
Enable multi-tenancy by setting multitenancy_enabled: true in mimir.yaml; Mimir then requires all requests to carry an X-Scope-OrgID header to identify the tenant
Configure each Prometheus instance's remote_write block with the Mimir /api/v1/push endpoint URL and set headers: X-Scope-OrgID: <tenant-id> to namespace metrics by tenant
Grant tenants access by configuring per-tenant limits in the overrides section of mimir.yaml; set max_global_series_per_user, ingestion_rate, and other quotas per tenant as needed
Query tenant-specific data in Grafana by adding a Prometheus data source pointing at Mimir's query-frontend URL and setting the X-Scope-OrgID header in the data source custom HTTP headers
Monitor ingestion health per tenant using Mimir's built-in dashboards (importable from the Mimir mixin) which show per-tenant series counts, ingestion rates, and query latencies
Known gotchas
With multitenancy_enabled: true, every request without an X-Scope-OrgID header is rejected with a 401; ensure all Prometheus instances, Grafana data sources, and query tools include the header
Tenant IDs are case-sensitive strings in Mimir; using mixed case (e.g., TeamA vs teama) creates separate tenants with separate storage namespaces — standardize tenant ID format early
Mimir's compactor runs per-tenant; in deployments with many tenants, the compactor may fall behind during ingestion spikes — monitor compactor lag and scale compactor replicas if needed
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp