4

目前我正在使用 Prometheus 并获得了很好的结果,我面临的困难是如果服务重新启动,我的整个旧数据都会丢失。有没有办法将 Prometheus 数据永久存储在 mysql 或 PostgreSQL 等数据库中?

4

4 回答 4

4

您不能将 Prometheus 数据直接写入关系数据库(或任何数据库)。你有两个选择:

  1. 在您的机器上挂载一个外部磁盘并配置 Prometheus 将数据写入该挂载位置的任何位置
  2. 编写一个小型 Web 脚本,将 Prometheus 导出格式转换为您想要的任何存储格式。然后配置 Prometheus 将数据发送到 web 脚本。

可以在Prometheus 文档中找到信息。

于 2018-07-19T20:00:50.523 回答
3

现在 PostgreSQL 在这里支持 Prometheus

https://blog.timescale.com/prometheus-ha-postgresql-8de68d19b6f5

于 2019-01-15T04:41:22.083 回答
3

MySQL 和 PostgreSQL 等传统数据库并未针对 Prometheus 收集的时间序列数据进行优化。存在更好的解决方案,它们需要更少的存储空间,并且在插入和选择方面工作得更快。

Prometheus 支持远程存储。启用后,它将所有新数据存储在本地存储和远程存储中。远程存储数据库有多种选择,需要权衡取舍。我建议尝试VictoriaMetrics。它原生支持 Prometheus 的查询语言——PromQL,因此可以很容易地用作 Grafana 中的 Prometheus 数据源。

于 2018-10-29T09:46:09.400 回答
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'
于 2020-03-13T15:41:24.357 回答