繁体   English   中英

Grafana 查询不同的标签数

[英]Grafana query for distinct labels number

对于带有 label ticker收报机的请求,我有普罗米修斯计数器input_requests

{ticker: TSLA},
{ticker: AAPL},
{ticker: TSLA},
{ticker: META},

我想在每个时间段内制作带有唯一标签编号的图表,例如 1 分钟。

count(changes(input_requests[1m]))

以下 PromQL 查询应返回 label ticker在最后一分钟的唯一值的数量:

count(
  count(last_over_time(input_requests[1m])) by (ticker)
)

此查询按以下方式工作:

  1. 内部的last_over_time(input_requests[1m])返回每个时间序列在最后一分钟内具有input_requests名称的最后一个值。 请参阅last_over_time() 文档

  2. 然后内部count(...) by (ticker)返回步骤 1 中每个唯一ticker值分组的唯一时间序列的数量。 请参阅count() 文档

  3. 然后外部count()返回从步骤 2 返回的系列数。这实际上是最后一分钟看到的唯一ticker值的数量。

请注意,如果在 Grafana 中使用查询,则上面的查询是针对图表上的每个点独立计算的,例如,它返回图表上每个点结束的最后一分钟内唯一ticker值的数量。 如果要获取每分钟步长的图表,则存在以下选项:

  1. 将图形设置中的min step设置为1m (例如一分钟)。
  2. 通过以下方式使用Prometheus 子查询
last_over_time(
  count(
    count(last_over_time(input_requests[1m] offset -1m)) by (ticker)
  )[1m:1m]
)

它将原始查询转换为子查询,子查询以 1 分钟为步长计算,然后外层last_over_time(...[1m:1m])返回一个以 1 分钟为步长的图。 该查询添加负偏移量以显示每给定分钟看到的ticker值的数量。 如果未设置offset ,则查询将在图表上每 1 分钟步长显示前一分钟的ticker值数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM