Пакет rsyslog это open source программное обеспечение, предназначенное для обработки логов и выдающая их в разнообразных форматах.
Rsyslog не разрабатывается сотрудниками Eltex и не включает доработок, за исключением конфигурации.
Установка rsyslog
root@root:/# apt update
root@root:/# apt install rsyslog
После установки необходимо добавить демона rsyslog в автозагрузку и запустить его:
root@root:/# systemctl enable rsyslog
root@root:/# systemctl start rsyslog
Конфигурация rsyslog
Конфигурация состоит из основного файла /etc/rsyslog.conf и дополнительно созданных файлов в папке /etc/rsyslog.d/*.conf.
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf
#################
#### MODULES ####
#################
module(load="imuxsock") # provides support for local system logging
#module(load="immark") # provides --MARK-- message capability
# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")
###########################
#### GLOBAL DIRECTIVES ####
###########################
#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Filter duplicated messages
$RepeatedMsgReduction on
#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
#$PrivDropToUser syslog
#$PrivDropToGroup syslog
#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
где
Обеспечивает получение сислог-сообщений через сеть по UDP и TCP
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
Устанавливает права доступа, владельца и группу по умолчанию для лог-файлов
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
Интегрирует файлы конфигурации из папки /etc/rsyslog.d/ с расширением .conf
$IncludeConfig /etc/rsyslog.d/*.conf
Создание файла конфигурации в папке /etc/rsyslog.d/ и папки хранения логов /var/log/eltex с выдачей прав
root@root:/# mkdir /var/log/eltex
root@root:/# chown root:adm /var/log/eltex/
root@root:/# touch /etc/rsyslog.d/eltex.conf
Настройка файла конфигурации eltex.conf:
$template FileFormatTemplate,"<%PRI%> 1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME%-%syslogseverity-text%-%MSGID%: %msg%\n\r"
$template LogFileTemplate,"/var/log/eltex/%FROMHOST%/%$now%.log"
$template Templ,"<%PRI%> 1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %msg%\n\r"
if not ($APP-NAME startswith "%") then ?LogFileTemplate;FileFormatTemplate
if ($APP-NAME startswith "%") then ?LogFileTemplate;Templ
При таком файле конфигурации и введённой настройке будет создаваться папка с адресом источника, в которой будут создаваться файлы даты получения сообщения.
Сами syslog сообщения на сервере будут преобразовываться в формат RFC 5424.
<190> 1 2022-05-13T16:30:33.387810+07:00 192.168.0.2 %NSFP-I-SFPGibicDetected te1/0/2 SFP port is present
msg - тело сообщения
hostname - имя хоста\ip из сообщения
fromhost - имя хоста, от которого пришло сообщение
fromhost-ip - адрес хоста, от которого пришло сообщения (127.0.0.1 для локальных сообщений)
syslogtag - имя и номер процесса (" rsyslogd[12125]:"), который выдал сообщение (извлекается из сообщения)
programname - имя процесса, который выдал сообщение (извлекается из сообщения)
pri - источник и приоритет, в виде числа
pri-text - декодированные источник и приоритет (facility.priority, например syslog.emer)
syslogfacility - только источник в виде числа
syslogfacility-text - только декодированный источник ("local0")
syslogseverity - только приоритет в виде числа
syslogseverity-text - только декодированный уровень ("debug")
timegenerated - время получения (с высоким разрешением)
timereported - время, извлечённое из сообщения
inputname - имя входного модуля
$hour, $minute - текущее время
$myhostname - имя хоста обработки