티스토리 뷰

특정 filed의 key의 value에 있는 json 값을 파싱하여, 특정 위치에 위치시키는 역활을 한다.
어디에 위치 할지 정하지 않으면, 디폴트 값으로 root에 위치를 시킨다.

input {
 stdin {
 }
}

filter {
 json {
   source => "message"
 }
}

output {
  stdout {
    codec => rubydebug
  }
}

위의 json filter는 message 라는 키에 있는 값을 json 파싱하여, root에 위치 시킨다.

1
[WARN ] 2020-03-19 20:28:28.002 [[main]>worker7] json - Parsed JSON object/hash requires a target configuration option {:source=>"message", :raw=>"1"}
/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/awesome_print-1.7.0/lib/awesome_print/formatters/base_formatter.rb:31: warning: constant ::Fixnum is deprecated
{
    "@timestamp" => 2020-03-19T11:28:27.684Z,
       "message" => "1",
          "host" => "pdv-dapi-os001.novalocal",
          "tags" => [
        [0] "_jsonparsefailure"
    ],
      "@version" => "1"
}

message의 value 1은 json 값이 아니기 때문에, jsonparse가 불가 하기 때문에 tags에 에러 메세지가 담기게 된다.

{"a":"b"}
{
    "@timestamp" => 2020-03-19T11:28:39.993Z,
             "a" => "b",
       "message" => "{\"a\":\"b\"}",
          "host" => "pdv-dapi-os001.novalocal",
      "@version" => "1"
}

message 의 value 가 json 값으로, 이를 파싱하여 key와 value 를 root에 위치시켰다.( a => b )

{"@timestamp":"2020-02-02T11:11:11.111Z"}
{
    "@timestamp" => 2020-02-02T11:11:11.111Z,
       "message" => "{\"@timestamp\":\"2020-02-02T11:11:11.111Z\"}",
          "host" => "pdv-dapi-os001.novalocal",
      "@version" => "1"
}

message 의 value 를 json 파싱하게 되면, logstash 이벤트에 기본적으로 들어가는 @timestamp와 같은데, value가 적절한 format으로 값이 있으면, 이 값을 기존 값으로 대체를 하게 된다.

{"@timestamp":"xxx"}
[WARN ] 2020-03-19 20:30:19.168 [[main]>worker2] json - Unrecognized @timestamp value, setting current time to @timestamp, original in _@timestamp field {:value=>"\"xxx\""}
{
        "message" => "{\"@timestamp\":\"xxx\"}",
           "host" => "pdv-dapi-os001.novalocal",
     "@timestamp" => 2020-03-19T11:30:19.161Z,
           "tags" => [
        [0] "_timestampparsefailure"
    ],
    "_@timestamp" => "xxx",
       "@version" => "1"
}

위와 유사한 예제로서, @timestamp 값의 형식이 잘못되었기 때문에 json parsing 이 실패하여 logstash event 의 기존 @timestamp 값은 유지가 되고, 대신 _@timestamp 라는 key에 값이 저장된다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함