Rsyslog windows agent настройка

Обновлено: 30.06.2024

Rsyslog — это очень быстрый, расширяемый сервис для управления логами с огромным количеством возможностей. Среди его возможностей можно отметить поддержку фильтрации контента, а также передачу логов по сетям. Основные возможности:

  • Многопоточность;
  • TCP, SSL, TLS, RELP;
  • Поддержка MySQL, PostgreSQL, Oracle;
  • Фильтрация журналов;
  • Полностью настраиваемый формат вывода.

Но важное значение имеет уровень подробности логирования. Вы можете настраивать подробность в каждой отдельной программе или же с помощью syslog. Это поможет уменьшить использование дискового пространства на хранение логов. Но тут нужно найти компромисс между количеством информации и использованием диска.

Например, ядро Linux определяет такие уровни логов, или — как мы будем называть их ниже — приоритеты:

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

Все настройки Rsyslog находятся в файле /etc/rsyslog.conf и других конфигурационных файлах из /etc/rsyslog.d. Вы можете посмотреть существуют ли у вас эти файлы, выполнив:

Основной конфигурационный файл — /etc/rsyslog.conf, в нем подключены все файлы из папки rsyslog.d с помощью директивы IncludeConfig в самом начале файла:

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

Синтаксис конфигурационного файла очень прост:

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

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

Дальше идут глобальные директивы:

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

Дальше следует набор прав разрешений для файлов-журналов, которые будут созданы в вашей системе:

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

Выше была более общая настройка syslog, ну а теперь правила сортировки логов. Вот набор правил по умолчанию:

Источник и приоритет нечувствительны к регистру. Также заметьте, что приоритеты уровней error, warn и panic больше не используются, так как считаются устаревшими. В целом, в качестве источников вы можете использовать:

  • auth;
  • authpriv;
  • cron;
  • daemon;
  • kern;
  • lpr;
  • mail;
  • mark;
  • news;
  • security (эквивалентно auth);
  • syslog;
  • user;
  • uucp;
  • local0 … local7;

А в качестве приоритетов вы можете применить:

  • emerg (раньше panic);
  • alert;
  • crit;
  • error (раньше err);
  • warn (раньше warning);
  • notice;
  • info;
  • debug.

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

В качестве операции сравнения вы можете использовать такие варианты:

  • contains — поле содержит указанное значение;
  • isequal — поле должно быть идентичным значению;
  • startswith — поле должно начинаться со значения;
  • regex — сравнивает поле с регулярным выражением.

Кроме того, можно использовать более простой синтаксис, в виде выражения if. Вот основной синтаксис:

Здесь используются те же самые компоненты, только выглядит немного проще. Например:

Здесь 514 — это порт, на котором слушает rsyslog. Настройка rsyslog на прием логов заключается в запуске сервиса с модулями imtcp и imudp. Далее все, что нужно для того, чтобы получить логи с определенной машины, отфильтровать их из общего потока с помощью фильтров:

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

infoitcomua1

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

Лабораторная установка

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

Как настроить сервер Rsyslog на Debian 11 (Bullseye)

  • Сервер Rsyslog: Debian 11 IP: 192.168.1.151
  • Клиент Rsyslog: Ubuntu 20.04 IP: 10.20.0.170

Шаг 1. Настройте Rsyslog на сервере

Как упоминалось ранее, Rsyslog работает по модели клиент-сервер, и мы начнем с настройки Rsyslog на сервере Debian 11. В Debian 11 по умолчанию устанавливается Rsyslog. Если по какой-то причине Rsyslog отсутствует, вы можете установить его с помощью команды:

После установки вы можете проверить его рабочий статус следующим образом:

Продолжите и раскомментируйте следующие строки, которые разрешают прием системного журнала UDP и TCP от удаленных клиентов.

Как настроить сервер Rsyslog на Debian 11 (Bullseye) 1

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

Как настроить сервер Rsyslog на Debian 11 (Bullseye) 2

Файлы журнала будут использовать следующее соглашение об именах:

Чтобы применить изменения, перезапустите демон rsyslog.

По умолчанию rsyslog прослушивает порт 514. Вы можете подтвердить, что это порт, который прослушивает демон rsyslog, выполнив команду ss .

Как настроить сервер Rsyslog на Debian 11 (Bullseye)3

Шаг 2. Настройте правила брандмауэра для rsyslog

