🙀 Настройка NXLog для пересылки системных журналов на Rsyslog Server на Ubuntu |

🙀 Настройка NXLog для пересылки системных журналов на Rsyslog Server на Ubuntu

Мануал

В этом руководстве мы узнаем, как настроить NXLog для пересылки системных журналов на сервер Rsyslog в Ubuntu 18.04.

Существуют различные решения для сбора журналов NXLog.

В этом руководстве мы собираемся настроить версию NXLog с открытым исходным кодом.

NXLog недоступен в репозиториях Ubuntu 18.04 по умолчанию.

Следовательно, мы собираемся скачать пакет DEB и установить его с помощью менеджера пакетов dpkg.

Чтобы загрузить двоичный файл установки NXLog, перейдите на страницу загрузок NXLog Community Edition и загрузите одну из них для Ubuntu 18.04.

wget https://nxlog.co/system/files/products/files/348/nxlog-ce_2.10.2150_ubuntu_bionic_amd64.deb

Теперь, когда NXLog CE установлен, вам необходимо настроить его для пересылки журналов на удаленный сервер Rsyslog.

Файл конфигурации по умолчанию для NXLog CE – это /etc/nxlog/nxlog.conf.

NXLog может быть настроен на получение и чтение журналов из различных типов источников, включая;

  • данные журнала, полученные по сети
  • события, хранящиеся в базах данных
  • сообщения, прочитанные из файлов
  • данные, полученные с помощью исполняемых файлов

Это руководство посвящено настройке NXLog CE для получения, чтения и пересылки журналов из файлов системных журналов на удаленный сервер.

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

mv /etc/nxlog/nxlog.conf /etc/nxlog/nxlog.conf.original

Создайте новый файл конфигурации.

touch /etc/nxlog/nxlog.conf

Файл конфигурации NXLog состоит из глобальных директив, экземпляров модулей и маршрутов.

Для начала установите ROOT в основной каталог NXLog.

# Set the NXLog main directory
define ROOT /etc/nxlog

Определите глобальные директивы

Существует множество глобальных директив, которые можно установить.

Однако в простейшем случае мы определим каталог модулей NXLog, каталог для записи кэшированных данных, уровень ведения журнала, файл PID NXLog, рабочий каталог NXLog, файл журнала NXLog и т. д.

Это можно сделать, используя следующие директивы соответственно; ModuleDir, CacheDir, LogLevel, PidFile, SpoolDir.

# Global Directives
Moduledir /usr/lib/nxlog/modules
CacheDir %ROOT%/data
SpoolDir %ROOT%/data
Pidfile /tmp/nxlog.pid
LogFile /var/log/nxlog/nxlog.log

Некоторые из других важных глобальных директив включают User и Group.

NXLog по умолчанию запускается от пользователя nxlog, за исключением того, что этот пользователь не может читать каталог /var/log, в который записывается большинство системных журналов.

Чтобы обойти это, NXlog может быть настроен для запуска с правами root, пропустив опцию User.

Тем не менее, это более безопасно, если вы можете добавить пользователя NXlog в группу с правами на чтение файла журнала.

Определите директивы модуля Input

По сути, мы собираемся определить основные директивы модулей ввода, которые читают различные файлы журнала для отправки на удаленный сервер журнала.

# Define Input Modules
<Input in1>
    Module      im_file
    File        "/var/log/auth.log"
    SavePos TRUE
    ReadFromLast TRUE
</Input>
<Input in2>
    Module      im_file
    File        "/var/log/syslog"
    SavePos TRUE
    ReadFromLast TRUE
</Input>

Определите директивы модуля Ouput

Существуют разные типы модулей вывода.

Мы собираемся установить UDP как наш модуль вывода.

Вы можете проверить другие модули здесь.

Вам необходимо установить IP-адрес удаленного хоста и порт.

# Define Output Modules
<Output udp>
    Module      om_udp
    Host        192.168.43.208
    Port        514
