包括NaN值的普罗米修斯直方图和平均集

Bre*_*ent 1 grafana prometheus

在我的应用程序中,我为每个国家的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])
Run Code Online (Sandbox Code Playgroud)

这非常有效.我得到了每个国家的图表.现在我想在同一个图表中添加所有其他国家/地区的平均值.

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]))
Run Code Online (Sandbox Code Playgroud)

这失败了.当我在Prometheus控制台中的Prometheus查询中尝试查询时,我得到一个NaN值.如果我采用相同的查询并删除avg()函数,那么我会获得每个匹配国家/地区的列表,其中一些具有值,一些具有NaN.许多国家的金额和金额均为0.显然,那些划分为0的那些特定国家的NaN相当于NaN.

所以我的问题是,如何在传递给avg()之前过滤出NaN值?

bri*_*zil 6

你有效地取平均值,这通常是不正确的.

相反,做一个sumrate,然后除以得到整体平均.