Логирование
Описание
За формирование логов отвечает системный демон rsyslogd
Все логи записываются в var/log
С выпуском RHEL 7 за все системные процессы стал отвечать systemd
Логирование стало осуществляться за счет демона systemd-journald
systemd-journald концентрирует все сообщения, которые генерируются слуажбами systemd
Логи при этом записываются в /dev/log
Доступ к логам осуществляется через journalctl
/dev/log также связан с rsyslogd, который контролирует запись этих логов и в /var/log
journalctl работает только с systemd-journald, соответственно чтобы через него получать доступ к логам, необходимо для journald сформировать свой таргет логирования - /var/log/journal
Описание rsyslog
Для работы rsyslog необходим активный сервис rsyslogd
Главный конфигурационный файл хранится в /etc/rsyslog.conf
<....>
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
<....>
Snap-in файлы могут располагаться в /etc/rsyslog.d/
Каждая строка логгера содерит следущие значения:
facility - объект, для которого сформирован лог
severity - уровень важности, с которого должно быть осуществлено логирование
destination - назначение, в которое необходимо записать лог
Логи как правило записываются в /var/log
команда logger записывает в rsyslog команды вручную
Описание facility:
rsyslog имеет (и должен иметь) обратную совместимость с архаичным syslog сервисом
В syslog определено фиксированное число объектов (kern, authpriv, cron и др.)
Для сервисов, у которых неопределены объекты, может использоваться local facility
Из-за ограниченности типов объектов, некоторые службы пишут логи сами, не используя rsyslog
Systemd-journald
Systemd-journald - служба логирования, являющаяся частью systemd
Интегрирована с systemctl status <unit> (показывает последние сообщения лога в выводе статуса)
Для работы с systemd-journald используется команда journalctl
Сообщения записываются также и в rsyslog с использованием модуля imjournal для rsyslog
Для того, чтобы systemd-journald сохранял логи после перезагрузки необходимо создать ему директорию /var/log/journal
Конфигурация хранится в /etc/systemd/journald.conf
Вывод лога за службу
[admin@centos8 ~]$ journalctl UNIT=sshd
-- Logs begin at Fri 2020-02-14 20:35:33 MSK, end at Sat 2020-03-14 17:49:25 MSK. --
-- No entries --
Сохранение логов journald
По-умолчанию журнал записывается в /run/log/journal, который автоматически очищается при перезагрузке
Для изменения правила поведения при перезагрузке необходимо изменить настройки /etc/systemd/journald.conf
Изменить необходимо параметр Storage
persistent - переключит сохранение логов в /var/log/journal, если директория не создана - создаст
volatile - сохранение логов только в /run/log/journal
auto - сохраняет в /var/log/journal, если директория есть, если ее нет - в /run/log/journal
Лог перезаписывается каждый месяц
Журнал логов не может занимать больше 10% пространства системы
И также логирование останавливается, если осталось менее 15% места в системе
Эти настройки также могут быть изменены через /etc/systemd/journald.conf
Logrotate
Logrotate позволяет избежать переполнения системы логами
Запускается через cron.daily
Основные настройки хранятся в /etc/logrotate.conf, snap-in могут быть в /etc/logrotate.d/
По умолчанию:
файлы логов обнуляются еженедельно
логи хранятся не более, чем за 4 недели
после удаление лога, создается новый файл, старый переименовывается с префиксом dataext
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may be also be configured here.
Last updated
Was this helpful?