Допустим, у вас есть 2 очень разные типы журналов, таких как Fortinet и NetASQ бревен и вы хотите:Logstash не может обрабатывать несколько разнородных входов
Grok Fortinet с использованием регулярных выражений, анг Grok NETASQ используя другой регулярное выражение.
Я знаю, что с «типом» во входном файле и «условием» в фильтре мы можем решить эту проблему.
Так что я использовал этот confing файл, чтобы сделать это:
input {
file {
type => "FORTINET"
path => "/fortinet/*.log"
sincedb_path=>"/logstash-autre_version/var/.sincedb"
start_position => 'beginning'
}
file {
type => "NETASQ"
path => "/home/netasq/*.log"
}
}
filter {
if [type] == "FORTINET" {
grok {
patterns_dir => "/logstash-autre_version/patterns"
match => [
"message" , "%{FORTINET}"
]
tag_on_failure => [ "failure_grok_exemple" ]
break_on_match => false
}
}
if [type] == "NETASQ" {
# .......
}
}
output {
elasticsearch {
cluster => "logstash"
}
}
И я получаю эту ошибку:
Got error to send bulk of actions: no method 'type' for arguments(org.jruby.RubyArray) on Java::OrgElasticsearchActionIndex::IndexRequest {:level=>:error}
Но если не использовать «типа» и я обращал внимание только Fortinet logs это wroks.
Что мне делать?
Вашей конфигурация выглядит прекрасно. Вы уверены, что не упускаете какие-либо штуки? Нет дополнительных файлов в вашем /etc/logstash/conf.d? –
вот в чем проблема, моя конфигурация в порядке, и я не знаю, что случилось! – Localhost
Я подозреваю, что у Logstash есть дополнительная конфигурация, кроме того, что вы показали выше. –