0

以下の形式で、logstash からのアプリケーション ログがあります。

{
"Timestamp": "2015-09-09T10:54:57.4562725+00:00",
"Message": "Started processing",
"MessageId": "b80fb2aa-4b7b-4f49-9e60-865c6afa688e",
"ClientName": "TestClient"

}

{
"Timestamp": "2015-09-09T10:55:57.4562725+00:00",
"Message": "Done processing",
"MessageId": "b80fb2aa-4b7b-4f49-9e60-865c6afa688e",
"ClientName": "TestClient"

}

{
"Timestamp": "2015-09-09T10:55:57.4562727+00:00",
"Message": "Time Elapsed: 561 ms",
"MessageId": "b80fb2aa-4b7b-4f49-9e60-865c6afa688e",
"ClientName": "TestClient"

}

私が達成しようとしているのは、平均処理時間を取得することです (同じ MessageId で行われたすべてのログ記録は、1 つの処理サイクルの一部です)。

すべてのトランザクションの最後のログには処理時間があります (上記のように: "メッセージ": "経過時間: 561 ミリ秒")。どうすれば平均を取得できますか? 何か案は?

4

1 に答える 1

0

grok フィルターを使用して "Time Elapsed" を含むメッセージのミリ秒を抽出し、それをメトリック フィルターに渡す必要があります。%{processingTime.mean}フィルターまたは出力で使用できる変数を取得します。何かのようなもの:

filter {
  grok {
    match => { "Message" => "Time Elapsed: %{INT:processingTime} ms" }
    add_tag => [ "has_processingTime" ]
  }
  if "has_processingTime" in [tags] {
    metrics {
      timer => [ "processingTime", "%processingTime" ]
      add_tag => "metric"
    }
  }
}

さらに、最小、最大、パーセンタイル、レートなど、他の興味深い指標も取得できます。https://www.elastic.co/guide/en/logstash/current/plugins-filters-metrics.htmlを参照してください。

于 2015-09-25T22:05:34.047 に答える