【Prometheus】了解你的Prometheus指标

简单Prometheus查询用于指标检查
作者:Michal Kazmierczak
来源:mkaz.me

基数是关键。 它很容易失控,就像任何组合爆炸的实例一样。

这,再加上90%的指标从未被访问过的说法,创造了一个值得探索的领域。

观察性云供应商 已经提供了允许检查未使用数据并最终降低成本的工具。但是,当你没有访问这些工具的时候(即当你运行自己的Prometheus服务器时),你如何了解你的指标?

本文提出了一组简单的查询,允许检测到重指标。为了更好地说明结果,还有Grafana仪表板的提议。仪表板可以在下面的截图中看到。

在这里插入图片描述


目录

  1. 简短的理论介绍
  2. 查询
    • 2.1. 所有系列的计数
    • 2.2. 所有指标的计数
    • 2.3. 所有工作的计数
    • 2.4. 每个指标的系列计数
    • 2.5. 每个工作的系列计数
  3. Grafana仪表板

1. 简短的理论介绍

简而言之,标签的基数是观察到的不同值的数量。一个指标的基数是观察到的所有标签值组合的数量。在最坏的情况下,它是所有标签基数的乘积。

一个很好的例子是一个计数HTTP请求的指标,具有pathmethodresponse_code标签。让我们考虑一个场景,观察到五个路径,三种方法和三种响应代码。然后,基数是5 * 3 * 3 = 45

如果我们决定做一个微妙的改变,将这个计数器变成直方图(有12个桶),不久我们的指标基数可能会增长到45 * 12 = 540

注意,在运行查询时,重要的是运行一个即时查询,而不是范围查询,因为对于本文的目的,最后一个记录的值就足够了 - 我们对随时间的变化不感兴趣。查询范围查询可能会非常慢。

让我们不再赘述,深入细节。

在这里插入图片描述

2.1. 所有系列的计数

首先,让我们获取总的系列数。这是所有唯一标签组合的计数(包括__name__标签)。

count({__name__!=""})

这个查询依赖于一个简单的规则:Prometheus查询语言(PromQL)要求提供一个指标名称或至少一个标签匹配器。__name__是添加到每个指标的内部标签,其值为指标名称。由于指标名称不能为空,所以!=""表达式选择了所有指标。

这个强大的概念将在后续查询中重复使用。

2.2. 所有指标的计数

现在,让我们检查我们的Prometheus实例维护了多少指标。

count(count({__name__!=""}) by (__name__))

没什么不寻常的,这只是将前面的查询按__name__分组并计数。

2.3. 所有工作的计数

类似地,让我们检查产生指标的工作数量。

count(count({__name__!=""}) by (job))

这是前一个查询的相同角度 - 按job标签分组。

2.4. 每个指标的系列计数

现在让我们更深入一些,查看更详细的数据。

sort_desc(
    count({__name__!=""}) by (__name__)
)

这个查询输出每个指标的系列数。它有助于发现具有高基数的指标。使用sort_desc我们可以在顶部看到最有趣的结果。

2.5. 每个工作的系列计数

同样,让我们将分组更改为job

sort_desc(
    count({__name__!=""}) by (job)
)

输出显示每个工作的工作数。它可能揭示出某个工作(非常经常代表一个单独的抓取目标)正在产生不成比例的多的系列。

3. Grafana仪表板

盯着仪表板看是有趣的。因此,我忍不住基于上述查询构建了一个仪表板。除了上述数字,它还有更多的伴随计算,比如一个指标在所有系列中所占的百分比。在这里查看。


  1. “Lightstep已经研究了客户,特别是对于指标(…) - 每十个指标中就有一个被查询过任何目的。” Ben Sigelman,Lightstep的CEO,在OpenObservability Talks上说,链接
  2. 如果你是Grafana Cloud的满意用户,请查看基数管理仪表板。
  3. 也有仪表板的Gist作为备份,链接

请注意,以上翻译可能不完全精确,因为专业术语和上下文的准确性需要专业知识。如果你需要更专业的翻译或对某些术语有特定疑问,请咨询相关领域的专家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值