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

Как расширить поле многострочным сообщением

У меня есть такой файл logstash:

input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/path/to/mycert"
    ssl_key => "/path/to/mykey"
  }
}

filter {
  if [type] == "logs" {
    if [message] =~ /^\d\d\d\d/ {
      grok {
        match        => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{NOTSPACE:other_field} %{GREEDYDATA:content}" }
        add_field    => [ "received_at", "%{@timestamp}" ]
        add_field    => [ "received_from", "%{host}" ]
      }
    }
    multiline {
      pattern => "^\d\d\d\d"
      what    => "previous"
      negate  => true
    }
  }
}

output {
  elasticsearch { host => localhost }
}

Вот пример журнала:

2015-04-09T04:56:37.548Z OtherField Send message:
Keepalive {
  Type: keepalive
  key: ABCDE
  time Thu Apr 09 00:56:37 EDT 2015
}

Поле содержимого заканчивается строкой «Отправить сообщение: \ n» и ничего больше. Мы хотим, чтобы поле содержимого расширялось и содержало: «Отправить сообщение: \ nKeepalive {\ n Тип: keepalive \ n ключ: ABCDE \ n время, четверг, 09 апреля, 00:56:37 EDT 2015 \ n}»

Я пробовал использовать add_field, но я даже не могу убедить его добавить простое поле (т.е. "multilinemsg", "true") не говоря уже о расширении поля содержимого.

Любая помощь будет оценена по достоинству!