0

Я недавно сконфигурированный сервер 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" ] 
    } 
    } 
} 

ответ

1

Там есть обходной путь для вас, если вы можете изменить журнал каталог сторонних расширений. Затем вы можете отправить все неизвестные файлы в этот новый каталог (например,/var/log/new_directory /) и сохранить все остальные известные журналы в /var/log/. Таким образом, вы меняете свой файл logstash-forwader.conf, как показано ниже, для отправки различных типов файлов журнала на сервер журнала.

"files": [ 
     { 
      "paths": [ 
       "/home/deploy/lindcraft/current/codepool/var/log/syslog" 
      ], 
      "fields": { "type": "syslog" } 
     }, 
     { 
      "paths": [ 
       "/home/deploy/lindcraft/current/codepool/var/log/exeption.log" 
      ], 
      "fields": { "type": "exeption-log" } 
     }, 
     { 
      "paths": [ 
       "/home/deploy/lindcraft/current/codepool/var/log/new_directory/*.log" 
      ], 
      "fields": { "type": "staging-all-lincraft-logs" } 
     } 
    ] 

А затем добавьте фильтр для разбора различных файлов журналов с соответствующими шаблонами GROK. Это будет что-то вроде ниже.

filter { 
    if [type] == "syslog" { 
     grok { 
      match => { "message" => "GROK pattern for syslog" } 
     } 
    } 
    else if [type] == "exeption-log" { 
     grok { 
      match => { "message" => "GROK pattern for exeption-log" } 
     } 
    } 
    else if [type] == "staging-all-lincraft-logs" { 
     grok { 
      match => { "message" => "GROK pattern for staging-all-lincraft-logs" } 
     } 
    } 
} 

Я думаю, что если нам нужно обработать лог-файлы по-разному в logstash, мы должны отправить их с конкретными типами из logstash-экспедитора.

Надеюсь, что это поможет.!