Очистка текста журнала через фильтр grok в logstash для заданной структуры журнала - PullRequest
1 голос
/ 07 апреля 2019
2019-04-01 10:57:35|[a1vx4d9r - ecaf-myself - N2PENL-ECFA0141.india.airtel.itm - servlet:/reserveNumbers/getAvailableNumbers/v1?httpMethodRestrict=POST ][[ACTIVE] ExecuteThread: '36' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO|com.airtel.common.aop.LogExecutionTime|EXECUTION TIME LOGGING METHODNAME: postResponseFromESB EXECUTION TIME: 472 ms

Выше приведен формат журнала.

Пожалуйста, помогите написать фильтр grok в logstash, который разделяет поля, как показано ниже:

timestamp: 2019-04-01 10:57:35
user_id:a1vx4d9r
project name: ecaf-myself
host_name: N2PENL
api_name:ECFA0141.india.airtel.itm - servlet:/reserveNumbers/getAvailableNumbers/v1?httpMethodRestrict=POST 
thread_id: [ACTIVE] ExecuteThread: '36' for queue: 'weblogic.kernel.Default (self-tuning)'
log_level: INFO
Method_name:postResponseFromESB 
Method_time:472

1 Ответ

2 голосов
/ 07 апреля 2019

Написание фильтров grok легко со всеми необходимыми шаблонами, уже определенными здесь . Вы можете использовать это приложение, чтобы опробовать свой фильтр grok и посмотреть, соответствует ли он вашему шаблону журнала: http://grokdebug.herokuapp.com/

Для приведенного выше примера будет работать приведенный ниже фильтр Грока. Вы можете проверить и настроить его в соответствии с вашими потребностями, используя два вышеуказанных ресурса:

%{TIMESTAMP_ISO8601}.*\[%{WORD:user_id}* - %{NOTSPACE:project_name}* - %{WORD:host_name}*-%{DATA:api_name} \]%{GREEDYDATA:thread}\] %{WORD:log_level}.*METHODNAME: %{WORD:Method_name}.*EXECUTION TIME: %{INT:Method_time}
...