在我的应用程序中,我为每个国家的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值?
答案 0 :(得分:6)
你有效地取平均值,这通常是不正确的。
而是每个sum
执行rate
,然后除以得到总体平均值。