有什么方法可以将Prometheus数据存储到外部数据库,例如mysql或postgreSQL

时间:2018-07-16 13:49:31

标签: mysql database postgresql prometheus prometheus-operator

当前,我正在使用Prometheus并获得良好的结果,我面临的困难是,如果服务重新启动,我的所有旧数据将丢失。有什么方法可以将Prometheus数据永久存储在mysql或PostgreSQL等数据库中?

4 个答案:

答案 0 :(得分:3)

您不能将Prometheus数据直接写入关系数据库(或与此相关的任何数据库)。您有两种选择:

  1. 在计算机上安装外部磁盘,并配置Prometheus将数据写入到该安装位置所在的任何位置
  2. 编写一个微型Web脚本,将Prometheus导出格式转换为所需的任何存储格式。然后配置Prometheus将数据发送到Web脚本。

信息可以在Prometheus docs上找到。

答案 1 :(得分:1)

答案 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数据源。