内容提要
在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用于定期删除无用标签。