Есть ли способ сохранить данные Prometheus во внешней базе данных, как MySQL или PostgreSQL
В настоящее время я работаю с Prometheus и получаю хороший результат, но я сталкиваюсь с трудностью в том, что при перезапуске службы все мои старые данные будут потеряны. Есть ли способ постоянно хранить данные Prometheus в базах данных, таких как MySQL или PostgreSQL?
2 ответа
Теперь поддержка PostgreSQL для Prometheus здесь
https://blog.timescale.com/prometheus-ha-postgresql-8de68d19b6f5
Вы не можете записывать данные Prometheus напрямую в реляционную базу данных (или любую другую базу данных). У вас есть два варианта:
- подключите внешний диск к вашей машине и настройте Prometheus для записи данных в любое место для подключения
- Напишите крошечный веб-скрипт, который переводит формат экспорта Prometheus в любой формат хранения, который вы хотите. Затем настройте Prometheus для отправки данных в веб-скрипт.
Информация может быть найдена на Prometheus docs.
Традиционные базы данных, такие как MySQL и PostgreSQL, не оптимизированы для данных временных рядов, которые собирает Прометей. Существуют лучшие решения, которые требуют меньше места для хранения и работают быстрее как со вставками, так и с выборками.
Прометей поддерживает удаленное хранение. При включении он сохраняет все новые данные как в локальном хранилище, так и в удаленном хранилище. Существует несколько вариантов для удаленной базы данных с различными компромиссами. Я бы порекомендовал попробовать VictoriaMetrics. Он изначально поддерживает язык запросов Prometheus - PromQL, поэтому его легко использовать в качестве источника данных Prometheus в Grafana.
InfluxDB - еще один вариант:
https://www.influxdata.com/blog/influxdb-now-supports-prometheus-remote-read-write-natively/
Просто настройте remote_write и remote_read в конфигурации Prometheus, и вы готовы к работе:
remote_write:
- url: 'http://{YOUR_INFLUX-DB}:{YOUR_INFLUX-DB_PORT}/api/v1/prom/write?db=metrics'
remote_read:
- url: 'http://{YOUR_INFLUX-DB}:{YOUR_INFLUX-DB_PORT}/api/v1/prom/read?db=metrics'