Чтение файла журнала по заданному пути с помощью logstash

input 
{
  file 
  {
    path => ["D:/logstash-2.3.4/temp/logs/localhost_access_log.2016-08-24.log"]
    start_position => "beginning"
  }
}

filter 
{
  date 
  {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output 
{
  stdout { codec => rubydebug }
}

Теперь после запуска logstash я не вижу никаких выходных данных в командном окне logstash. То есть журналы внутри файла Give не извлекаются.

некоторые примеры журналов в моем файле журнала localhost_access_log.2016-08-24 приведены ниже:

127.0.0.1 - - [24/Aug/2016:10:07:54 +0530] "GET / HTTP/1.1" 200 11452    
0:0:0:0:0:0:0:1 - - [24/Aug/2016:10:08:09 +0530] "GET /Migration/firstpage.jsp HTTP/1.1" 404 1040    
127.0.0.1 - - [24/Aug/2016:10:08:39 +0530] "GET / HTTP/1.1" 200 11452    
0:0:0:0:0:0:0:1 - - [24/Aug/2016:10:08:41 +0530] "GET /Migration/firstpage.jsp HTTP/1.1" 500 3750    
0:0:0:0:0:0:0:1 - - [24/Aug/2016:10:09:38 +0530] "GET /Mortgage/faces/NewFile.jsp HTTP/1.1" 404 1046

Есть ли проблема с кодом ввода или кодом фильтра даты? Может ли кто-нибудь помочь мне, где я совершаю ошибку?


person keerthi    schedule 01.09.2016    source источник
comment
Ваш фильтр дат бесполезен, так как поле timestamp не существует. Сначала вам нужно будет извлечь дату из строки журнала в поле метки времени, используя, например, фильтр grok с шаблоном COMMONAPACHELOG. Но я не знаю, почему у вас нет выхода.   -  person baudsp    schedule 01.09.2016
comment
Спасибо. Я попробую и дам вам знать.   -  person keerthi    schedule 07.10.2016


Ответы (1)


Вы пытались оставить stdout {} пустым в разделе output файла конфигурации, чтобы проверить вывод из консоли logstash?

Как упоминал @baudsp, лучше использовать фильтр grok, когда вы имеете дело с файлами журналов. Что-то вроде этого:

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
}

Источник: Анализ журналов с помощью Logstash

person Kulasangar    schedule 25.10.2016