Начало работы Filebeat со старыми смещениями файлов, используя старый реестр
Я запускаю Filebeat (раньше его называли "logstash-forwarder") в докере, используя образ prima/filebeat.
Файлы журнала расположены в томе, загруженном в контейнер, и я хочу иметь возможность удалить контейнер и запустить его повторно без повторной отправки журналов в logstash.
Я попытался загрузить файл реестра /.filebeat как том, чтобы он был перезагружен при запуске, но все, что я получаю, это следующие ошибки:
2016/02/03 13:47:29.107457 file_other.go:39: ERR Rotate error: rename /.filebeat.new /.filebeat: device or resource busy
2016/02/03 13:47:29.107788 registrar.go:105: ERR Writing of registry returned error: rename /.filebeat.new /.filebeat: device or resource busy. Continuing..
Кто-нибудь случайно знает, как это сделать?
1 ответ
В Filebeat версии 1.2.3 (другие версии могут быть такими же, версия 1.3 вышла несколько дней назад, а я еще не пробовал), вам нужно будет указать путь к файлу реестра. Файл реестра - это файл, в котором Filebeat сохраняет смещение чтения (другими словами, текущая точка чтения в файле (ах) журнала (-ов), который он обрабатывает).
Вам необходимо указать путь к реестру в вашем filebeat.yml
файл, после prospectors
раздел.
Что-то вроде:
filebeat:
prospectors:
-
document_type: wildfly-server
input_type: log
paths:
- /path/to/my/log.log
multiline:
pattern: 'your pattern'
negate: true
match: after
registry_file: /data/.filebeat
logging:
level: debug
to_syslog: true
output:
logstash:
hosts:
- "127.0.0.1:5000"
Затем в вашем файле создания докера вам нужно смонтировать том, указывающий на ваш registry_file
дорожка. Что-то вроде:
filebeat:
image: prima/filebeat:latest
volumes:
- /data/filebeat:/data
hostname: qa
Тогда вы должны увидеть в принимающей .filebeat
файл находится в /data/filebeat
папка.