2017-07-20 11 views
1

時間範囲内で特定のメトリックが非ゼロである時間のパーセンテージを計算したいと思います。私はプロメテウス:時間の経過とともに単一値の割合を計算する方法

count_over_time(my_metric[1m])

を使用して、その時間範囲内の値の数を取得することができます知っているが、私は希望して、私はbinary expression must contain only scalar and instant vector typesので、これを行うことはできません

count_over_time(my_metric[1m] != 0)/count_over_time(my_metric)

のようなものです。

私は何をしようとしていますか?

答えて

2

値が0または1のみの場合は、avg_over_timeを使用できます。

、それは他の値を持つことができるならば、あなたは記録ルールを経由して0または1に変換する必要があります。

my_metric_nonzero = my_metric != bool 0 

そして、あなたはavg_over_time(my_metric[1m])

参照を行うことができますもhttps://www.robustperception.io/composing-range-vector-functions-in-promql/

+0

感謝それは完璧に動作します。興味のないところでは、なぜ私はこの記録されたメトリックの範囲を取ることができますが、クエリでインラインではできません: 'avg_over_time((my_metric!= bool 0)[1m])'? – thehouse

+0

'my_metric!= bool 0'は、' [1m] 'の範囲が適用できない現在のデータに基づくインスタントベクタを返します。 –

関連する問題