Может так произойти что при использовании связки Filebeat + Elasticsearch вы в итоге получите дублирование логов. А заметить это можно далеко не сразу, так как это происходит только после перезапуска Filebeat. Т.е. для примера вы мониторите файл /var/log/messages
и вроде бы всё нормально вам приходят события (документы) в Elasticsearch, но вот вы решаете по какой-то причине перезапустить Filebeat и в ужасе осознаёте, что все те события, которые были отправлены в Elasticsearch ранее отправляются снова и в итоге вы получаете дублирование.
Файл registry
Для того чтобы понимать какие события Filebeat уже отправил в Elasticsearch используется файл под названием registry, в котором хранится информации о отправке событий. Т.е. если события с файла /var/log/messages
были успешно доставлены в Elasticsearch в файл registry помещается информация обозначающая это. Когда вы перезапускаете сервис Filebeat он как раз обращается к этому файлу для того чтобы понять отправлялись ли события с файла ранее.
Если вам вдруг нужно заново отправить все события из файла в Elasticsearch в теории вы просто можете удалить registry и перезапустить Filebeat. Но на практике я это не проверял.
Вариант 1: Нет прав на запись
Естественно первым делом стоит обратиться к логам самого Filebeat и если вы там найдёте запись вида Writing of registry returned error: open /data/registry.new: permission denied.
то значит нужно дать пользователю от которого запущен Filebeat доступ к папке где лежит registry.
Одним из возможных решений будет изменить владельца директории и файлов на пользователя, от которого запущен Filebeat.
sudo chown -R filebeat path_to_registry
sudo systemctl restart filebeat
Вариант 2: Несколько filestream без id
При таком случае в логах вы найдёте сообщение filestream input ID without ID might lead to data duplication, please add an ID and restart Filebeat
. И как понятно из самого сообщения если мы используем несколько filestream, то необходимо каждому задать id.
sudo vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
id: "bash"
enabled: true
paths:
- /home/*/.bash_history
- type: filestream
id: "oom"
enabled: true
paths:
- /var/log/messages
sudo systemctl restart filebeat
Комментарии