9.5.1. Принципы и механизм
Starting with Debian Bookworm, the rsyslog package is no longer installed by default, which in the past provided the default logging functionality. Instead, the log is provided by systemd
's journal, which can be accessed by the journalctl(5) command.
There are situations, where it is necessary or desired to install rsyslog, though, e.g. to send all log messages to a central server. After installation, the rsyslogd
daemon is responsible for collecting service messages coming from applications and the kernel, then dispatching them into log files (usually stored in the /var/log/
directory). It obeys the /etc/rsyslog.conf
configuration file.
Каждое сообщение в журнале соответствует подсистеме приложений (в документации называемой «facility»):
auth
и authpriv
: для аутентификации;
cron
: от сервисов планировки заданий, cron
и atd
;
daemon
: относится к демонам, не выделенным в особую группу (DNS, NTP и т. д.);
ftp
: относится к FTP-серверу;
kern
: сообщение от ядра;
lpr
: от подсистемы печати;
mail
: от подсистемы электронной почты;
news
: сообщение подсистемы Usenet (в частности от сервера NNTP — Network News Transfer Protocol — управляющего новостными группами);
syslog
: сообщения от самого сервера syslogd
;
user
: пользовательские сообщения (основные);
uucp
: сообщения от сервера UUCP (Unix to Unix Copy Program, старый протокол, широко использовавшийся для распространения сообщений электронной почты);
с local0
по local7
: зарезервированы для локального использования.
Каждому сообщению также присваивается уровень приоритета. Вот их список в порядке убывания:
emerg
: “Помогите” Возникла аварийная ситуация, система возможно непригодна для использования.
alert
: поспешите, промедление небезопасно, нужно срочно принимать меры;
crit
: условия критические;
err
: ошибка;
warn
: предупреждение (возможная ошибка);
notice
: условия нормальные, но сообщение важное;
info
: информационное сообщение;
debug
: сообщение для отладки.
9.5.2. Конфигурационный файл
The syntax of the /etc/rsyslog.conf
file is detailed in the rsyslog.conf(5) manual page, but there is also HTML documentation available in the rsyslog-doc package (/usr/share/doc/rsyslog-doc/html/index.html
). The overall principle is to write “selector” and “action” pairs. The selector defines all relevant messages, and the action describes how to deal with them.
9.5.2.1. Синтаксис селектора
Селектор представляет собой Разделённый точками с запятой список пар подсистема.приоритет
(пример: auth.notice;mail.info
). Звёздочка может означать все подсистемы или все приоритеты (примеры: *.alert
или mail.*
). Несколько подсистем можно сгруппировать, разделяя их запятой (пример: auth,mail.info
). Указанный приоритет подразумевает сообщения того же или более высокого уровня; так, auth.alert
соответствует сообщениям подсистемы auth
с приоритетом alert
или emerg
. Если в начале стоит восклицательный знак, такая запись означает прямо противоположное, то есть строго более низкие приоритеты; auth.!notice
, таким образом, означает сообщения от auth
с приоритетом info
или debug
. Если в начале стоит знак равенства, такая запись означает точное соответствие указанному приоритету и только ему (auth.=notice
соответствует сообщениям от auth
с приоритетом notice
).
Каждый элемент в списке селектора переписывает предыдущие элементы. Благодаря этому возможно ограничить выборку или исключить из неё некоторые элементы. Например, kern.info;kern.!err
означает сообщения от ядра с приоритетом между info
и warn
. Приоритет none
указывает на пустую выборку (нет приоритетов) и может использоваться для исключения подсистемы из выборки сообщений. Так, *.crit;kern.none
означает все сообщения с приоритетом, равным или более высоким, чем crit
, исходящим не от ядра.
9.5.2.2. Синтаксис действий
В число возможных действий входят:
добавление сообщения в файл (пример: /var/log/messages
);
отправка сообщения удалённому серверу syslog
(пример: @log.falcot.com
);
отправка сообщения в существующий именованный канал (пример: |/dev/xconsole
);
отправка сообщения одному или нескольким пользователям, если они вошли в систему (пример: root,rhertzog
);
отправка сообщения всем пользователям в системе (пример: *
);
вывод сообщения в текстовую консоль (пример: /dev/tty8
).