У меня есть такой файл 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"
) не говоря уже о расширении поля содержимого.
Любая помощь будет оценена по достоинству!