Фильтры тайника журнала

Мне нужна помощь в написании фильтров для logstash. Мой logstash настроен на чтение системного журнала.

Сообщение журнала выглядит следующим образом:

Mar 14 15:11:11 localhost 192.168.235.136 {'status': 'True', 'endpoint': '/search/basic/', 'parameters': <QueryDict: {u'fileName': [u'Adware']}>, 'company': u'Global first', 'matched threat scape': [u'Enterprise IT Management and Investment'], 'request id': 11, 'user id': 2L, 'user': u' ', 'matched report id': [u'Intel-732102']}

Я хотел иметь фильтры на kibana, основанные на ключах json, которые я передаю в сообщении в logstash.

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

{%{QS:'status'}: %{QS}, %{QS}: %{QS}, %{QS}: <QueryDict: {u%{QS}: %{SYSLOG5424SD}}>, %{QS}: u%{QS}, %{QS}: %{SYSLOG5424SD}, %{QS}: 11, %{QS}: 2L, %{QS}: u' ', 'matched report id': %{SYSLOG5424SD}}

person Bhupesh Pant    schedule 16.03.2014    source источник


Ответы (1)


Для входа в журнал:

14 марта 15:11:11 localhost 192.168.235.136 {'статус': 'Истина', 'конечная точка': '/search/basic/'}

Грок Паттерн

%{CISCOTIMESTAMP:JsonTimestamp} localhost %{IP:JsonIP} {'status': '%{WORD:JsonStatus}', 'endpoint': '%{UNIXPATH:JsonPath}'}

Пожалуйста, следуйте аналогичному шаблону для остальных полей. Вы можете найти ссылки по адресу:

https://github.com/elasticsearch/logstash/blob/master/patterns/grok-patterns

Пожалуйста, напишите, в каких областях вы испытываете трудности с применением шаблона grok, а также следующие детали:

i) Какие поля являются переменными, а какие постоянными.

В приведенном выше примере будут проиндексированы JsonTimestamp, JsonIP, JsonStatus и JsonPath.

Ниже приведен рабочий полный шаблон grok для приведенного выше примера:

%{CISCOTIMESTAMP} localhost %{IP} {%{QS}: %{QS}, %{QS}: %{QS}, %{QS}: <QueryDict: {u%{QS}: %{SYSLOG5424SD}}>, %{QS}: u%{QS}, %{QS}: %{SYSLOG5424SD:matched_threat_scape}, %{QS}: %{NUMBER:request_id}, %{QS}: %{NUMBER:user_id}L, %{QS}: %{WORD:user}%{QS}, %{QS}: %{SYSLOG5424SD:matched_report_id}

модифицированные изменения: %{NUMBER:request_id}, %{NUMBER:user_id}L, %{WORD:user}, %{SYSLOG5424SD:matched_report_id}, поскольку 11 и 2L не заключены в кавычки и представляют собой числа, мы используем NUMBER для идентификации числовых токены, пользователь представлен как токен WORD

person Murthy    schedule 18.03.2014
comment
Спасибо за ваш ответ Мурти. Мне удалось проанализировать данные так, как вы упомянули. Но все же я не могу разобрать полные данные. Я получаю сообщение об ошибке, когда пытаюсь проанализировать полное сообщение. - person Bhupesh Pant; 18.03.2014
comment
filter { if [status] == 'True' { grok { add_tag ​​=› [status, end_point, params_name, params, company, matched_threat_scape, request_id, user_id, syslog_message] type =› my_audit match =› [ message, %{CISCOTIMESTAMP} localhost %{IP} {%{QS}: %{QS}, %{QS}: %{QS}, %{QS}: ‹QueryDict: {u%{QS}: %{SYSLOG5424SD}}›, %{ QS}: u%{QS}, %{QS}: %{SYSLOG5424SD:matched_threat_scape}, %{QS}: %{QS:request_id}, %{QS}: %{QS:user_id}, %{GREEDYDATA:syslog_message }} ] } } } - person Bhupesh Pant; 18.03.2014
comment
Пожалуйста, найдите рабочий полный шаблон grok в последних строках выше отредактированного ответа. - person Murthy; 19.03.2014
comment
Он по-прежнему не включает последние два проанализированных значения: user': u' ', 'matched report id': [u'Intel-732102'] - person Bhupesh Pant; 19.03.2014
comment
Пожалуйста, найдите обновленный шаблон grok. Ссылки на шаблоны можно найти по адресу: github.com/elasticsearch/logstash/blob. /мастер/шаблоны/ - person Murthy; 19.03.2014
comment
На самом деле моя проблема в том, что даже если я использую правильный шаблон для извлечения значений, я не могу его получить. Я получаю сообщение об ошибке, и если я использую GREEDYDATA:syslog_message для последнего сообщения, моя проблема решена. - person Bhupesh Pant; 19.03.2014
comment
i) Вы пытались использовать последний шаблон в ответе на grokdebug.herokuapp.com, я не вижу никаких исключения и извлеченные токены request_id, user_id, user, matched_report_id. ii) Помимо request_id, user_id, user, matched_report_id, какие поля вам нужны? - person Murthy; 20.03.2014