Разбор Grok со специальными символами в сообщении

Как в Logstash / grok разбирать сообщения со специальными символами датского алфавита, такими как øå?

Я пытаюсь разобрать следующее сообщение (файл журнала IIS):

2016-06-12 18:15:10 server01 192.168.10.1 GET /test/charæfoobar pagenumber=2 443 - 192.168.100.31 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:47.0)+Gecko/20100101+Firefox/47.0 https://domain.com/test/char%C3%A6foobar domain.com 200 0 0 5493 559 515

С этим шаблоном:

%{TIMESTAMP_ISO8601:logTimestamp} %{NOTSPACE:server} %{IP:serverIp} %{WORD:method} %{URIPATHPARAM:page} %{NOTSPACE:querystring} %{NUMBER:port} %{NOTSPACE:username} %{IP:clientIp} %{NOTSPACE:httpVersion} %{NOTSPACE:useragent} %{NOTSPACE:referer} %{NOTSPACE:siteDomain} %{NUMBER:status} %{NUMBER:substatus} %{NUMBER:win32Status} %{NUMBER:bytesSent:int} %{NUMBER:bytesReceived:int} %{NUMBER:timetaken:int}

Я отлаживаю с помощью этого инструмента: http://grokconstructor.appspot.com/ и кажется, что он задыхается на символ æ в сообщении.

Я использую программу доставки журналов Filebeat с кодировкой UTF-8, и IIS также выводит журналы в UTF-8. Он доставляется прямо в Logstash.

Любые идеи?


person Tommy Jakobsen    schedule 12.06.2016    source источник


Ответы (1)


Согласно RFC 1738 об унифицированных указателях ресурсов (URL):

URL-адреса записываются только с использованием графических печатных символов набора символов US-ASCII. Шестнадцатеричные октеты 80-FF не используются в US-ASCII, а шестнадцатеричные октеты 00-1F и 7F представляют управляющие символы; они должны быть закодированы.

Поскольку символ æ, то есть Unicode E6, находится в диапазоне 80-FF, его необходимо закодировать в шестнадцатеричный эквивалент %C3%A6. Если ваш URL-адрес был правильно закодирован в /test/char%C3%A6foobar, как это имеет место в URL-адресе реферера, то Grok проанализирует его правильно.

ОБНОВЛЕНИЕ

Если вы хотите обрабатывать эти символы, отличные от ASCII, вместо использования предопределенного шаблона URIPATHPARAM вы можете создать свой собственный шаблон и включите символы, отличные от ASCII, которые вы хотите рассмотреть.

person Val    schedule 13.06.2016
comment
Интересно. Но это не относится к журналу IIS. Странно, что IIS включает только символы в URL-адресе реферера. Есть ли способ справиться с этим с помощью Logstash? - person Tommy Jakobsen; 13.06.2016
comment
Спасибо, Вэл. Я попробую разобраться в этом. - person Tommy Jakobsen; 16.06.2016