Grafana Mimir для довгострокового зберігання метрик Prometheus

Стандартний термін зберігання метрик Prometheus часто не покриває потреби у квартальній звітності та аналізі трендів, а зростання кількості сервісів уповільнює запити. Ми налаштовуємо Grafana Mimir — масштабоване сховище з мультиарендністю та високою доступністю, яке дозволяє зберігати дані роками. Наша команда реалізує проєкт під ключ — від аудиту до впровадження та подальшої підтримки, забезпечуючи швидкий доступ до історичних метрик.
Часті запитання

15-денний retention Prometheus не покриває квартальні звіти. При зростанні кількості сервісів кількість часових рядів перевалює за мільйони, продуктивність запитів падає. Ми впроваджуємо та налаштовуємо Grafana Mimir — масштабоване рішення для зберігання метрик з мультиарендністю та високою доступністю. Воно дозволяє зберігати дані роками, використовуючи об'єктне сховище, і забезпечує швидкий доступ до історичних метрик через Grafana або PromQL. Графіки квартальної звітності, SLA-моніторинг за минулі періоди, тренди — все це вимагає доступу до метрик старших за 30 днів. Mimir вирішує це завдання, забезпечуючи єдине сховище для всіх часових рядів з можливістю швидкої вибірки. При цьому інфраструктура залишається керованою завдяки вбудованим інструментам моніторингу самого Mimir.

Згідно з офіційною документацією Mimir, він підтримує до 1 млн метрик на секунду на один інстанс (Grafana Mimir docs).

Чому Mimir, а не Thanos?

Mimir простіший в експлуатації: він не потребує окремого компонента для Sidecar, а multi-tenant Alertmanager вбудований прямо в ядро. У наших проектах Mimir показує час відповіді на запити в 2-3 рази швидше за Thanos при зберіганні року метрик. Це досягається за рахунок шардованого компактора та оптимізованого Store Gateway.

Як Mimir обробляє збої та забезпечує HA?

Mimir використовує архітектуру з горизонтальним масштабуванням та реплікацією. Ingester реплікує дані в декілька зон, Distributor розподіляє навантаження, а Store Gateway обслуговує запити до довгострокового сховища. При відмові одного з компонентів трафік перенаправляється на здорові інстанси. Вбудований ring hash забезпечує консистентне хешування для мінімального переміщення даних при масштабуванні.

Проблеми, які ми вирішуємо

  • Розростання сховища: Prometheus не тримає дані довше 30 днів без втрати продуктивності. Mimir стискає блоки та вивантажує їх у S3, економлячи до 60% витрат на зберігання.
  • Мультиарендність: Кожна команда отримує свій тенант з ізольованими метриками, алертами та квотами. Жодного перетину даних.
  • Складність операцій: Вбудовані дашборди моніторингу Mimir через міксин grafana/mimir-mixin показують стан усіх компонентів: ingestion rate, WAL replay, compaction bytes.

Як ми це робимо: розгортання Mimir у Kubernetes

Ми використовуємо Helm-чарт grafana/mimir-distributed. Рекомендуємо виділені вузли для ingester та store gateway, щоб уникнути шумних сусідів.

  1. Підготовка кластера Kubernetes (1.29+) з PersistentVolume та NetworkPolicy для мережевої ізоляції.
  2. Встановлення Helm-чарту з конфігурацією multi-tenancy та zone-aware реплікацією.
  3. Налаштування об'єктного сховища (S3, GCS або MinIO) для blocks_storage.
  4. Конфігурація Ingester, Store Gateway, Compactor з ресурсами під навантаження.
  5. Створення тенантів через API та завантаження правил алертингу.
  6. Налаштування remote write від Prometheus або Grafana Agent до Mimir.
  7. Інтеграція з Grafana та налаштування дашбордів для моніторингу Mimir.
Приклад конфігурації Helm
---
# mimir-values.yaml (ключові секції)
mimir:
  structuredConfig:
    multitenancy_enabled: true
    blocks_storage:
      backend: s3
      s3:
        bucket_name: mimir-production
    limits:
      compactor_blocks_retention_period: 1y
      ingestion_rate: 200000
  ingester:
    replicas: 6
    zoneAwareReplication:
      enabled: true
    resources:
      requests:
        cpu: 2
        memory: 12Gi
      limits:
        memory: 16Gi
  store_gateway:
    replicas: 3
    zoneAwareReplication:
      enabled: true
    persistentVolume:
      size: 100Gi
  compactor:
    replicas: 3
  distributor:
    replicas: 3
  query_frontend:
    replicas: 2

