Logstash с ошибкой Filebeat: не удалось выполнить действие - PullRequest
0 голосов
/ 22 октября 2019

Привет, я пытаюсь настроить анализ журналов с помощью Filebeat и Logstash. Ниже приведены изменения, которые я сделал в

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - D:\elasticsearch-5.4.3\elasticsearch-5.4.3\logs\elasticsearch.log

output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

А вот мой файл конфигурации logstash.

input {
  beats {
    port => 5044
  }
}

filter {
    grok {
      match => { "message" => "%{plugins}" }
    }
    date {
    match => [ "timestamp" , "yyyy-MM-DD:HH:mm:ss" ]
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
}
}

При выполнении вышеизложенного я вижу следующую ошибку:

[2019-10-22T06:07:32,915][ERROR][logstash.javapipeline    ] Pipeline aborted due
 to error {:pipeline_id=>"main", :exception=>#<Grok::PatternError: pattern %{plu
gins} not defined>, :backtrace=>["D:/logstash-7.1.0/logstash-7.1.0/vendor/bundle
/jruby/2.5.0/gems/jls-grok-0.11.5/lib/grok-pure.rb:123:in `block in compile'", "
org/jruby/RubyKernel.java:1425:in `loop'", "D:/logstash-7.1.0/logstash-7.1.0/ven
dor/bundle/jruby/2.5.0/gems/jls-grok-0.11.5/lib/grok-pure.rb:93:in `compile'", "
D:/logstash-7.1.0/logstash-7.1.0/vendor/bundle/jruby/2.5.0/gems/logstash-filter-
grok-4.0.4/lib/logstash/filters/grok.rb:281:in `block in register'", "org/jruby/
RubyArray.java:1792:in `each'", "D:/logstash-7.1.0/logstash-7.1.0/vendor/bundle/
jruby/2.5.0/gems/logstash-filter-grok-4.0.4/lib/logstash/filters/grok.rb:275:in
`block in register'", "org/jruby/RubyHash.java:1419:in `each'", "D:/logstash-7.1
.0/logstash-7.1.0/vendor/bundle/jruby/2.5.0/gems/logstash-filter-grok-4.0.4/lib/
logstash/filters/grok.rb:270:in `register'", "org/logstash/config/ir/compiler/Ab
stractFilterDelegatorExt.java:56:in `register'", "D:/logstash-7.1.0/logstash-7.1
.0/logstash-core/lib/logstash/java_pipeline.rb:191:in `block in register_plugins
'", "org/jruby/RubyArray.java:1792:in `each'", "D:/logstash-7.1.0/logstash-7.1.0
/logstash-core/lib/logstash/java_pipeline.rb:190:in `register_plugins'", "D:/log
stash-7.1.0/logstash-7.1.0/logstash-core/lib/logstash/java_pipeline.rb:446:in `m
aybe_setup_out_plugins'", "D:/logstash-7.1.0/logstash-7.1.0/logstash-core/lib/lo
gstash/java_pipeline.rb:203:in `start_workers'", "D:/logstash-7.1.0/logstash-7.1
.0/logstash-core/lib/logstash/java_pipeline.rb:145:in `run'", "D:/logstash-7.1.0
/logstash-7.1.0/logstash-core/lib/logstash/java_pipeline.rb:104:in `block in sta
rt'"], :thread=>"#<Thread:0x15997940 run>"}
[2019-10-22T06:07:32,970][ERROR][logstash.agent           ] Failed to execute ac
tion {:id=>:main, :action_type=>LogStash::ConvergeResult::FailedAction, :message
=>"Could not execute action: PipelineAction::Create<main>, action_result: false"
, :backtrace=>nil}

Я довольно новичок в этой интеграции, я не уверен, куда мне смотреть. Пожалуйста, помогите мне.

Ответы [ 2 ]

2 голосов
/ 22 октября 2019

Проблема выглядит с

grok {
  match => { "message" => "%{plugins}" }
}

Что здесь %{plugins}? Это НЕ предопределенный шаблон grok. Список grok шаблонов можно найти здесь .

Кроме того, синтаксис для шаблона grok из документации равен %{SYNTAX:SEMANTIC}. Вы могли бы сделать что-то вроде

grok {
  match => { "message", "%{GREEDYDATA:plugins}" }
}
0 голосов
/ 24 октября 2019

Попробуйте указать тип данных "%{plugins}".

filter {
    grok {
      match => { "message" => "%{WORD:plugins}" }
    }
}

. Типы данных можно найти здесь:

Если это не работает, попробуйте удалить фильтр даты ипопробуйте еще раз.

...