</Output>

Определите директивы Route

Определите поток данных с помощью директивы Path.

Несколько входных журналов подачи в маршрут разделяются запятыми.

Список модулей ввода сопровождается стрелкой (=>).

Модули процессора или модули вывода следуют после.

Несколько процессоров разделены стрелками.

Синтаксис:

Path INPUT1[, INPUT2…] => [PROCESSOR1 [=> PROCESSOR2…] =>]
OUTPUT1[, OUTPUT2…]

Следовательно, мы можем определить это в нашем файле конфигурации как;

# Route definition
<Route 1>
    Path      in1,in2 => buffer => udp
</Route>

Это все о нашей конфигурации в ее самой простой форме.

В общем, это должно выглядеть так;

# Set the NXLog main directory
define ROOT /etc/nxlog
# Global Directives
Moduledir /usr/lib/nxlog/modules
CacheDir %ROOT%/cache_dir
SpoolDir %ROOT%/spool_dir
Pidfile /tmp/nxlog.pid
LogFile /var/log/nxlog/nxlog.log
# Define Input Modules
<Input in1>
    Module      im_file
    File        "/var/log/auth.log"
    SavePos TRUE
    ReadFromLast TRUE
</Input>
<Input in2>
    Module      im_file
    File        "/var/log/syslog"
    SavePos TRUE
    ReadFromLast TRUE
</Input>
#Define Processor Modules
<Processor buffer>
   Module      pm_buffer
   MaxSize      512000   # Buffer logs upto 512MB
   Type disk   # Disk buffering
</Processor>
# Define Output Modules
<Output udp>
    Module      om_udp
    Host        192.168.43.188 # IP of Rsyslog Server
    Port        514
</Output>
# Route Definition
<Route 1>
    Path      in1,in2 => buffer => udp
</Route>

Создайте каталоги Cache и Spool.

mkdir -p /etc/nxlog/{cache_dir,spool_dir}

Перезапустите NXLog и настройте его на загрузку системы.

systemctl restart nxlog
systemctl enable nxlog

Проверьте статус.

systemctl status nxlog
* nxlog.service - LSB: logging daemon
   Loaded: loaded (/etc/init.d/nxlog; generated)
   Active: active (running) since Sat 2019-03-16 19:23:19 EAT; 53s ago
     Docs: man:systemd-sysv-generator(8)

Убедитесь, что вы можете получать журналы на удаленном сервере.

Это POC, ssh на сервер Ubuntu 18.04 с nxlog, запущенным с другого сервера.

Листинг логов с tail

tail -f /var/log/remotelogs/192.168.43.203.log 
2019-03-16T19:32:40-04:00 u18svr sshd[21327]: Connection closed by 127.0.0.1 port 50630 [preauth]
2019-03-16T19:34:12-04:00 u18svr sshd[21335]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.43.149  user=amos
2019-03-16T19:34:14-04:00 u18svr sshd[21335]: Failed password for amos from 192.168.43.149 port 48224 ssh2
2019-03-16T19:34:18-04:00 u18svr sshd[21335]: Accepted password for amos from 192.168.43.149 port 48224 ssh2
2019-03-16T19:34:18-04:00 u18svr sshd[21335]: pam_unix(sshd:session): session opened for user amos by (uid=0)
2019-03-16T19:34:18-04:00 u18svr systemd-logind[581]: New session 26 of user amos.
...

Это все о том, как настроить NXLog для пересылки системных журналов на сервер Rsyslog в Ubuntu 18.04.

Не стесняйтесь читать больше о NXLog в их справочном руководстве.

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий для Дмитрий Отменить ответ

  1. Дмитрий

    Хорошее описание настройки. Отлично всё расписал.
    Одно замечание. Наверное лучше отправлять логи программой которая их пишет?
    А пример отправки демонстрировать на чём-то, что пишет логи напрямую в файл миную syslog.

    Ответить