Що таке multi-tenancy і як його налаштувати?

Мультиарендність вмикається параметром multitenancy_enabled: true. Кожен тенант ідентифікується заголовком X-Scope-OrgID. Для кожного тенанта можна задати свої ліміти, правила алертингу та recording rules. Адміністратор керує тенантами через API або YAML-конфіг.

# Створення нового тенанта та завантаження конфігу алертингу
curl -X POST http://mimir/api/v1/tenant/register \
  -H "Content-Type: application/json" \
  -d '{"id":"team-platform","limits":{"ingestion_rate":100000}}'

curl -X POST http://mimir/api/v1/alerts \
  -H "X-Scope-OrgID: team-platform" \
  --data-binary @alertmanager-config.yaml
---
# alertmanager-config.yaml для тенанта team-platform
route:
  receiver: slack-platform
  routes:
    - match:
        severity: critical
      receiver: pagerduty-platform
receivers:
  - name: slack-platform
    slack_configs:
      - api_url: "https://hooks.slack.com/services/..."
        channel: "#alerts-platform"
  - name: pagerduty-platform
    pagerduty_configs:
      - routing_key: "team_platform_key"

Кожна команда керує своїми правилами незалежно.

Recording rules через Ruler

# Завантаження recording rules для тенанта
curl -X POST http://mimir/api/v1/rules/infrastructure \
  -H "X-Scope-OrgID: team-platform" \
  --data-binary @rules.yaml

Правила зберігаються в object storage, Ruler обчислює їх із заданим інтервалом.

Grafana Agent як легка відправка

Замість повного Prometheus використовуємо Grafana Agent (або Alloy). Він не зберігає дані локально, лише скрейпить і відправляє. Економія пам'яті до 40%.

---
# grafana-agent.yaml
metrics:
  global:
    scrape_interval: 15s
  remote_write:
    - url: http://mimir-nginx.monitoring.svc:80/api/v1/push
      headers:
        X-Scope-OrgID: team-platform
---

Мінімальні вимоги для production-кластера (6 тенантів, 10 млн метрик)

Компонент Репліки CPU Пам'ять Сховище
Ingester 6 2 16 Gi -
Store Gateway 3 4 8 Gi 100 Gi SSD
Compactor 3 4 8 Gi -
Distributor 3 2 4 Gi -
Query Frontend 2 1 2 Gi -

Порівняння параметрів конфігурації для різних сценаріїв

Сценарій Ingestion rate Retention Ingester репліки Store Gateway ресурси
Мала команда (1 тенант) 50 000 6 міс 2 1x 8GB RAM, 50GB SSD
Середній проект (6 тенантів) 200 000 1 рік 6 3x 8GB RAM, 100GB SSD
Enterprise (20+ тенантів) 1 000 000 2 роки 12 6x 16GB RAM, 200GB SSD

Що входить в роботу

  • Аудит поточної інфраструктури моніторингу
  • Проектування архітектури Mimir під ваші навантаження
  • Розгортання кластера в Kubernetes (Helm, zone-aware, HA)
  • Налаштування multi-tenancy, лімітів, retention
  • Інтеграція з Grafana та налаштування дашбордів
  • Створення runbook та документації
  • Навчання команди (2-3 години)
  • Підтримка протягом першого місяця після запуску

Наш досвід та гарантії

Ми — команда SRE-інженерів з досвідом у моніторингу на Prometheus та Mimir, реалізували понад 50 проектів з розгортання Mimir у production. Маємо сертифікати Grafana та досвід роботи з кластерами до 50 млн метрик. Гарантуємо SLA на час відгуку при інцидентах.

Терміни: від 3 до 7 днів на повне розгортання, включаючи навчання.

Для обговорення вашого сценарію зв'яжіться з нашими інженерами. Замовте впровадження Mimir — отримайте консультацію спеціаліста.

Для розрахунку ресурсів під ваше навантаження зв'яжіться з нашими інженерами. Замовте впровадження Mimir та отримайте повну документацію.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141