Как определить разделенные индексы для разных журналов в Filebeat/ELK?

Мне интересно, как создавать отдельные индексы для разных журналов, загруженных в logstash (которые позже были переданы на elasticsearch), так что в kibana я могу определить для них два индекса и обнаружить их.

В моем случае у меня есть несколько клиентских серверов (каждый из которых установлен с filebeat) и централизованный сервер журнала (ELK). Каждый клиентский сервер имеет разные типы журналов, например. redis.log, python logs, mongodb logs, которые мне нравятся, чтобы отсортировать их по разным индексам и сохранить в elasticsearch.

Каждый клиентский сервер также выполняет различные задачи, например. базы данных, пользовательские интерфейсы, приложения. Поэтому я также хотел бы дать им разные имена индексов (изменив индекс вывода в filebeat.yml?).

2 ответа

В конфигурации Filebeat вы можете использовать document_type, чтобы идентифицировать различные журналы, которые у вас есть. Затем внутри Logstash вы можете установить значение поля type для управления целевым индексом.

Однако, прежде чем отделять свои журналы от разных индексов, вы должны оставить их в одном индексе и использовать либо type, либо настраиваемое поле чтобы различать типы журналов. См. index vs type.

Пример Конфигурация разработчика Filebeat:

filebeat:
 prospectors:
 - paths:
 - /var/log/redis/*.log
 document_type: redis
 - paths:
 - /var/log/python/*.log
 document_type: python
 - paths:
 - /var/log/mongodb/*.log
 document_type: mongodb

Пример конфигурации Logstash:

input {
 beats {
 port => 5044
 }
}
output {
 # Customize elasticsearch output for Filebeat.
 if [@metadata][beat] == "filebeat" {
 elasticsearch {
 hosts => "localhost:9200"
 manage_template => false
 # Use the Filebeat document_type value for the Elasticsearch index name.
 index => "%{[@metadata][type]}-%{+YYYY.MM.dd}"
 document_type => "log"
 }
 }
}


В logstash вы можете определить несколько входных, фильтрующих или выходных плагинов с помощью тегов:

input {
 file {
 type => "redis"
 path => "/home/redis/log"
 }
 file {
 type => "python"
 path => "/home/python/log"
 }
} 
filter {
 if [type] == "redis" {
 # processing .......
 }
 if [type] == "python" {
 # processing .......
 }
}
output {
 if [type] == "redis" {
 # output to elasticsearch redis
 index => "redis" 
 }
 if [type] == "python" {
 # output to elasticsearch python
 index => "python"
 }
}

licensed under cc by-sa 3.0 with attribution.