Затем перезагрузите брандмауэр, чтобы применить правило брандмауэра, как показано ниже.

Следующим шагом будет настройка клиентской системы Ubuntu для отправки файлов журнала на сервер rsyslog.

Шаг 3. Настройте клиентскую систему rsyslog

Затем отредактируйте файл конфигурации rsyslog.

Перейдите в самый конец файла и добавьте эти строки.

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

Ниже приводится сводка всех изменений в конфигурации клиента.

Как настроить сервер Rsyslog на Debian 11 (Bullseye) 5

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

На этом этапе клиентская система должна отправлять файлы журнала на сервер rsyslog. Вернемся к серверу и узнаем.

Шаг 4. Просмотрите файлы журнала клиента

Все файлы журналов (включая серверы) хранятся в каталоге /var/log/ . Чтобы просмотреть журналы клиента, выполните следующую команду:

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

Как настроить сервер Rsyslog на Debian 11 (Bullseye) 6

Вы можете дополнительно просмотреть файлы журналов, содержащиеся в главном каталоге журналов.

Как настроить сервер Rsyslog на Debian 11 (Bullseye) 7

Для просмотра журналов в реальном времени используйте команду tail, как показано. Здесь мы просматриваем журналы пользователя sudo.

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

Это все из этого поста, надеюсь, вы нашли его информативным. Пожалуйста, поделитесь своими запросами и отзывами в разделе комментариев ниже.

Rsyslog позволяет настроить отправку логов для определенного приложения на централизованный сервер. Это может значительно упростить процесс контроля за событиями на компьютерах в сети. Его настройка на различных системах на базе Linux, практически, не отличается. В данной инструкции мы рассмотрим процесс установки и настройки на примере CentOS и Ubuntu.

Подготовка сервера

На сервере нужно, предварительно, выполнить следующие настройки.

Время

Для правильной фиксации времени логов, необходимо настроить его синхронизацию.

Сначала задаем правильный часовой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в данном примере мы использовали московское время.

Затем устанавливаем и запускаем chrony.

а) на системе CentOS / Red Hat:

yum install chrony

systemctl enable chronyd

systemctl start chronyd

б) на системе Ubuntu / Debian:

apt-get install chrony

systemctl enable chrony

systemctl start chrony

Брандмауэр

Если используется брандмауэр, необходимо открыть порты TCP/UDP 514.

а) с помощью firewalld:

firewall-cmd --permanent --add-port=514/

б) с помощью iptables:

iptables -A INPUT -p tcp --dport 514 -j ACCEPT

iptables -A INPUT -p udp --dport 514 -j ACCEPT

в) с помощью ufw:

ufw allow 514/tcp

ufw allow 514/udp

SELinux

Проверяем, работает ли в нашей системе SELinux:

Если мы получаем в ответ:

. необходимо либо настроить SELinux:

semanage port -m -t syslogd_port_t -p tcp 514

semanage port -m -t syslogd_port_t -p udp 514

. либо отключить его командами:

Установка и запуск rsyslog

Установить rsyslog необходимо как на сервер, так и клиентские компьютеры. В зависимости от операционной системы сама установка будет выполняться одной из команд.

а) для систем на базе RPM (Red Hat / CentOS):

yum install rsyslog

б) для систем на базе deb (Debian / Ubuntu):

apt-get install rsyslog

После установки разрешаем автозапуск службы и стартуем ее:

systemctl enable rsyslog

systemctl start rsyslog

Настройка сервера

Открываем конфигурационный файл:

Снимаем комментарии со следующих строк:

$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

* в данном примере мы разрешили запуск сервера для соединений TCP и UDP на портах 514. На самом деле, можно оставить только один протокол, например, более безопасный и медленный TCP.

После добавляем в конфигурационный файл строки:

$template RemoteLogs,"/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
&

* в данном примере мы создаем шаблон с названием RemoteLogs, который принимает логи всех категорий, любого уровня (про категории и уровни читайте ниже); логи, полученный по данному шаблону будут сохраняться в каталоге по маске /var/log/rsyslog/<имя компьютера, откуда пришел лог>/<приложение, чей лог пришел>.log; конструкция &

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

Перезапускаем службу логов:

systemctl restart rsyslog

Настройка клиента

Устанавливаем и запускаем rsyslog по инструкции, описанной выше. После приступаем к настройке клиента.

Все логи

