2016-12-16 5 views
0

Я использую filebeat, и я хочу также ввести metricbeat. Выход Filebeat индексируется в logstash- *, но мне нужен другой индекс с данными из metricbeat (например, metricbeat-test -% {+ YYYY.MM.dd}). Они будут работать вместе на одном сервере.Elasticsearch несколько индексов за такт?

Как я могу проинструктировать logstash для индексирования файла filebeat в logstash- * и ЕСЛИ он metricbeat для продолжения и использования другого индекса?

Более или менее мне нужно заявление IF, однако я не уверен, что я должен туда включать!

Мой logstash конфигурации выглядит следующим образом:

выход {elasticsearch { хостов => "10.0.0.5:9200" manage_template => "истинный" индекс => «logstash-тест -% {+ YYYY.MM.DD}» document_type => "Апач" }}

ответ

2

Когда любой Удар отправляет данные Logstash он добавит индекс получателя в [@metadata][beat] поле. По умолчанию Beat установит это значение на свое имя (например, filebeat). И если вы хотите настроить значение, вы можете установить опцию конфигурации output.logstash.index.

Чтобы воспользоваться метаданными, который присутствует во всех событиях идет от Beats вы должны настроить выход elasticsearch в Logstash следующим образом:

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

Это из Beats documentation о том, как использовать их с Logstash. Я добавил условие, чтобы этот вывод использовался только для ваших данных Beats. Вы должны настроить другой выход elasticsearch для других данных, проходящих через конвейер.

Наконец, потому, что вы используете filebeat-* и metricbeat-* индексов вы должны вручную установить предоставленные шаблоны индексов. В каждом загрузочном пакете содержится индексный шаблон для каждого бита. Существует шаблон для Elasticsearch 2.x и 5.x, используйте соответствующий.

Вы устанавливаете шаблон с завитком (docs). Например,

curl -XPUT 'http://localhost:9200/_template/filebeat' [email protected]/etc/filebeat/filebeat.template.json

+0

Я сделал то, что вы предложили, но он не работает. Все работает нормально до последнего шага, который находится от logstash -> elasticsearch. Ничто не индексируется, и я не уверен, почему, выполнив то, что вы предложили, logstash вообще не разговаривает с elasticsearch. Моя топология - filebeat -> logstash -> redis -> logstash -> es .. все шаги до тех пор, пока последняя logstash не будет прекрасна и не работает, но elasticsearch ничего не получает – user3124171

+0

Вы не упоминали Redis в своем исходном вопросе. С Redis в этом цикле, вероятно, что '@ metadata' не включается при переходе из Logstash -> Redis, поэтому' [@metadata] [beat] 'может отсутствовать. Я рекомендую использовать 'output {stdout {codec => rubydebug}}' в финальной Logstash для отладки того, что входит в Redis. –

+0

Проблема заключается в ключевом значении входа redis logstash. Я не знаю, почему это не работает, так как моя выходная конфигурация выглядит так: redis { host => "172.21.0.2" port => "6379" key => "% {[@ metadata] [beat]}" data_type => "list" ', который является прекрасным, однако, когда я устанавливаю' key => "% {[@ metadata] [beat]}" ', как в redis input, он не работает ... Я понятия не имею, что происходит здесь lol – user3124171

Смежные вопросы