Prometheus 直方图和包含 NaN 值的平均值集
Prometheus histograms and averaging sets with NaN values included
在我的应用程序中,我为每个国家/地区的 websocket ping 时间设置了直方图,每个国家/地区一个直方图。在 Grafana 中,我通过以下查询得到了几个我最感兴趣的国家/地区的平均 ping 时间图
rate(country_ping_sum{country=~"AU|NZ|CA|GB|US",instance="$instance"}[15m]) / rate(country_ping_count{country=~"AU|NZ|CA|GB|US",instance="$instance"}[15m])
这非常有效。我得到每个国家的图表。现在我想将所有其他国家/地区的平均值加到同一个图表中。
avg(rate(country_ping_sum{country!~"AU|NZ|CA|GB|US",instance="$instance"}[15m]) / rate(country_ping_count{country!~"AU|NZ|CA|GB|US",instance="$instance"}[15m]))
这失败了。当我在 Prometheus 控制台的 Prometheus 查询中尝试查询时,我得到一个 NaN 值。如果我采用相同的查询并删除 avg() 函数,那么我会得到每个匹配国家/地区的列表,其中一些有值,一些有 NaN。许多国家的总和和计数均为 0。显然,对于那些特定国家/地区,这些除以 0 等于 NaN。
所以我的问题是,如何在传递给 avg() 之前过滤掉 NaN 值?
您实际上是在取平均值,这通常是不正确的。
而是对每个 rate
做一个 sum
,然后除以得到总平均值。
在我的应用程序中,我为每个国家/地区的 websocket ping 时间设置了直方图,每个国家/地区一个直方图。在 Grafana 中,我通过以下查询得到了几个我最感兴趣的国家/地区的平均 ping 时间图
rate(country_ping_sum{country=~"AU|NZ|CA|GB|US",instance="$instance"}[15m]) / rate(country_ping_count{country=~"AU|NZ|CA|GB|US",instance="$instance"}[15m])
这非常有效。我得到每个国家的图表。现在我想将所有其他国家/地区的平均值加到同一个图表中。
avg(rate(country_ping_sum{country!~"AU|NZ|CA|GB|US",instance="$instance"}[15m]) / rate(country_ping_count{country!~"AU|NZ|CA|GB|US",instance="$instance"}[15m]))
这失败了。当我在 Prometheus 控制台的 Prometheus 查询中尝试查询时,我得到一个 NaN 值。如果我采用相同的查询并删除 avg() 函数,那么我会得到每个匹配国家/地区的列表,其中一些有值,一些有 NaN。许多国家的总和和计数均为 0。显然,对于那些特定国家/地区,这些除以 0 等于 NaN。
所以我的问题是,如何在传递给 avg() 之前过滤掉 NaN 值?
您实际上是在取平均值,这通常是不正确的。
而是对每个 rate
做一个 sum
,然后除以得到总平均值。