tsdb 工具可以针对 Prometheus 的整个数据库或仅针对特定数据块运行,并输出有关该数据健康状况的有用信息。要运行此工具,我们必须确保 Prometheus 服务器已停止:
我们将运行针对 Prometheus 数据库路径的 tsdb 工具。为简洁起见,我们将每个部分的输出限制为三个条目。如果没有将块名称指定为参数,则将使用最后一个可用的名称:
输出分为几个部分。在标题中,我们可以找到该块的摘要,包括以下内容:
- Its full path location
- The block duration span, which, in standard Prometheus deployments defaults to two hours
- The number of series and label names contained in the block
- Statistics regarding the number of index entries
在这里,我们可以看到上一条指令生成的输出:
虽然流失在我们的测试环境中并不是真正的问题,但我们可以看到检测到哪些标签对与产生流失的关联度最高:
接下来,我们可以找到流失率最高的标签名称:
在标签名称流失之后,我们会看到最常见的标签对:
最后,我们到达高基数部分,从标签开始:
__name__ 是存储度量名称的内部标签,因此在一个健康的 Prometheus 系统中,它被视为具有最高基数的标签是正常的。请记住,这并不意味着指标名称不能被错误地用作标签(例如,使用 ID 为指标名称添加后缀),因此请务必注意基数的突然增加。
最后,我们找到有关指标名称的统计信息:
The preceding statistics are collected from a two hour block. This, however, can also be queried for a given moment via the expression browser using a query similar to
topk(3, count({__name__=~".+"}) by (__name__)).
如前所述,您可以选择不同的块进行分析:
tsdb 报告的好处在于,它可以更深入地了解指标和标签的使用方式,并针对其目标确定要探索和验证的优秀候选者。