Разбор файла JSON с помощью шаблона grok в logstash? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь проанализировать файл json вasticsearch с помощью logstash, но я не смог, думаю, мне нужно написать какой-нибудь шаблон grok.Но я не мог.Как я могу отправить ниже json вasticsearch с помощью logstash.

{"machinename": "test1",

"longdate": "2019-01-29 13:19:32",

"level": "Error",

"mysite": "test1",

"message": "test2",

"исключение":" test3 ",

" отметка времени ":" 2019-01-29T13: 19: 32.257Z "}

Мой файл журнала:


input {
  file {
       path => ["P:/logs/*.txt"]
        start_position => "beginning" 
        discover_interval => 10
        stat_interval => 10
        sincedb_write_interval => 10
        close_older => 10
       codec => multiline { 
        negate => true
        what => "previous" 
       }
  }
}

filter {  
 date {
            match => ["TimeStamp", "ISO8601"]
             }  
    json{
        source => "request"
        target => "parsedJson"

    }   

}   

output {  

    stdout {
        codec => rubydebug
    }



    elasticsearch {
        hosts => [ "http://localhost:9200" ]
         index => "log-%{+YYYY.MM}"

    }   
}



ОШИБКА:

[2019-01-29T14: 30: 54,907] [WARN] [logstash.config.source.multilocal] Игнорирование файла pipelines.yml, поскольку заданы модули или параметры командной строки [2019-01-29T14: 30: 56,929] [INFO] [logstash.runner] Запуск Logstash {"logstash.version" => "6.3.2"} [2019-01-29T14: 30: 59,167] [ОШИБКА] [logstash.agent] Сбойвыполнить действие {: action => LogStash :: PipelineAction :: Create / pipeline_id: main,: exception => «LogStash :: ConfigurationError»,: message => «Ожидается один из #, {,} в строке 12, столбец 18(байт 281) после ввода {\ n file {\ n \ t path => [\ "P: / logs / *. txt \"] \ n \ t \ tstart_position => \ "начало \" \ n \ t \tdiscover_интервал => 10 \ n \ t \ tstat_interval => 10 \ n \ t \ tsintedb_write_interval => 10 \ n \ t \ tclose_older => 10 \ n кодек => многострочный {\ n \ t \ tpattern => \ "^%{TIMESTAMP_ISO8601} \\ "\ n \ t \ tnegate => true \ n what => \" ",: backtrace => [" P: /elk/logstash/logstash-core/lib/logstash/compiler.rb: 42: в compile_imperative'", "P:/elk/logstash/logstash-core/lib/logstash/compiler.rb:50:in compile_graph '"," P: /elk/logstash/logstash-core/lib/logstash/compiler.rb: 12: в block in compile_sources'", "org/jruby/RubyArray.java:2486:in map' "," P: / elk / logstash / logstash-core/lib/logstash/compiler.rb:11:in compile_sources'", "P:/elk/logstash/logstash-core/lib/logstash/pipeline.rb:49:in initialize '"," P: /elk/logstash/logstash-core/lib/logstash/pipeline.rb: 167: в initialize'", "P:/elk/logstash/logstash-core/lib/logstash/pipeline_action/create.rb:40:in execute' ","P: /elk/logstash/logstash-core/lib/logstash/agent.rb: 305: в `block in converge_state '"]} [2019-01-29T14: 31: 00,417] [INFO] [logstash.agent] Успешнозапущена конечная точка API Logstash {: port => 9600} [2019-01-29T14: 34: 23,554] [WARN] [logstash.config.source.multilocal] Игнорирование файла pipelines.yml, поскольку указаны модули или параметры командной строки[2019-01-29T14: 34: 24,554] [INFO] [logstash.runner] Запуск Logstash {"logstash.version" => "6.3.2"} [2019-01-29T14:34: 27,486] [ОШИБКА] [logstash.codecs.multiline] Отсутствует обязательная настройка для плагина многострочного кодека:

codec {multiline {pattern => # SETTING MISSING ...}} [2019-01-29T14: 34: 27,502] [ОШИБКА] [logstash.agent] Не удалось выполнить действие {: action => LogStash :: PipelineAction :: Create / pipeline_id: main,: исключение => «LogStash :: ConfigurationError»,: message =>«Что-то не так с вашей конфигурацией.»,: Backtrace => [«P: /elk/logstash/logstash-core/lib/logstash/config/mixin.rb: 89: in config_init'", "P:/elk/logstash/logstash-core/lib/logstash/codecs/base.rb:19:in initialize», «P:/elk/logstash/logstash-core/lib/logstash/plugins/plugin_factory.rb:97:in plugin'", "P:/elk/logstash/logstash-core/lib/logstash/pipeline.rb:110:in плагин '"," (eval): 8: в <eval>'", "org/jruby/RubyKernel.java:994:in eval' "," P: / elk /logstash / logstash-core / lib / logstash / pipeline.rb: 82: in initialize'", "P:/elk/logstash/logstash-core/lib/logstash/pipeline.rb:167:in initialize '"," P: /elk/logstash/logstash-core/lib/logstash/pipeline_action/create.rb: 40: in execute'", "P:/elk/logstash/logstash-core/lib/logstash/agent.rb:305:in block in converge_state '"]} [2019-01-29T14: 34: 27,971] [INFO] [logstash.agent] Успешно запущена конечная точка Logstash API {: port => 9600}

1 Ответ

0 голосов
/ 29 января 2019

Вы можете попробовать использовать плагин json filter для logstash.

Таким образом, плагин фильтра в logstash будет анализировать json:

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

Еще одна полезная вещь - это tag_on_failure.таким образом, если json не является действительным или неправильно понятым, вы увидите сообщение вasticsearch / kibana, но с тегом _jsonparsefailure.

  filter {
      json {
        source => "message"
        tag_on_failure => [ "_jsonparsefailure" ]
      }
    }
...