Я пытаюсь настроить фильтр логстаста для определения фильтра фильтра apache. Это в основном «в сочетании» LogFormat с некоторым дополнительным полем, здесь является определение формата журнала апач:определение фильтра logstash для расширенного журнала apache
LogFormat "%h %{X-LB-Client-IP}i %l %u %m %t \"%{Host}i\" \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %D" combinextended
Вот содержимое журнала Пример файла:
12.123.456.789 122.123.122.133 - - GET [06/May/2015:18:42:41 +0200] "www.example.com" "GET /fr-fr/test/content/ HTTP/1.1" 200 14023 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121718 Gentoo Firefox/3.0.5" 7729
я настроил logstash-вперед, чтобы отправить файлы:
{
"paths": [
"/var/log/mysite/extended.log",
"/var/log/myothersite/extended.log"
],
"fields": { "type": "apache-extended" }
}
Я настроил сервер logstash с рисунком ГРОК в файле в /etc/logstash/conf.d
, названный 13-apache-extended.conf
:
filter {
if [type] == "apache-extended" {
grok {
match => { "message" => "%{IPORHOST:proxyip} %{IPORHOST:clientip} %{USER:ident} %{USER:auth} %{WORD:method} \[%{HTTPDATE:timestamp}\] \"%{IPORHOST:host}\" \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) \"%{GREEDYDATA:referer}\" \"%{GREEDYDATA:agent}\" %{NUMBER:responsetime}" }
}
}
}
Я тестировал его в https://grokdebug.herokuapp.com/ и, казалось, хорошо:
образец журнала:
12.123.456.789 122.123.122.133 - - GET [06/May/2015:18:42:41 +0200] "www.example.com" "GET /fr-fr/test/content/ HTTP/1.1" 200 14023 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121718 Gentoo Firefox/3.0.5" 7729
Выкройка:
%{IPORHOST:proxyip} %{IPORHOST:clientip} %{USER:ident} %{USER:auth} %{WORD:method} \[%{HTTPDATE:timestamp}\] \"%{IPORHOST:host}\" \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) \"%{GREEDYDATA:referer}\" \"%{GREEDYDATA:agent}\" %{NUMBER:responsetime}
Но когда я перезапустить logstash на основном сервере, Я получил ошибку:
{:timestamp=>"2015-05-06T18:36:28.846000+0200", :message=>"Exception in lumberjack input", :exception=>#<LogStash::ShutdownSignal: LogStash::ShutdownSignal>, :level=>:error}
{:timestamp=>"2015-05-06T18:36:44.342000+0200", :message=>"Error: Expected one of #, {, } at line 35, column 142 (byte 969) after filter {\n if [type] == \"apache-extended\" {\n grok {\n match => { \"message\" => \"%{IPORHOST:proxyip} %{IPORHOST:clientip} %{USER:ident} %{USER:auth} %{WORD:method} \\[%{HTTPDATE:timestamp}\\] \""}
{:timestamp=>"2015-05-06T18:36:44.349000+0200", :message=>"You may be interested in the '--configtest' flag which you can\nuse to validate logstash's configuration before you choose\nto restart a running system."}
Любая идея очень ценится.
Спасибо.
что именно вы хотите увидеть ?? –
Просто правильно сконфигурированный файл конфигурации. Кроме того, (хотя этот вопрос составляет более 6 месяцев), он специально сказал, что шаблон «COMBINEDAPACHELOG» не улавливает входные данные, которые генерируют журналы –