ошибка фильтра обрезки
Ваш фильтр prune
не имеет поля @timestamp
в списке whitelist_names
, ваш вывод основан на дате (%{+YYYY.MM.dd}
), logsta sh требуется поле @timestamp
в выходных данных для извлечения даты.
Я запустил ваш конвейер с вашим примером сообщения, и он сработал, как и ожидалось, с фильтром prune
, в который отправляется сообщение. asticsearch, но он хранится в индексе с именем mule-
без какого-либо поля даты и времени.
Без фильтра prune
ваше сообщение использует время, когда logsta sh получила событие как @timestamp
, поскольку у вас нет фильтра даты для его изменения.
Если вы создали шаблон индекса для индекса mule-*
с полем даты и времени, например @timestamp
, вы не увидите в Kibana никаких документов в индексе. у которого нет того же поля даты и времени.
ошибка грока
Ваш грок неверен, вам нужно снять квадратные скобки, окружающие вашу метку времени. В Kibana есть отладчик grok, в котором вы можете попробовать свои шаблоны.
Работает следующий grok, переместите ваше kv для запуска после grok и с msgbody
в качестве источника.
grok {
match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\]\s+%{LOGLEVEL:loglevel}\s+%{GREEDYDATA:msgbody}"}
overwrite => [ "msgbody" ]
}
kv {
source => "msgbody"
field_split => "{},?\[\]"
transform_key => "capitalize"
transform_value => "capitalize"
trim_key => "\s"
trim_value => "\s"
include_brackets => false
}
Just запустите его с выводом только в stdout, чтобы увидеть фильтры, необходимые для изменения фильтра prune
.
дублированные поля сообщений
Если вы установите фильтр kv
после того, как grok
вы не дублировали бы поля message
, так как ваши kv
пишут с заглавными буквами ваши поля, вы закончите полем message
, содержащим ваш полный журнал, и полем Message
, содержащим ваше внутреннее сообщение, Поля logsta sh чувствительны к регистру.
Однако вы можете переименовать любое поле, используя фильтр mutate
.
mutate {
rename => ["message", "fullLogMessage"]
}