2015-02-11 2 views
0

Итак, я написал несколько шаблонов для журналов, которые работают. Дело в том, что у меня есть несколько журналов с несколькими шаблонами в одном файле. Как logstash знает, какой шаблон он должен использовать, для какой строки в журнале? (Я использую grok для моей фильтрации). И если вы, ребята, были бы добрыми, не могли бы вы дать мне ссылку на документы, потому что я ничего не смог найти по этому поводу:/Несколько шаблонов в одном журнале

ответ

5

Вы можете использовать несколько шаблонов для ГРОК фильтра,

grok { 
    match => ["fieldname", "pattern1", "pattern2", ..., "patternN"] 
} 

и они будут применяться в порядке, но а) это не самый лучший вариант точки зрения производительности и б) вы, вероятно, хотите по-разному в любом случае, чтобы рассматривать различные типы журналов, поэтому я предлагаю вам использовать условные обозначения на основе типа или тегов сообщения:

if [type] == "syslog" { 
    grok { 
    match => ["message", "your syslog pattern"] 
    } 
} 

Установите тип во входном плагине.

Документация к выпущенной в настоящее время версии Logstash находится на http://logstash.net/docs/1.4.2/. Вероятно, это не относится конкретно к вашему вопросу, но это можно сделать.

0

Написать наиболее специфический ГРОК первый и использовать этот синтаксис:

grok { 
    match => { 
     "message" => [ 
     #Most specific grok: 
     "%{TIMESTAMP_ISO8601:temp_date}%{SPACE}%{LOGLEVEL:log_level}%{UUID:user_id}", 
     #Less specific: 
     "%{TIMESTAMP_ISO8601:temp_date}%{SPACE}%{GREEDYDATA:log_message}" 
    ] 
    } 
}