mimir — скилл для Claude Code: Mimir для хранения метрик
Скилл помогает развернуть Grafana Mimir под долгое хранение метрик Prometheus и OTLP, настроить мультитенантность и починить ошибки при отправке.
npx skills add grafana/skills --skill mimir -a claude-codeЧто делает mimir
Скилл ведёт агента по шагам: сначала поднять Mimir локально в Docker, затем подключить отправку метрик. Внутри есть готовый demo.yaml с монолитным таргетом all, файловым хранилищем блоков и отключённой мультитенантностью, а также команды проверки — запрос к /ready, обращение к /api/v1/labels и просмотр собственных метрик самого Mimir.
Дальше в скилле описаны удалённая запись из Prometheus и из Grafana Alloy: адрес http://localhost:9009/api/v1/push и заголовок X-Scope-OrgID для мультитенантного режима. Есть развёртывание в Kubernetes через чарт mimir-distributed версии 6.0.6 с проверкой подов и шлюза. Отдельные справочники по бэкендам хранилища (S3, GCS, Azure, файловая система) и по архитектуре лежат рядом в references/storage.md и references/architecture.md.
Для продакшена нужен бакет объектного хранилища, файловая система годится только для разработки. Если включена мультитенантность, заголовок X-Scope-OrgID обязателен в каждом запросе — без него данные не запишутся и не прочитаются. Быстрый старт требует Docker, для Helm — кластер Kubernetes и настроенный kubectl.
Какие задачи решает
- поднять Mimir локально в Docker и проверить готовность
- перевести Prometheus на
remote_writeв Mimir - включить мультитенантность и раздать тенантам заголовок
X-Scope-OrgID - развернуть Mimir в Kubernetes через Helm-чарт
- разобраться, почему push отдаёт
429 Too Many Requests
Примеры запросов агенту
- Подними Mimir локально из
demo.yamlи проверь, что/readyотвечает - Настрой
remote_writeиз Prometheus в Mimir для тенанта tenant1 - Разверни Mimir в Kubernetes через
mimir-distributed, поднимиvalues.yaml
Как установить mimir
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill mimir -a claude-code2Вручную: положить файлы
~/.claude/skills/mimir/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/mimir/
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill mimir -a codex2Вручную: положить файлы
.agents/skills/mimir/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill mimir -a cursor2Вручную: положить файлы
.cursor/skills/mimir/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install grafana/skills mimir2Вручную: положить файлы
.github/skills/mimir/SKILL.md1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill mimir -a gemini-cli2Командой платформы
gemini skills install https://github.com/grafana/skills --path skills/grafana-lgtm/mimirВручную: положить файлы
.devin/skills/mimir/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add grafana/skills --skill mimir -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о mimir
Как установить mimir в Claude Code?
Одной командой: npx skills add grafana/skills --skill mimir -a claude-code. После этого файл скилла лежит в ~/.claude/skills/mimir/SKILL.md.
Что делает mimir?
Помогает агенту развернуть Grafana Mimir и наладить приём метрик Prometheus и OTLP. Внутри — конфиг для локального запуска, примеры отправки метрик и развёртывание в Kubernetes.
Что нужно, чтобы скилл сработал?
Docker для быстрого старта или кластер Kubernetes для Helm, а также бакет S3, GCS или Azure для продакшена. На стороне источника — Prometheus или Alloy с включённой удалённой записью.
Исходный текст
SKILL.md · Apache-2.0
---
name: mimir
license: Apache-2.0
description: Stand up Grafana Mimir for horizontally scalable, multi-tenant, long-term Prometheus + OTLP metrics storage. Covers monolithic / read-write / microservices deployment, S3 / GCS / Azure / filesystem block storage, Prometheus `remote_write` and OTLP ingestion, multi-tenancy with `X-Scope-OrgID`, ingester replication factor, compactor retention, and per-tenant limits. Use when running Mimir locally or on Kubernetes (Helm `mimir-distributed`), scaling Prometheus past a single node, picking ingest / query / backend split, configuring tenants and ingestion rate, debugging `/ready` 503s or `429 Too Many Requests`, or pointing Grafana at a Mimir datasource — even when the user says "I need long-term Prometheus storage", "scale Prometheus", "multi-tenant metrics backend", "Cortex replacement", "remote_write target", or "store 10M active series" without naming Mimir.
---
# Grafana Mimir
> **Docs**: https://grafana.com/docs/mimir/latest/
Horizontally scalable, multi-tenant, long-term storage for Prometheus + OpenTelemetry metrics.
## Prerequisites
- Docker (for quick start) or a Kubernetes cluster (for Helm)
- An object-storage bucket for production (S3/GCS/Azure) — filesystem only for dev
- Prometheus or Alloy able to remote_write to the Mimir push endpoint
## Common Workflows
### 1. Stand up monolithic Mimir locally
```yaml
# demo.yaml
target: all
multitenancy_enabled: false
blocks_storage:
backend: filesystem
bucket_store:
sync_dir: /tmp/mimir/tsdb-sync
filesystem:
dir: /tmp/mimir/data/tsdb
tsdb:
dir: /tmp/mimir/tsdb
compactor:
data_dir: /tmp/mimir/compactor
sharding_ring:
kvstore: { store: memberlist }
distributor:
ring:
instance_addr: 127.0.0.1
kvstore: { store: memberlist }
ingester:
ring:
instance_addr: 127.0.0.1
kvstore: { store: memberlist }
replication_factor: 1
server:
http_listen_port: 9009
grpc_listen_port: 9095
log_level: error
```
```bash
# 1. Run it
docker run --rm -p 9009:9009 -v $(pwd)/demo.yaml:/etc/mimir/demo.yaml \
grafana/mimir:latest --config.file=/etc/mimir/demo.yaml
# 2. Verify readiness (expect HTTP 200, body: "ready")
curl -sf http://localhost:9009/ready
# 3. Verify it's serving the API
curl -s http://localhost:9009/api/v1/labels | jq '.status' # → "success"
# 4. Verify self-metrics scrape
curl -s http://localhost:9009/metrics | grep -E '^mimir_(distributor|ingester)_' | head
```
### 2. Send metrics — Prometheus remote_write
```yaml
remote_write:
- url: http://localhost:9009/api/v1/push
headers:
X-Scope-OrgID: tenant1 # required when multitenancy_enabled: true
```
```bash
# Verify samples are landing
curl -s -H 'X-Scope-OrgID: tenant1' \
'http://localhost:9009/api/v1/query?query=up' | jq '.data.result | length'
# Expect > 0 within ~30s of Prometheus scraping
```
### 3. Send metrics — Grafana Alloy
```alloy
prometheus.remote_write "mimir" {
endpoint {
url = "http://mimir:9009/api/v1/push"
headers = { "X-Scope-OrgID" = "tenant1" }
}
}
```
### 4. Deploy on Kubernetes (Helm, microservices)
```bash
# 1. Install
helm repo add grafana https://grafana.github.io/helm-charts
helm install mimir grafana/mimir-distributed --version 6.0.6 -f values.yaml
# 2. Verify every pod is Running / Ready
kubectl get pods -n mimir
# distributor, ingester, querier, query-frontend, store-gateway, compactor, ruler
# 3. Verify the gateway is ready
kubectl port-forward -n mimir svc/mimir-nginx 9009:80 &
curl -sf http://localhost:9009/ready
```
## Multi-tenancy
```yaml
multitenancy_enabled: true
# Every request must include header: X-Scope-OrgID: <tenant-id>
```
For storage backends (S3 / GCS / Azure / filesystem) see [`references/storage.md`](references/storage.md). For component roles, ring options, limits, and API endpoint dumps see [`references/architecture.md`](references/architecture.md).
## Troubleshooting
- `/ready` returns 503 → ingester still joining ring; check `mimir_ring_members` and ingester logs
- `429 Too Many Requests` on push → bump `limits.ingestion_rate` / `ingestion_burst_size`
- Samples written but query returns empty → confirm `X-Scope-OrgID` matches between write and read
- Query for old data returns nothing → check compactor logs and that store-gateway has synced blocks
## Resources
- [Mimir docs](https://grafana.com/docs/mimir/latest/)
- [Helm chart `mimir-distributed`](https://github.com/grafana/mimir/tree/main/operations/helm/charts/mimir-distributed)
- [Architecture reference](https://grafana.com/docs/mimir/latest/references/architecture/)
© grafana · Apache-2.0 · grafana/skills