#database #time-series #prometheus
Вопрос:
Я рассматриваю возможность использования Prometheus в качестве базы данных временных рядов для хранения данных в течение длительных периодов времени (месяцев или, может быть, даже более года).
Однако в нескольких местах я читал, что Prometheus не подходит для длительного хранения, и в этом случае лучшим решением была бы другая база данных TSDB. Но почему именно он не подходит и в чем минусы его использования в качестве долгосрочного хранилища?
В официальных документах упоминается:
Локальное хранилище Prometheus не предназначено для длительного хранения; внешние решения обеспечивают длительное хранение и долговечность данных.
Но что именно означает «расширенное хранение и долговечность данных» и почему это невозможно с помощью Prometheus?
Ответ №1:
Это дизайнерское решение, и оно в основном связано с объемом проекта/инструмента. Первоначальные авторы в контексте своего варианта использования в SoundCloud решили не создавать распределенный уровень хранения данных, а упростить задачу.
Другими словами: Prometheus заполнит диск, но не будет разделять или копировать данные для вас. Теперь, если у вас есть много различных сред, которые вы хотите отслеживать, создавая сотни тысяч временных рядов и миллионы показателей, это не будет масштабироваться (локальные диски слишком малы, и решение на основе NFS теперь может быть тем, что вам нужно). Таким образом, существуют различные решения, позволяющие объединять и/или дедуплицировать показатели из разных сред.
Здесь важно помнить, что это не недостаток Prometheus, а сознательное решение сосредоточиться на чем-то одном и делать это действительно хорошо и со временем разрабатывать API ( remote_write
и remote_read
), которые позволяют другим создавать системы, ориентированные на распределенный/масштабный вариант использования.