Назад | Перейти на главную страницу

Почему многострочный фильтр logstash не соответствует журналам?

Я отправляю логи в logstash с помощью beaver. Эти журналы являются многострочными по своей природе, поэтому я использую многострочный фильтр, но каким-то образом фильтр не может соответствовать журналу. В выводе logstash ошибок нет. Вот что я вижу в logstash:

{"@source":"udp://10.238.161.213:36655/","@tags":[],"@fields":{},"@timestamp":"2013-09-23T16:37:56.653Z","@source_host":"10.238.161.213","@source_path":"/","@message":"{\"@source\": \"file://app1.example.org/ebs/app.log\", \"@source_host\": \"app1.example.org\", \"@message\": \"        This is line3\", \"@tags\": [], \"@fields\": {}, \"@timestamp\": \"2013-09-23T16:38:18.150822Z\", \"@source_path\": \"/ebs/app.log\", \"@type\": \"file\"}","@type":"app"}

Пример строки журнала:

This is a log line
    This is line2
    This is line3

Конфигурация Logstash:

input {
  udp {
    type => "app"
    port => 9996
  }
}
filter {
  multiline {
    type => "app"
    pattern => "^\s"
    what => "previous"
  }
}
output {
  elasticsearch { host => "127.0.0.1" }
}

Beaver работает на удаленном хосте приложения и вызывается как:

/usr/bin/python /usr/bin/beaver -D -P /var/lock/beaver.pid -c /etc/beaver/conf -t udp -p /ebs/

и / etc / beaver выглядит так:

[beaver]
udp_host: logstash.example.org
udp_port: 9996

Любые мысли о том, почему многострочный фильтр не соответствует журналам?