Сервер rsyslog – Можете ли вы разделить и организовать логи?

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

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

Но, похоже, логирование не организовано. Все логи брандмауэра просто сбрасываются в /var/log/messages на сервере rsyslog. Я, возможно, ожидал, что они хотя бы будут в специальном файле или каталоге для конкретной машины.

Как я могу организовать входящее логирование? Если я настрою 20 серверов, чтобы все записывали информацию на центральный сервер rsyslog, я действительно не хочу, чтобы всё сбрасывалось в один большой файл или несколько файлов. Как я могу настроить rsyslog, чтобы указать, куда и что логировать? Например, чтобы все логи конкретного сервера находились в его собственном каталоге/файле и т.д. Это возможно?

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

В частности, вам может быть интересно посмотреть образцы конфигурации. Этот рецепт может быть близок к тому, что вам нужно.

https://web.archive.org/web/20180328151406/http://wiki.rsyslog.com/index.php/Sysklogd_drop-in_with_remote_logs_separated_by_dynamic_directory

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

Да, организация и разделение журналов в rsyslog сервере — это вполне выполнимая задача, и это можно сделать с помощью настройки конфигурационного файла rsyslog. Давайте рассмотрим, как вы можете это сделать.

Шаги для организации журналов в rsyslog

  1. Редактирование конфигурационного файла rsyslog:
    Откройте основной конфигурационный файл rsyslog, который обычно находится по пути /etc/rsyslog.conf или в директории /etc/rsyslog.d/ (в зависимости от вашей дистрибуции).

    sudo nano /etc/rsyslog.conf
  2. Настройка приема удаленных логов:
    Убедитесь, что у вас включен модуль для приема удаленных логов. Ниже приведен пример конфигурации, чтобы включить TCP и/или UDP:

    module(load="imudp") # для UDP
    input(type="imudp" port="514")
    
    module(load="imtcp") # для TCP
    input(type="imtcp" port="514")
  3. Создание правил для маршрутизации логов:
    Вам нужно добавить правила для записи логов в отдельные файлы по имени хоста или по типу источника. Например:

    # Определяем формат для хранения логов
    template(name="RemoteHostLogs" type="string" string="/var/log/%$!hostname%/%$!programname%.log")
    
    # Распределяем журналы
    if ($fromhost-ip == 'IP_ВАШЕГО_СЕРВЕРА') then ?RemoteHostLogs
    & stop

    В этом примере вы создаете отдельные файлы /var/log/имя_хоста/имя_программы.log, где имя_хоста заменяется на имя удаленного хоста, отправляющего лог, а имя_программы — на имя программы, которая генерирует логи.

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

    mkdir /var/log/имя_хоста
  5. Перезапуск службы rsyslog:
    После внесения всех изменений, не забудьте перезапустить службу rsyslog для применения новых настроек:

    sudo systemctl restart rsyslog

Дополнительные ссылки и ресурсы

Для получения более подробной информации и примеров конфигурации, вы можете обратиться к следующим ссылкам:

Заключение

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

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

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