Я запускаю стек ELK и передаю ему все мои журналы Windows из nxlog, и у меня проблема с журналами IIS. В nxlog я бегу это в файле nxlog.confnxlog and elasticsearch parsing issue
<Extension w3c> Module xm_csv Fields $date, $time, $s-ip, $cs-method, $cs-uri-stem, $cs-uri-query, $s-port, $cs-username, $c-ip, $csUser-Agent, $sc-status, $sc-substatus, $sc-win32-status, $time-taken FieldTypes string, string, string, string, string, string, string, string, string, string, string, string, string, string Delimiter ' ' UndefValue - </Extension>
Я не убегаю никакого разбора logstash, и когда они появляются в elasticsearch/kibana я получаю этот гигантский вывод сообщений,
{"message":"2015-10-19 22:17:26 10.10.10.10 GET javascriptScript.js - 443 - 10.10.10.10 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET4.0C;+.NET4.0E;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729) 200 0 0 31\r","@version":"1","@timestamp":"2015-10-19T22:19:08.061Z","host":"10.10.10.10","type":"WindowsEventLog","tags":["_jsonparsefailure"]}
Я хочу, чтобы разобрать это сообщение и получить все соответствующие данные. Похоже, что должно быть возможно проанализировать журнал iis через nxlog, а затем передать информацию json через elasticsearch. Но я не уверен, что это то, что я должен делать на стороне nxlog или на стороне журнала. Все, на что я смотрел, использует одно и то же расширение w3c, но нет тонны данных, которые я могу посмотреть на использование как nxlog, так и logstash для анализа журналов IIS.
Удивительно, я могу полностью проанализировать журнал, как я хочу, через интерфейс отладки. Я расширил фильтр до этого '% {TIME: time_stamp} \ s% {IP: source_ip} \ s% {WORD: cs_method} \ s% {DATA: cs_uri_stem} \ s% {DATA: cs_uri_query} \ s% {DATA : source_port} \ s% {DATA: имя пользователя} \ s% {IP: client_ip} \ s% {DATA: client_browser} \ s% {DATA: request_status} \ s% {DATA: подсостояния} \ s% {DATA: win32_status } \ s', но я столкнулся с одной проблемой. Я пытаюсь разобрать полный журнал, включая поле time_taken, которое является последним полем в строке. Независимо от того, что я делаю, отладчик говорит «Нет совпадений», хотя в конце есть действительный символ. – pcort
это строка журнала, в которой я использую '2015-10-16 01:55:49 10.10.10.10 GET /note.txt querylinehere.asp 80 - 10.10.10.10 Mozilla/4.0 + (совместимый; + MSIE + 8.0; + Windows + NT + 5.1; + Trident/4.0) 404 0 2 2' – pcort
@pcport ответ обновлен, надеюсь, что это поможет ... – markus