Как записывать удаленный syslog/журнал в журналы по хостам?

Вопрос или проблема

Я пытаюсь настроить сервер логирования с помощью rsyslog. В качестве клиентов у меня есть машины, которые могут использовать journald, а также устаревшие приложения, которые могут работать только с syslog. Поэтому должен существовать простой syslog-эндпоинт.

Я хотел бы хранить все логи как отдельные журналы на сервере логирования, чтобы извлечь выгоду из его преимуществ по сравнению с обычным syslog. Как я могу этого достичь?

То, что я пробовал/думал:

  • Использование omfwd на клиентах логирования и imtcp+omjournal на сервере логирования: Это, похоже, работает, однако все записи журнала сохраняются в собственном журнале сервера логирования, и я не могу отправить их в отдельные местоположения.
  • Использование omfwd на клиентах логирования и omfile для динамических файлов на сервере логирования и попытка передать их на imfile+omjournal: Я думаю, это должно сработать, но не могу написать файл конфигурации, который это достижет.
  • Использование omhttp на клиентах логирования для связи с systemd-journal-remote: Я подумывал об этом, но не уверен, как это настроить.

Ответ или решение

Для настройки сервера журналирования с использованием rsyslog и маршрутизации журналов на уровне хоста с использованием systemd-journald, можно использовать комбинацию rsyslog и journald. Основной задачей является организация перенаправления логов от клиентов на сервер, чтобы каждый хост имел свои собственные журналы.

Вот шаги, которые помогут вам достичь этой цели:

Шаг 1: Настройка сервера журналирования

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

    sudo apt update
    sudo apt install rsyslog rsyslog-gnome rsyslog-journal
  2. Настройка конфигурации rsyslog:
    Откройте конфигурационный файл /etc/rsyslog.conf или создайте новый файл, например, /etc/rsyslog.d/01-remote.conf, и добавьте следующие строки:

    module(load="imtcp")  # Загружаем модуль для TCP
    input(type="imtcp" port="514")  # Указываем порт для входящих соединений
    
    # Задаем путь для хранения журналов на основе хоста
    template(name="RemoteHost" type="string" string="/var/log/journal/%HOSTNAME%.journal")
    
    if ($fromhost-ip != "127.0.0.1") then {
       action(type="omjournal" template="RemoteHost")
    }
  3. Создание каталогов для хранения журналов:
    Убедитесь, что каталог /var/log/journal/ существует или создайте его:

    sudo mkdir -p /var/log/journal
    sudo chmod 755 /var/log/journal
  4. Перезапуск rsyslog:
    После изменений в конфигурации перезапустите службу rsyslog:

    sudo systemctl restart rsyslog

Шаг 2: Настройка клиента

  1. Установка rsyslog:
    На каждом клиенте убедитесь, что установлен rsyslog:

    sudo apt update
    sudo apt install rsyslog
  2. Настройка конфигурации rsyslog:
    Откройте конфигурационный файл /etc/rsyslog.conf или создайте новый файл в /etc/rsyslog.d/ и добавьте строку для отправки журналов на сервер:

    *.* @@[IP_СЕРВЕРА]:514

    Здесь [IP_СЕРВЕРА] замените на фактический IP-адрес вашего сервера журналирования.

  3. Перезапуск rsyslog:
    После конфигурации перезапустите службу rsyslog:

    sudo systemctl restart rsyslog

Альтернативный вариант: Использование journald на клиентах

Если вы хотите использовать systemd-journald для отправки журналов:

  1. Установите systemd-journal-remote на сервере:

    sudo apt update
    sudo apt install systemd-journal-remote
  2. Настройка journald для отправки журналов:
    На каждом клиенте вы можете использовать systemd-journal-gatewayd или systemd-journal-remote, чтобы отправлять журналы на сервер.

  3. Настройка journald на клиенте:
    В /etc/systemd/journald.conf добавьте или измените следующие параметры:

    [Journal]
    ForwardToSyslog=yes
  4. Устраните проблемы с правами доступа:
    Убедитесь, что у вас есть соответствующие права доступа для чтения и записи журналов.

  5. Настройка клиента для передачи журналов:
    Используйте systemd-journal-remote для передачи журналов по сети на сервер.

Заключение

Такое решение позволит вам организовать локальные журналы на сервере для каждого хоста, используя как rsyslog, так и systemd-journald. Журналы могут быть легко доступны для анализа и управления. Убедитесь в правильной настройке сети, и при необходимости добавьте шифрование, например, через TLS, чтобы обеспечить безопасность передаваемых данных.

Оцените материал
Добавить комментарий

Капча загружается...