Mimir: долгосрочное хранение метрик¶
Prometheus великолепен для сбора метрик реал-тайм. Но он не масштабируется горизонтально сам по себе. Каждый сервер Prometheus хранит свои метрики на своём локальном диске, и когда падает диск — метрики теряются. Для production'а это неприемлемо.
Mimir — горизонтально-масштабируемый data-store, полностью совместимый с Prometheus API. По сути, Mimir — это Prometheus, только размазанный на кластер.
Ключевые различия Prometheus vs Mimir:
| Характеристика | Prometheus | Mimir |
|---|---|---|
| хранение | локальный диск | S3-совместимое объектное хранилище |
| долгосрочность | Нет (ограничено размером локального тома) | Да (сколько платите за объектное хранилище) |
| multi-tenancy | Нет (Prometheus = один тенант) | Да (разные метрики разных команд в одном кластере) |
| масштабирование | Вертикальное (дайте больше мощности серверу) | Горизонтальное (статически повышайте число инстансов) |
Для чего нужен отдельный storage¶
Несколько сценариев:
-
Долгосрочное хранение метрик (Long-term retention). Prometheus типично хранит 2-4 недели и перестаёт. Mimir (через Store Gateway на основе S3) может хранить 1 год. Нужно понять, как вёл себя сервис месяц назад? Только Mimir (или Thanos, или VictoriaMetrics).
-
Объединение многих Prometheus серверов. Kubernetes Multicluster — каждый кластер со своим Prometheus. Они отправляют метрики в один Mimir, который выступает "шлюзом агрегации". Все кластеры видны через одну панель Grafana.
-
Query Sharding. Mimir делит длинные запросы по всем инстансам и собирает части — запрос быстрее выполняется. Prometheus один обрабатывает запрос.
Compactor и Query Sharding¶
Mimir compactor'ом удаляет дублирующиеся данные, снижая потребление пространства. Compactor работает в фоновом режиме.
Query sharding разбивает операции запроса по инстансам Mimir и собирается за десятки миллисекунд (Prometheus в одиночку смотрит дольше). Особенно полезно для запросов "Last 30 days" — Mimir в 3-10 раз быстрее.
Как подключать в Grafana Mimir — см. Provisioning источников, как подключить Mimir.