Для начала можно настроить отправку всех логов на сервер. Создаем конфигурационный файл для rsyslog:

* где 192.168.0.15 — IP-адрес сервера логов. *.* — перенаправлять любой лог.

systemctl restart rsyslog

Для определенных категорий

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

Перезапускаем сервис логов:

systemctl restart rsyslog

Возможные категории для логов (facility):

Для определенного уровня

Перезапускаем сервис логов:

systemctl restart rsyslog

Возможные уровни логов:

Возможные категории для логов (severity):

Аудит определенного лог-файла

Мы можем настроить слежение за изменением определенного лога и передавать их на сервер. Для этого нужно настроить и сервер, и клиента.

Настройка клиента

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

$ModLoad imfile
$InputFileName /var/log/audit/audit.log
$InputFileTag tag_audit_log:
$InputFileStateFile audit_log
$InputFileSeverity info
$InputFileFacility local6
$InputRunFileMonitor

* в данном примере мы будем отслеживать изменения лог-файла /var/log/audit/audit.log; нас интересуют события от уровня info и выше; все события будет отмечены категорией local6 и переданы на сервер 192.168.0.15.

Перезапускаем сервис на клиенте:

systemctl restart rsyslog

Создаем новый шаблон для захвата логов:

$template HostAudit, "/var/log/rsyslog/%HOSTNAME%/audit.log"
local6.* ?HostAudit

* в данном примере мы создаем шаблон HostAudit; rsyslog будет принимать логи категории local6 и сохранять в файле /var/log/rsyslog/<имя компьютера, откуда пришел лог>/audit.log.

systemctl restart rsyslog

Лог определенного приложения

Некоторые приложения умеют отправлять лог напрямую на syslog. Например, nginx (начиная с версии 1.7.1). Для этого открываем конфигурационной файл (основной или конфиг виртуального домена):

Добавляем или редактируем соответствующие настройки для логов:

.
access_log syslog:server=192.168.0.15:514 info;
error_log syslog:server=192.168.0.15:514 warn;
error_log /var/log/nginx/error.log warn;
.

* в данном примере мы настроили хранение логов для nginx на сервере 192.168.0.15. Для ошибок также сохраняется локальный лог в файле /var/log/nginx/error.log.

Проверяем корректность конфигурационного файла nginx:

systemctl restart nginx

Чтение логов на сервере

В нашем примере сервер настроен на хранение логов по маске /var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log. Это значит, что в каталоге /var/log/rsyslog должны появляться папки с именами компьютеров, которые отправляют на сервер свои логи. Посмотреть список данных папок можно командой:

Чтение логов выполняется обычной командой cat или tail, например:

* здесь мы прочитаем лог для cron на компьютере comp1.

rsyslog В качестве стандартного демона системного журнала он предварительно установлен в большинстве выпусков Linux. Под конфигурацией архитектуры клиента / сервера, rsyslog В то же время сыграл две роли: 1. Как сервер системного журнала, rsyslog Журнал Информация из других объектов может быть собрана; 2. В качестве клиента Syslog, rsyslog Вы можете перенести внутреннюю информацию журнала на удаленный сервер системного журнала.

Здесь мы продемонстрируем, как пройти в Linux rsyslog Чтобы настроить централизованный сервер системного журнала. После ввода подробного объяснения сначала сначала принимайте стандарт Syslog.


Syslog Standard Foundation.

При сборе журналов через механизм системного журнала есть три важных вещей, которые необходимо учитывать:

Теперь мы более глубоко поняли, как определена конфигурация.

Уровень объекта определяет способ классификации внутренних системных процессов. Некоторые общие объекты в Linux включают в себя:

Сильный (приоритетный) уровень имеет фиксированные стандартные сокращения и со ссылкой на значение, номер 7 имеет самый высокий уровень, эти уровни содержат:

Наконец, цель заявление будет сделать в системном журнале клиента выполнить одно из следующих трех задач:

В RSYSLOG конфигурация Syslog основана на следующем режиме.

  1. [ facility - level ].[ severity - level ] [ destination ]

Настройка Rsyslog в Linux

Шаг 1: Спрос системы инициализации

Для того, чтобы установить хост Linux на центральный сервер журнала, необходимо создать отдельный раздел / уаг и выделить достаточно места на диске или создать специальный объем LVM группу. Это сделает сервер Syslog иметь возможность предпринять потенциальный рост в накопленном журнале сбора.

