Prometheus 2.7 の新しいサブクエリ機能は、一つのクエリでその可能性があります。
直近1時間のデータ受信量が、5分間の平均で1Mb/sを超えていた時間を知りたいでしょう。
bits/second で、5分間の平均使用量を取得する。
rate(node_network_receive_bytes_total[5m]) * 8
bool を使用して、値が大きいか小さいかに基づいて、0から1へ変更できます。
rate(node_network_receive_bytes_total[5m]) * 8 > bool 1000000
これまでは、記録ルールを作成するには次の行に進んでいました。
しかし、サブクエリはすることができます。
(rate(node_network_receive_bytes_total[5m]) * 8 > bool 1000000)[1h:]
1時間のRange Vector(範囲ベクトル)を取得するために計算できます。
通常は、「avg_over_time」を使用します。
avg_over_time((rate(node_network_receive_bytes_total[5m]) * 8 > bool 1000000)[1h:])
これは、アドホックに使用できます。
しかし、ルールで通常時に使用すると、サブクエリよりも記録ルールを使うほうが適切です。
サブクエリ結果の1時間の値を出すために、全間隔毎に再計算をすることを避けることができます。
Originalの意訳元:https://www.robustperception.io/how-much-of-the-time-is-my-network-usage-over-a-certain-amount