1

Я экспериментирую с ELK для анализа наших файлов журналов. После доступной документации удалось настроить стек на моем компьютере. Теперь я столкнулся с проблемой создания индекса эластичного поиска. Раньше я использовал filebeat -> logstash -> elasticsearch -> сочетание kibana и используя следующий файл logstash.conf удалось отправить данные в elasticsearchELK Stack - Создание индекса статистики (logstash)

input { 
    beats { 
    port => 5044 
    type => "log" 
    } 
} 

output { 
    elasticsearch { 
    hosts => "localhost:9200" 
    manage_template => false 
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 
    document_type => "%{[@metadata][type]}" 
    } 
} 

и индекс в упругом поиска оценивали по

"filebeat-*" 

из выражения

index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 

Теперь я изменил logstash.conf на основе моего фактического логфайл

input { 

file 
{ 
    path => "C:\logs\application.log" 
    start_position => "beginning" 
    codec => 
    multiline { 
     charset => "ISO-8859-1" 
     pattern => "^%{TIMESTAMP_ISO8601}" 
     max_lines => 1000 
     negate => true 
     what => "previous" 
    } 
} 

} 

filter { 
mutate { 
    gsub => [ "message", "\r", "" ] 
    } 

    grok { 
    patterns_dir => "./patterns" 
    match => {"message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL1:loglevel} %{THREAD:thread} %{IP5:remoteipaddress} %{JAVA:logclass} %{GREEDYDATA:details}"} 
    add_field => [ "received_at", "%{@timestamp}" ] 
    add_field => [ "received_from", "%{host}" ] 

    } 
    date { 
      match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ] 
      remove_field => [ "timestamp" ] 
     } 


} 

output { 

    elasticsearch { 
       hosts => "localhost:9200" 
    manage_template => false 
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 
    document_type => "%{[@metadata][type]}" 
       } 
       file { 
    path => "C:\logs\output.txt" 
    } 
} 

В этом случае logstash доволен конфигурационным файлом, но индекс, предложенный мной для поиска эластичности, не оценивается должным образом.

Если я инспектировать упругую поиск с помощью главного модуля,

http://localhost:9200/_plugin/head/ 

Индекс выглядит как

%{[@metadata][beat]}- 

enter image description here

Я не знаю, почему выражение индекса не оценивается Теперь. Любые указатели для решения этой проблемы были бы полезными.

Спасибо заранее, San

ответ

1

Некоторые плагины logstash использовать метаданные для передачи полей, которые вы не хотите хранить в документе. В вашем первом примере вход битов устанавливает определенные метаданные, которые используются позже в результатах elasticsearch для установки индекса и типа. Поскольку входной файл не устанавливает эти поля метаданных, logstash выводит имя переменной вместо пустой строки, поэтому он устанавливает индекс «% {[@ metadata] [beat]} - 2016.04.05», дата известно, но бит поля метаданных не является.

Если вы просто оставить выход elasticsearch, как это по умолчанию он должен работать нормально:

elasticsearch { hosts => "localhost:9200" }

Если оставить manage_template как ложь, это будет также не применять logstash- шаблон и полевые отображения могут быть бит, поэтому я рекомендую оставить это как значение по умолчанию (true) снова.

1

Поскольку вы знаете, что индекс должен быть вызван, просто положить его в elasticsearch outoput:

Since you know what the index should be called, just put it in the `elasticsearch` output: 

output { 
    elasticsearch { 
    hosts => "localhost:9200" 
    manage_template => false 
    index => "filebeat-%{+YYYY.MM.dd}" 
    document_type => "whatever_type_filebeat_put_in" 
    } 
} 
Смежные вопросы