Назад | Перейти на главную страницу

как передать файл журнала на другой сервер Linux для обработки

Есть ли надежный способ передачи журналов с одного сервера на другой?

В настоящее время я использую скрипт cron для передачи файла с scp на другой сервер каждые 5 минут.

*/5 * * * * root

scp ~/my_log_file.txt user@remote_host.com:/remote/log/directory

  1. Мой предпочтительный метод, предложенный ryekayo, - просто отправить сообщения системного журнала в локальный файл И на удаленный хост:

/etc/rsyslog.conf:

authpriv.* /var/log/secure
authpriv.* @remote_host.com

(Эта часть средства, как мне кажется, работает практически со всеми демонами syslog. Часть, касающаяся сортировки вещей на другом конце, специфична для rsyslog.)

затем на удаленном конце вам необходимо настроить принимающий сервер для фильтрации удаленных сообщений в соответствующее место (отправив хосту с% HOSTNAME% как часть имени файла, по объекту% syslogfacility-text%, имени программы% programname% и т. д. .)

  1. Как вы говорите, вы можете использовать scp с cron
  2. В качестве альтернативы, я думаю, если вы используете rsync
    rsync ~/my_log_file.txt user@remote_host.com:/remote/log/directory
    с помощью cron вы можете сохранить повторное копирование первой части файла журнала (я выражаю неуверенность, поскольку вы определенно сохраняете КОПИРОВАНИЕ уже переданной части, но вы все равно делаете сравнение на каждой стороне, чтобы найти уже переданную часть, которую нужно пропустить. Это должно быть более осторожным SSD и позволяет избежать загрязнения буферов ввода-вывода ядра, но при этом по-прежнему требуются операции ввода-вывода для сканирования начала на обоих концах.).
  3. NFS (или Ceph / GlusterFS / SMBFS) монтирует каталог одной машины на другую и выполняет непрерывный хвост на другой машине.

Это те варианты, о которых я могу думать.

В зависимости от вашей цели передачи журналов, вы можете быть более эффективными, включив передачу в пост-ротацию logrotate, если цель состоит в том, чтобы хранить их в течение длительного времени на большом диске. Если цель - получить доступ к журналам за последние 5 минут (например, для OSSEC), то лучше использовать указанные выше методы передачи.

Также следует отметить, что если вы считаете, что машина, генерирующая журналы, ненадежна или небезопасна, может быть лучше получить копию хоста, хранящую журналы, с машины, генерирующей журнал, чем дать ей разрешение на запись на удаленную машину.

Если вы собираетесь использовать системный журнал, вы также можете использовать syslog-ng ( https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/chapter-quickstart.html ).

Я предполагаю, какой метод соответствует вашим потребностям, на самом деле зависит от того, что вы хотите делать с сообщениями журнала после их передачи на свой сервер. Использование системного журнала дает вам преимущество передачи в реальном времени, а также для обработки сообщений и извлечения из них информации, если это необходимо.