March 22

Масштабирование метрик Prometheus с помощью Grafana Mimir: пошаговая настройка

Это перевод оригинальной статьи Scaling Prometheus Metrics with Grafana Mimir: Step-by-Step Setup and Demo.

Перевод сделан специально для телеграм-канала Мониторим ИТ. Подписывайтесь! Там еще больше полезных постов о мониторинге.

Prometheus отлично подходит для мониторинга, но при масштабировании возникают реальные проблемы, такие как высокая кардинальность, долговременное хранение и высокая доступность. Вот тут-то и приходит на помощь Grafana Mimir.

На недавнем митапе Grafana & Friends x Kubernetes я выступил с докладом и живой демонстрацией того, как Grafana Mimir может масштабировать метрики Prometheus.

В этой статье вы шаг за шагом узнаете обо всем, что я показал в демонстрации.

Настройка панели мониторинга Grafana Mimir в качестве источника данных TSDB.

Что мы рассмотрим

Ограничения Prometheus
Введение в Grafana Mimir
Архитектура и компоненты Mimir
Конфигурация remote write из Prometheus → Mimir
Настройка Grafana → Mimir в качестве источника данных
Визуализация метрик + изучение административного интерфейса

Почему именно Grafana Mimir?

Prometheus — мощная система сбора метрик, но у неё есть следующие проблемы:

  • Отсутствует встроенная кластеризация или высокая доступность.
  • Только локальное хранилище
  • Интенсивное использование памяти при работе с данными высокой кардинальности.

Grafana Mimir — это высокомасштабируемый backend для долгосрочного хранения метрик Prometheus, который решает все эти проблемы.

Архитектура Mimir Architecture (краткий обзор)

Mimir подразделяется компоненты:

  • Distributor — принимает remote write от Prometheus
  • Ingester — временно хранит данные
  • Compactor — компактизирует блоки
  • Querier — обрабатывает запросы
  • Store-gateway — извлекает блоки из объектного хранилища.

Это делает Mimir горизонтально масштабируемым и совместимым с HA.

Пошаговая настройка

Запуск экземпляра EC2 (виртуальной машины)

Перед установкой чего-либо я запустил экземпляр Amazon EC2, который использовал в качестве демонстрационной среды.

Настройка Prometheus

Статус Mimir TSDB
Prometheus Targets
Собранные метрики через Grafana Mimir

Скачайте и распакуйте Prometheus:

wget https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gz
tar -xvzf prometheus-2.52.0.linux-amd64.tar.gz
cd prometheus-2.52.0.linux-amd64

Отредактируйте файл prometheus.yml, чтобы включить удаленную запись в Grafana Mimir:

Добавьте удаленную запись

remote_write:
- url: http://localhost:9009/api/v1/push
Файл конфигурации Prometheus

Настройка Grafana Mimir

Скачайте Mimir:

wget https://github.com/grafana/mimir/releases/download/v2.12.0/mimir-linux-amd64.zip
unzip mimir-linux-amd64.zip
chmod +x mimir

Создайте конфигурационный файл demo.yaml (базовая настройка для одного процесса):

# Do not use this configuration in production.
# It is for demonstration purposes only.
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

ruler_storage:
  backend: filesystem
  filesystem:
    dir: /tmp/mimir/rules

server:
  http_listen_port: 9009
  log_level: error

store_gateway:
  sharding_ring:
    replication_factor: 1
Конфигурация Mimir

Настройка Grafana

Запуск Grafana:

sudo systemctl start grafana-server

Подключите Mimir к Grafana

Настройка Mimir в качестве источника данных
  • Войдите в Grafana по адресу http://<ip>:3000(по умолчанию: admin/admin)
  • Перейдите в Settings → Data Sources → Add Data Source
  • Выберите Prometheus

Теперь Grafana подключена к Mimir!

Обзор административного интерфейса Mimir

Административный интерфейс Grafana Mimir
Статус сервисов
Статус Hash Ring
Статус Ingester
Grafana Mimir Memberlist — пары ключ-значение

Эта конфигурация демонстрирует, насколько легко масштабировать Prometheus с помощью Grafana Mimir — без изменения способа сбора метрик.

Подписывайтесь на телеграм-канал Мониторим ИТ, там еще больше полезной информации о мониторинге!