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

88
10

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


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


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

спросил(а) 2016-08-08T16:35:00+03:00 4 года назад
1
Решение
95

В конфигурации 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"
}
}
}

ответил(а) 2016-08-09T00:58:00+03:00 4 года назад
56

В 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"
}
}

ответил(а) 2016-08-08T21:57:00+03:00 4 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема