標準のWindows IISログファイルに、イベントの日付/タイムスタンプ情報と所要時間(ミリ秒単位)が含まれています。
「timetaken」を差し引いてイベント時間(@timestamp)を調整し、イベントが完了したときではなく、開始したときに記録できるようにしたいと思います。
Rubyプラグインを使用することを検討しましたが、私のRuby知識はゼロです。
私の最初の試みはこれです:
Ruby {
code => "event['@timestamp_adj'] = (event['@timestamp'].to_f - (event['timetaken'].to_f/1000)))"
}
ただし、これによりタイムスタンプが数値にキャストされます。どのようにしてタイムスタンプを日付に戻すことができますか?
いくつかのサンプル日付:(機密データの編集とマングル付き)
{
"@timestamp" => "2015-10-22T22:59:49.000Z",
"timestamp" => "2015-10-22 23:59:49",
"method" => "GET",
"page" => "/spacer.gif",
"response" => "200",
"timetaken" => "2120",
"@timestamp_adj" => 1445554789.0
}
この(構成された)ケースでは、イベント時間は22:59:49.000であり、完了するまでに2.120秒(2,120ミリ秒)かかりました。私が欲しいのは22:59:48.880を記録する@timestamp_adjです
どちらか:
現在「数値」のタイムスタンプをElasticsearchが認識する時間文字列に戻すにはどうすればよいですか?または、日付/時刻のエンコーディングを壊さずに日付/時刻の計算を行うにはどうすればよいですか?前もって感謝します。
タイムスタンプを使用して新しい時間オブジェクトを作成し、このようにかかった時間を差し引くことができます
Time.new(event['@timestamp_adj']) - (event['timetaken'] / 1000)