Начало работы 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 папка.

Другие вопросы по тегам