Как рассчитать размер постоянного тома, необходимого для сервера Prometheus в кластере K8S? - PullRequest
1 голос
/ 11 октября 2019

Я установил таблицу управления Prometheus в кластер kubernetes для мониторинга. По умолчанию размер постоянного тома

  • для сервера Prometheus определен как 8 Ги.
  • Сервер Prometheus будет хранить метрики в этом томе в течение 15 дней (срок хранения)

После нескольких дней развертывания диаграммы модуль сервера Prometheus перешел в состояние аварийного отключения. Причина, найденная из журналов pod:

level=error ts=2019-10-09T11:03:10.802847347Z caller=main.go:625 err="opening storage failed: zero-pad torn page: write /data/wal/00000429: no space left on device"

Это означает, что на диске (постоянном томе) нет места для сохранения данных. Поэтому я очистил существующие данные тома и временно исправил проблему.

Каково было бы правильное решение для этого?

Документация Prometheus гласит:

Чтобы спланировать мощность сервера Prometheus, вы можете использовать приблизительную формулу:

needed_disk_space = retention_time_seconds * ingested_samples_per_second * bytes_per_sample

Может кто-нибудь объяснить, как использовать эту формулу намеренно?

Почему размера 8Gi недостаточно с 15-дневным сроком хранения?

РЕДАКТИРОВАТЬ:

Пространство 8Gi по умолчанию использовалось на 100% через 6 дней.

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Начиная с Прометея 2.7, они ввели новый флаг для управления хранением. Из документов:

--storage.tsdb.retention.size: [ЭКСПЕРИМЕНТАЛЬНО] Определяет максимальное количество байтов, которое могут использовать блоки хранения (обратите внимание, что это не включает размер WAL, который может быть существенным). Самые старые данные будут удалены первыми. По умолчанию 0 или отключено. Этот флаг является экспериментальным и может быть изменен в будущих выпусках. Поддерживаемые единицы: КБ, МБ, ГБ, ПБ. Пример: "512 МБ"

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

Поскольку это экспериментально, согласно этот источник, было бы безопасно предусмотреть место для WAL и один блок максимального размера (который меньше 10% времени хранения и месяца).

1 голос
/ 11 октября 2019

15 дней - это около 1,3 миллиона секунд. Давайте переоценим 8 байтов на выборку. Таким образом, каждая метрика занимает около 10 МБ. Таким образом, 8 ГБ позволит вам хранить 800 метрик. Вы, вероятно, имеете больше, чем это. Умножьте количество серий, которые вы хотите сохранить, на 10, и это количество мегабайт, которое вам нужно. Грубо говоря, это даст вам, по крайней мере, правильный порядок величины.

...