0

私はlogstash-logback-encoderJavaログファイルをlogstashに送信してからelasticsearchに送信していました。in Java ログを解析するにはmessage、次のフィルターを使用してメッセージを分析します

input {
  file {
    path => "/Users/MacBook-201965/Work/java/logs/oauth-logstash.log"
    start_position => "beginning"
    codec => "json"
  }
}

filter {
  if "EXECUTION_TIME" in [tags] {
    dissect {
      mapping => {
        "message" => "%{endpoint} timeMillis:[%{execution_time_millis}] data:%{additional_data}"
      }
    }
    mutate {
      convert => { "execution_time_millis" => "integer" }
    }
  }
}

output {
  elasticsearch { 
     hosts => "localhost:9200"
     index => "elk-%{+YYYY}"
     document_type => "log"
  }

  stdout {
    codec => json
  }
}

の値を取得できるように、メッセージを分析しますexecution_time_millis。ただし、データ型は文字列です。Kibana インデックス パターンを使用してインデックスを作成しました。execution_time_millisデータ型を longに変更するにはどうすればよいですか?

logback からのサンプル json メッセージを次に示します。

{  
   "message":"/tests/{id} timeMillis:[142] data:2282||0:0:0:0:0:0:0:1",
   "logger_name":"com.timpamungkas.oauth.client.controller.ElkController",
   "level_value":20000,
   "endpoint":"/tests/{id}",
   "execution_time_millis":"142",
   "@version":1,
   "host":"macbook201965s-MacBook-Air.local",
   "thread_name":"http-nio-8080-exec-7",
   "path":"/Users/MacBook-201965/Work/java/logs/oauth-logstash.log",
   "@timestamp":"2018-01-04T11:20:20.100Z",
   "level":"INFO",
   "tags":[  
      "EXECUTION_TIME"
   ],
   "additional_data":"2282||0:0:0:0:0:0:0:1"
}{  
   "message":"/tests/{id} timeMillis:[110] data:2280||0:0:0:0:0:0:0:1",
   "logger_name":"com.timpamungkas.oauth.client.controller.ElkController",
   "level_value":20000,
   "endpoint":"/tests/{id}",
   "execution_time_millis":"110",
   "@version":1,
   "host":"macbook201965s-MacBook-Air.local",
   "thread_name":"http-nio-8080-exec-5",
   "path":"/Users/MacBook-201965/Work/java/logs/oauth-logstash.log",
   "@timestamp":"2018-01-04T11:20:19.780Z",
   "level":"INFO",
   "tags":[  
      "EXECUTION_TIME"
   ],
   "additional_data":"2280||0:0:0:0:0:0:0:1"
}

ありがとうございました

4

1 に答える 1

0

ドキュメントのインデックスを既に作成している場合は、フィールドのデータ型を変更した後、データのインデックスを再作成する必要があります。

ただし、このようなものを使用して、型をmillis文字列から整数に変更できます。(longはサポートされていません)

https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-convert

また、正規表現パターンを持つインデックス名を持つ複数のインデックスを追加する場合は、インデックスを作成する前にelasticsearchテンプレートを定義してみてください。そうでない場合は、事前にインデックス形式を定義してからインデックス作成を開始できます。

于 2018-01-04T12:04:54.790 に答える