もっと包括的なタイトルの方が良い気がしますが、初期衝動でそのままにします。
通常、平均値(avg)や中央値(median)を単純に得るには、statsコマンドを使うと思います。
しかし、今回私がやりたかったのは、
「得られたそれらの値と元の値とを比較した結果で絞りたい」というものでした。
ここで利用するのがeventstatsコマンドです。
eventstatsで平均値や中央値を出すと、
それらの値がそれぞれのイベントに紐付くので、あとから比較処理ができます。
whereコマンドで比較後に、countコマンドで再集計してミッションコンプリートです。
index=main host=web_application
| eventstats median(bytes) AS med
| table bytes, med
| where bytes >= med
| stats count
※ tableコマンドは本来不要ですが、後述時の視覚化のために記述してあります。
#参考にしたサイト
#上記コマンド 各フェイズの結果対応
###1行目
index=main host=web_application
###2行目(eventstats)
index=main host=web_application
| eventstats median(bytes) AS med
statsコマンドを使用した時と違いますね。(その分、処理はeventstatsの方が重いです。)
###3行目
index=main host=web_application
| eventstats median(bytes) AS med
| table bytes, med
一応、次の項のために、bytesフィールドを昇順ソートしときました。
###4行目(元の値と統計値を各イベントごとに比較)
index=main host=web_application
| eventstats median(bytes) AS med
| table bytes, med
| where bytes >= med
###5行目(改めて数える)
index=main host=web_application
| eventstats median(bytes) AS med
| table bytes, med
| where bytes >= med
| stats count
#20210306追記(上記をグループ別に実施することも可能)
言われてみれば何てことないですが、きっとそういうことやりたい人も居るよね?
index=main host=web_application
| eventstats median(bytes) AS med by categoryId
↑↓ 一致してますよね
(8グループ。各グループごとの中央値が、所属するイベントに各々紐付けられました。)
#更に次へ
@odorusatoshi さんの記事。面白いぞ