2015-10-02 4 views
0

Log:Выборочный фильтр сообщение для logstash

20160927-210452.110|I|cpeg-001.anc.com|test_app-1.5-0||~|f324dfsdf23sd23||org.springframework.orm.hibernate3.LocalSessionFactoryBean:777|Building new Hibernate SessionFactory 

Фильтр

filter { 
    grok{ 
    match => [ "message", "(?<date_time>[0-9.-]+)(?<delimiter>[|])%{WORD:method}(?<delimiter>[|])%{USERNAME:host_name}(?<delimiter>[|])%{USERNAME:app_name_version}(?<delimiter>[|~]+)%{USERNAME:session}(?<delimiter>[|]+)(?<class_name>.+)(?<delimiter>[|])(?<log_message>.+)" ] 

    remove_field => [ "delimiter" ] 
    } 
} 

Есть ли способ, чтобы пропустить '|' кроме «remove_field»?

ответ

0

Почему нет жесткого кода | внутри вашего шаблона grok? Вы можете избежать этого с помощью \|

Выкройки:

(?<date_time>[0-9.-]+)\|%{WORD:method}\|%{USERNAME:host_name}\|%{USERNAME:app_name_version}\|\|\~\|%{USERNAME:session}\|\|%{DATA:classname}\|%{GREEDYDATA:logmessage} 

Фильтра:

grok{ 
    match => [ "message", "(?<date_time>[0-9.-]+)\|%{WORD:method}\|%{USERNAME:host_name}\|%{USERNAME:app_name_version}\|\|\~\|%{USERNAME:session}\|\|%{DATA:classname}\|%{GREEDYDATA:logmessage}" ] 
} 

Он работает. Вы можете проверить это, используя grok debugger.

+0

Благодаря Я только что создал пользовательский Паттен –

0

Спасибо, Я только что создал пользовательский Паттен в ./custom_patterns/my_pattern:

CUST_DATETIME [0-9.-]+ 
SEPARATOR \| 
MULTI_SEPARATOR \|\|\~\| 

Обновленный тот же в фильтр-матч:

filter { 
    grok{ 
    patterns_dir => "./custom_patterns" 

    match => [ "message", "%{CUST_DATETIME:orb_date}%{SEPARATOR}%{WORD:method}%{SEPARATOR}%{USERNAME:host_name}%{SEPARATOR}%{USERNAME:app_name_version}%{MULTI_SEPARATOR}%{USERNAME:session}%{SEPARATOR}%{DATA:class_name}%{SEPARATOR}%{GREEDYDATA:log_message}" ] 

    } 
} 
Смежные вопросы