Шаг 2: Пусть Rsyslog фонового процесс вступает в силу

  1. $ModLoad imtcp
  2. $InputTCPServerRun 514

Следует отметить, что TCP и UDP могут быть введены в действие для мониторинга соединений TCP / UDP.

Шаг 3: Создайте шаблон приема журнала

Используйте текстовый редактор, чтобы открыть /etc/rslog.conf, затем добавьте следующие шаблоны перед блоком глобального директива.

  1. $template RemoteLogs , "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
  2. *.* ? RemoteLogs
  3. &

  1. [ facility - level ].[ severity - level ] ? RemoteLogs
  1. *. info , mail . none , authpriv . none , cron . none ? RemoteLogs

  1. $template IpTemplate , "/var/log/%FROMHOST-IP%.log"
  2. *.* ? IpTemplate
  3. &

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

В Debian, Ubuntu или CentOS / RHEL 6:

В Fedora или CentOS / RHEL 7:

Мы можем убедиться, что Rsyslog демон работает должным образом с помощью команды NetStat.

Rsyslog демон, работающий под прослушиванием порта UDP будет иметь следующий вывод.

  1. udp 0 0 0.0 . 0.0 : 514 0.0 . 0.0 :* 551 / rsyslogd
  2. udp6 0 0 . 514 . * 551 / rsyslogd

Если Rsyslog демон установлен в соединительном порту TCP, должен быть результат, показанный ниже.

  1. tcp 0 0 0.0 . 0.0 : 514 0.0 . 0.0 :* LISTEN 1891 / rsyslogd
  2. tcp6 0 0 . 514 . * LISTEN 1891 / rsyslogd

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


После того, как мы завершим все эти конфигурации, мы можем запустить службу и использовать инструмент командной строки Tail -f в центральный сервер Rsyslog для просмотра файла журнала.

Подвести итог

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


Мануал

В этом руководстве приведены пошаговые инструкции по установке сервера RSYSLOG на Debian и отправке данных syslog с нескольких клиентских серверов.

Мы также покажем, как установить веб-сервер Apache и сервер базы данных MySQL для сбора данных syslog и как установить LogAnalyzer, чтобы легко просматривать собранные данные с помощью веб-браузера.

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

Я не гарантирую, что это сработает у вас!

Установка сервера RSYSLOG

В этой первой части описывается, как создать сервер RSYSLOG, который будет собирать данные syslog от своих клиентов.

Сначала мы установим некоторые зависимости.

Создайте пароль сервера MySQL, когда установка попросит вас ввести его!

У моего шаблона OpenVZ все это готово было.

Убедитесь что службы подняты и запущены

Убедитесь, что сервер прослушивает соответствующие IP-порты TCP. (80 и 3306).

RSYSLOG в настоящее время не слушает ни одного порта.

Затем мы можем создать базу данных rsyslog:

Затем мы запускаем командную оболочку MySQL и создаем пользователя rsyslog:

Затем мы настраиваем сервер rsyslog для прослушивания на TCP-порту 514:

$ModLoad MySQL
*.* >127.0.0.1,rsyslog,rsyslog,ENTER-YOUR-NEW-RSYSLOG-PASSWORD-HERE

И перезапустите службу rsyslog.

Убедитесь, что сервер прослушивает соответствующие IP-порты TCP. (80, 514 и 3306.)

Затем мы загружаем LogAnalyzer и настраиваем веб-сервер Apache для отображения журналов.

Затем мы настраиваем права доступа к веб-папкам для веб-сервера Apache.

И затем мы делаем некоторые «приятные» работы в папках LogAnalyzer.

И мы готовы погрузиться в окончательную настройку LogAnalyzer с помощью нашего веб-браузера.

Теперь вам нужно запустить рабочий сервер rsyslog с LogAnalyzer.

Затем мы настраиваем клиенты RSYSLOG для отправки своих данных syslog на сервер rsyslog:

Настройка клиентов RSYSLOG

Обычно все, что нам нужно сделать, это настроить файл rsyslog.conf и перезапустить службу.

(Почти все дебианы поставляются с предварительно установленным rsyslog.)

Добавьте строки каталога которые используются в случае потери сетевого подключения и изменения IP-адреса сервера rsyslog IP до 192.168.0.15. (Вы также можете создать каталог / rsyslog / work spool с помощью команды mkdir.)

Читайте также: