我想问一下,Prometheus不是说不能做持久化存储,好像只能15天;如果想持久化,需要引入influxdb。
prometheus直接对接influxdb网上有很多,但是应该不是每个数据需要持久化吧,我如何过滤出来一些数据持久化到influxdb呢?

如何从Prometheus单独提取个别数据持久化到influxdb
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- hachi!! 2023-03-15 20:31关注
可以使用prometheus的Recording规则来过滤出需要持久化的数据,并将其写入到influxdb中。Recording规则是一组prometheus的查询和转换操作,它们可以在prometheus服务器上预先计算和存储指标数据。
以下是一个Recording规则的例子,可以将所有以"api_"为前缀的指标数据持久化到influxdb中:
groups: - name: api_metrics rules: - record: api_requests_total expr: sum(rate(api_requests_total[5m])) by (endpoint) - record: api_response_time expr: avg(api_request_duration_seconds) by (endpoint) - record: api_errors_total expr: sum(rate(api_errors_total[5m])) by (endpoint) - record: api_p95 expr: histogram_quantile(0.95, sum(rate(api_request_duration_seconds_bucket[5m])) by (le, endpoint)) - record: api_p99 expr: histogram_quantile(0.99, sum(rate(api_request_duration_seconds_bucket[5m])) by (le, endpoint)) - record: api_perf_score expr: 100 - (api_p99 * 10) - (api_p95 * 5) + (api_requests_total / 1000) - record: api_data_size expr: sum(rate(api_response_size_bytes[5m])) by (endpoint) # Send to InfluxDB - name: influxdb rules: - type: influxdb database: mydb retention_policy: default endpoint: http://influxdb:8086 measurement: api_metrics match: prefix: api_
在这个Recording规则中,我们使用了prometheus的sum、avg、histogram_quantile等函数对api指标进行计算,并给它们定义了对应的metric名称。然后,我们通过match规则选择了所有前缀为"api_"的指标,并将它们写入到influxdb的名为"mydb"的数据库中。
需要注意的是,在prometheus的配置文件prometheus.yml中需要指定你的Recording规则的
解决 无用评论 打赏 举报