史蒂文·米勒:Tembo Cloud 如何在 PostgreSQL 中存储 Prometheus 指标数据

史蒂文·米勒:Tembo Cloud 如何在 PostgreSQL 中存储 Prometheus 指标数据

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

在Tembo Cloud上,可以通过Good或Error图标查看数据库的状态。使用Prometheus收集实例指标数据,并将其存储在PostgreSQL中。为了高效地管理指标数据的基数,可以通过聚合数据来减少唯一标签集的数量。通过分区和定期删除无用标签,可以提高查询效率。使用pg_partman和pg_cron可以自动管理分区和删除无用标签。Tembo最近发布了Time Series Stack,可以更高效地存储和处理时间序列数据。计划将该系统迁移到Time Series Stack。

🔎

延伸解读

基数控制的实际取舍

文章以 failed_queries 指标为例,说明 database 标签可能导致基数爆炸。Tembo 的简化模型只保留 metric name 和 instance_id,牺牲了按数据库维度的细粒度分析,以换取查询效率。读者需注意:这种聚合方式适用于应用只关心实例级状态的场景,若业务需要下钻到具体数据库,则需重新评估。

分区与清理的自动化配置

文章给出了具体配置:metric_values 按时间范围分区,pg_partman 设置保留 90 天并自动删除旧分区;pg_cron 每天 8 点执行 delete_unused_metric_labels 函数,清理不再被引用的标签。这种组合能控制表膨胀,但删除操作可能带来锁竞争,需根据负载调整执行时间。

从自建模型到 Time Series Stack 的演进

当前基于两张表加分区和定时任务的方案,在数据量增大和查询复杂后,会缺少压缩、长期保留和分析函数等能力。Tembo 已发布 Time Series Stack,并计划将系统迁移过去。读者可关注迁移后如何利用 Postgres 扩展获得更完整的时间序列功能,但迁移细节尚未公开。

❓

Q&A

Tembo Cloud如何查看数据库状态?

在Tembo Cloud上,可以通过Good或Error图标查看数据库的状态。

如何在PostgreSQL中存储Prometheus的指标数据?

可以通过创建metrics_labels和metrics_values两个表来存储Prometheus的指标数据。

如何提高PostgreSQL中指标数据的查询效率?

通过分区和定期删除无用标签可以提高查询效率。

什么是指标数据的基数,如何管理它?

基数是指给定指标可能有的不同标签集的数量,可以通过聚合数据来减少基数。

Tembo最近发布了什么新功能?

Tembo最近发布了Time Series Stack,以更高效地存储和处理时间序列数据。

如何使用pg_partman和pg_cron管理PostgreSQL中的数据?

pg_partman用于自动管理分区,pg_cron用于定期删除无用标签。

🏷️

标签

➡️

继续阅读