web-dev-qa-db-ja.com

Logstashイベント@timestamp調整

標準の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が認識する時間文字列に戻すにはどうすればよいですか?または、日付/時刻のエンコーディングを壊さずに日付/時刻の計算を行うにはどうすればよいですか?前もって感謝します。

3
Guy

タイムスタンプを使用して新しい時間オブジェクトを作成し、このようにかかった時間を差し引くことができます

Time.new(event['@timestamp_adj']) - (event['timetaken'] / 1000)
1
elpic