count({__name__=~".+"})
怎么样?
它会返回数据库中时间序列的数量。我通过手动抓取与每个目标当前公开的指标数量进行了比较,结果相差不超过10%。我猜这个差异是由于我过去拥有的一些目标现在已经离线造成的。
prometheus_tsdb_head_series
只是因为我总是忘记,不得不去谷歌这个问题,并且这个问题在最前面。根据this answer的说法,prometheus_tsdb_head_series
和count({__name__=~".+"})
之间可能会有差异,因为它们对"活动"的定义有所不同,但除非您的指标计数变化很大,否则我建议使用prometheus_tsdb_head_series
,因为如果您有很多指标,查询速度会快得多。
prometheus_agent_active_series
的指标。 - Lirthttps://prometheusui.com:9090/status ---> 头部统计 --> 这将为您提供完整的状态。
经过进一步的研究和感谢David.B的评论,我找到了一个对我有效的解决方案 ™
为了找到Prometheus存储的时间序列数量,我在storage.local.path
文件夹中使用以下命令:
ls -l {{0..9},{a..f}}{{0..9},{a..f}} | grep -E "*.db$" | wc -l
此外,在prometheus文档中我还发现了一些指标,这些指标在处理内存问题/优化时可能会有所帮助。
这可能不是最复杂的方法,但它给出了我所需要的数字。
count({name=~".+"})
给出的数字比prometheus_local_storage_memory_series
给出的数字要小。
在我的情况下,count
给出的是3k,而prometheus_local_storage_memory_series
给出的是130k。我本来期望内存中的时间序列数量应该等于或小于总时间序列数量,而不是相反。上面的版本(ls -l {{0..9},{a..f}}{{0..9},{a..f}} | grep -E "*.db$" | wc -l
)告诉我我有527k个时间序列。 - Tobias Wiesenthalcount({__name__=~".+"})
会给你想要的数字。 - KEB
storage.local.path
标志指定。你有没有研究过这个? - David B.