当前,我正在使用Prometheus并获得良好的结果,我面临的困难是,如果服务重新启动,我的所有旧数据将丢失。有什么方法可以将Prometheus数据永久存储在mysql或PostgreSQL等数据库中?
答案 0 :(得分:3)
您不能将Prometheus数据直接写入关系数据库(或与此相关的任何数据库)。您有两种选择:
信息可以在Prometheus docs上找到。
答案 1 :(得分:1)
https://blog.timescale.com/prometheus-ha-postgresql-8de68d19b6f5
答案 2 :(得分:1)
InfluxDB是另一种选择:
https://www.influxdata.com/blog/influxdb-now-supports-prometheus-remote-read-write-natively/
只需在Prometheus配置中配置remote_write和remote_read,就可以开始了:
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'
答案 3 :(得分:0)
像MySQL和PostgreSQL这样的传统数据库并未针对Prometheus收集的时间序列数据进行优化。存在更好的解决方案,它们需要更少的存储空间,并且插入和选择操作都更快。
Prometheus支持remote storage。启用后,它将所有新数据存储在本地存储和远程存储中。远程存储数据库存在多种选择,需要进行各种折衷。我建议尝试VictoriaMetrics。它本身支持Prometheus的查询语言-PromQL,因此可以很容易地用作Grafana中的Prometheus数据源。