ネットワークインターフェースやブロックデバイスの使用状況を計算する時などで、「一つ前のイベントとの差」を取得したい時がある。
その場合、streamstats
を使うのが定石である:
| streamstats current=false last(value1) as last_value1 | eval diff=value1-last_value1
が、実はSplunkでは、 検索対象となっているイベントが時間でソートされていることは保証されない ので、場合によっては、上記のクエリでは期待した差分を取れないことがある。
なので、streamstats
を使う前には_time
などで明示的にソートしておくと:
| sort _time | streamstats current=f last(value1) as last_value1 | eval ...
常に期待した差分をとることができる。