Linux Labs

Наблюдаемость: метрики, алерты, логи / Ступень 7 из 9

Логи в одном месте

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 7 · на машине · 5 мин

Правила rsyslog

Куда попадёт строка, решают правила rsyslog — по ним видно и то, почему на сборщик не ушло ничего.

Службы и программы пишут в журнал systemd, а rsyslog получает от него копию каждой строки и раскладывает по файлам в /var/log. Кроме текста, у строки есть метка — имя программы, lab-orders, — и приоритет из двух частей: источник (facility) — kern для ядра, auth для входа в систему, mail, user для обычных программ, local0–local7 для своих — и уровень: err, warning, info и другие.

Правило rsyslog — строка из двух частей: какие строки отобрать и что с ними сделать. Правила Ubuntu лежат в /etc/rsyslog.d/50-default.conf:

text
auth,authpriv.*         /var/log/auth.log   # вход в систему
*.*;auth,authpriv.none  -/var/log/syslog    # всё, кроме входа
mail.*                  -/var/log/mail.log  # почта
mail.err                /var/log/mail.err   # почта, err и выше

Слева — отбор источник.уровень: * значит «любой», none исключает источник, а уровень отбирает себя и всё серьёзнее. Справа — действие, здесь путь к файлу; минус перед путём разрешает не сбрасывать каждую строку на диск сразу. Строка проходит все правила по очереди и попадает в каждый файл, чей отбор подошёл, пока её не остановит правило со stop. Свою строку с меткой и приоритетом отправляет logger (в Вики):

bash
logger -t lab-test -p user.warning "проверка правил"
sudo grep 'lab-test:' /var/log/syslog
Проверь себя 1 вопрос

Почтовая программа отправила строку: logger -p mail.err -t shop "диск почты заполнен". В какие файлы её запишут правила из 50-default.conf выше?

  • Отбор *.*;auth,authpriv.none исключает только вход в систему — почта проходит и в /var/log/syslog.

  • Первое подошедшее правило строку не останавливает: mail.* и *.* тоже её отбирают. Проверь: sudo grep shop: /var/log/mail.log /var/log/syslog.

  • Свой файл у них есть: правило mail.err пишет в /var/log/mail.err, а mail.* — ещё и в /var/log/mail.log.

Строку отбирают три правила: *.*;auth,authpriv.none, mail.* и mail.err — и rsyslog пишет её во все три файла. Остановить строку на полпути может только правило со stop.

Главное в шаге

  • У строки syslog есть метка программы и приоритет «источник.уровень»; по ним rsyslog выбирает файлы.
  • Строка проходит все правила подряд и пишется в каждый подошедший файл, пока её не остановит stop.
Ubuntu 24.04
Загрузка…