2016-12-13 5 views
1

私のアプリでは、各国のWebSocket ping時間のヒストグラム設定があり、国ごとのヒストグラムが1つあります。 Grafanaでは私はこれは完全にうまく機能し、次のクエリPrometheusのヒストグラムとNaN値を含む平均化セット

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]) 

経由で最も興味があるいくつかの国の平均ping時間のグラフを持っています。私は各国のグラフを取得します。今私は同じグラフに、他のすべての国の平均を1つにまとめたいと考えています。

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値をフィルタリングできますか?

答えて

4

あなたは効果的に平均を取っていますが、これは一般的には正しくありません。

ratesumを実行し、次に分けて全体平均を取得します。

+0

それはそれでした!クイック応答ブライアンありがとう! – Brent

関連する問題