はい、Splunkでこれを行うにはいくつかの方法があり、それぞれが容易さと拡張性の程度が異なります。サブ検索方法を順を追って説明します。
1)-1d@dから@dまでの期間のすべてのユーザーIDをキャプチャします
最初に、IDのリストのみを返す検索を検証し、それがサブ検索に変換されます。
sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id
2)各ユーザーについて、インデックスの先頭から-1d @ dまで検索し、実際のIDフィールドを比較してユーザーIDがすでに存在するかどうかを確認します
(1)のサブ検索を使用してそれらのIDと照合するのとは異なる時間枠でメイン検索を作成します(サブ検索はで始まる必要があることに注意してくださいsearch)。
sourcetype=<MY_SOURCETYPE> [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d
これにより、インデックスの開始から(1)のIDを含む1d@dまでのすべてのイベントの生のデータセットが返されます。
3)存在しない場合は、カウンターに追加します
サブ検索全体に対してを使用してその検索をNOT修正し、外側の検索をパイプ処理して、stats一致したIDを確認します。
sourcetype=<MY_SOURCETYPE> NOT [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d | stats values(id)
4)この最終カウントを表示します。
最後のstatsコマンドを修正して、代わりに個別のカウント数を返します。
sourcetype=<MY_SOURCETYPE> NOT [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d | stats dc(id)
パフォーマンスに関する考慮事項:
上記の方法は、コモディティハードウェア上の100万行未満のデータセットに対して適切に機能します。問題は、サブ検索がブロックされているため、外部検索が待機する必要があることです。処理するデータセットが大きい場合は、これを効率的に検索するために別の方法を採用する必要があります。
参考までに、Splunkには、このような質問への回答をはるかに迅速に取得できる専用サイトがあります:http ://splunk-base.splunk.com/answers/