Я недавно сконфигурированный сервер ELK,Настройка Logstash фильтров
В моем приложении сервера (Magento) вар/журнал/каталог содержит множество файлов журналов (в том числе некоторых 3-журналов расширения партия для Magento), Так я думал отправляя все, используя * .log в logstash, потому что нам неизвестны некоторые имена файлов журналов, которые могут быть созданы в будущем из-за интеграции сторонних разработчиков. и нам тоже нужно их поймать.
Magento журнал исключение имеет многоканальный логи с трассировки стека, Так что я сделал добавить фильтр с помощью Горка, теперь, кажется, работает (давая выход конкатенации),
Поскольку у меня есть один определяют (в обоих конфигурациях) все файлы журнала анализируются через него (см. ниже код),
Я не могу удалить * .log и указать конкретные имена sine un- известно о именах файлов
Есть ли способ разбора только определенных файлов (exception.log и system.log) в конфигурации logstash (Я попытался с добавлением Parth, он не работает)
logstash форвардер конфигурации:
"files": [
{
"paths": [
"/home/deploy/lindcraft/current/codepool/var/log/*.log"
],
"fields": { "type": "staging-all-lincraft-logs" }
}
]
logstash фильтр конфигурации:
filter {
if [type] == "staging-all-lincraft-logs" {
multiline{
# path => "/home/deploy/lindcraft/current/codepool/var/log/exception.log"
pattern => "^%{TIMESTAMP_ISO8601:timestamp}"
what => "previous"
negate=> true
}
grok {
match => [
"message",
"(?m)%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:priority_name} \(%{INT:priority_level}\): %{GREEDYDATA:message}"
]
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
overwrite => [ "message" ]
}
date {
match => [ "timestamp", "ISO8601" ]
}
}
}