Логирование
Описание
За формирование логов отвечает системный демон 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
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
Вывод лога за службу
Сохранение логов 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
Last updated
Was this helpful?