リクエストIDごとに、処理にかかった時間を集計する
以下のような前提のログで、リクエストIDごとに処理時間を求めます。
リクエストごとの処理時間をログ側で出力していない(出力していれば楽なのですが)
リクエスト開始時と終了時にそれぞれログを出力している
以下のログ例のようにリクエストIDとログ内容を出力している
ログ例
(request-id-1) start.
(request-id-1) success.
(request-id-2) start.
fields @timestamp, @message
| PARSE @message "(*) *" as requestID, message
| filter requestID in ["request-id-1", "request-id-2", "request-id-3"]
| stats earliest(@timestamp) as startTime, latest(@timestamp) as endTime by requestID
| display requestID, abs(endTime - startTime)
やっていることとしては以下の通りです。
1.parseで@messageからリクエストIDを抜き出す
2.リクエストIDごとに、最も早いログイベントのタイムスタンプ (=startTime)、最も遅いログイベントのタイムスタンプ(=endTime)を集計する
3.リクエストIDと、処理時間(endTime-startTime)を表示する