Расположение логов
Log - файлы расположены в каталоге
/var/logслужба rsyslog сортирует syslog-сообщения по типу (или источнику), приоритету и записывает их в файлы в этом каталоге.
Служба systemd-journald собирает сообщения от ядра, ранних стадий процесса загрузки, стандартного потока вывода и ошибок в ходе запуска системных служб и их работы, а так же события от syslog.
- Системные лог файлы:
- /var/log/messages - большинство сообщений syslog, кроме сообщений аутентификации, обработки электронной почты, периодическими задачами, сообщений отладки;
- /var/log/secure - сообщения и ошибки, связанные с безопасностью и аутентификацией;
- /var/log/maillog - сообщения работы почтового сервиса;
- /var/log/cron - сообщения связанные с периодически выполняемыми задачами;
- /var/log/boot.log - журнал запуска системы.
- Журнал SELinux по умолчанию записывается процессом auditd в файл /var/log/audit/audit.log. Если этот процесс не запущен, то SELinux ведет журнал в файле /var/log/messages, в этом случае все сообщения системы контроля доступа маркируются ключом AVC, что позволяет быстро отфильтровать нужные строки.
Приоритеты syslog-файлов
Код | Приоритет | Уровень серьёзности |
---|---|---|
0 | emerg | систему невозможно использовать |
1 | alert | необходимо немедленно принять меры |
2 | crit | критическое состояние |
3 | err | некритичные состояния ошибки |
4 | warning | предупреждение |
5 | notice | обычные сообщение повышенной важности |
6 | info | информационное сообщение |
7 | debug | отладочное сообщение |
Служба rsyslogd
Служба rsyslogd использует источник и приоритет сообщений журнала для определения способа обработки поступающий сообщений. Это определяется в файлах
/etc/rsyslog.conf /etc/rsyslog.d/*.confСвои настройки нужно размещать в каталоге /etc/rsyslog.d в *.conf файлах чтобы они не были перезаписаны при обновлении службы (основной конфигурационный файл будет перезаписан).
Раздел RULES содержит директивы, определяющие место сохранения сообщений, указывается в виде
<источник> . <приоритет> <место>Чтобы игнорировать сообщения от какого-либо источника, нужно установить его в "none".
Ротация log-файлов
Служба logrotate осуществляет ротацию log-файлов.
- Шаги ротации:
- log-файл переименовывается, при этом в название добавляется дата ротации;
- создается новый пустой файл с исходным названием;
- уведомляется служба, осуществляется запись в log-файл;
- через несколько ротаций (обычно 4), старый файл удаляется.
Файлы конфигурации logrotate
/etc/logrotate.conf /etc/logrotate.d/* /etc/logrotate.d/syslog
Запуск осуществляет cron с помощью
/etc/cron.daily/logrotate
logger
Команда logger может отправлять сообщения службе rsyslogd.
По умолчанию сообщения отправляются с источником user и приоритетом notice, если не указано иное с помощью ключа -p
logger -p local17.notice "Test event"
Настройка своего лога для сохранения всех сообщений с приоритетом debug в log-файл
touch /var/log/messages-debug echo "*.debug /var/log/messages-debug" > /etc/rsyslog.d/messages-debug.conf systemctl restart rsyslog logger -p user.debug "Test event" cat /var/log/messages-debug
Journald
Журнал событий systemd - события в виде структурированного и индексированного двоичного файла, по умолчанию в /run/log, после перезагрузки файл создается заново. Для чтения лога используется journalctl.
- journalctl просмотр записей журнала systemd. Без ключей сообщения выводятся со времени загрузки
- journalctl -xe понятный вывод
- journalctl -p err выбор сообщений с приоритетом error и выше
- journalctl -p notice выбор сообщений с приоритетом notice и выше
- journalctl -p notice выбор сообщений с приоритетом notice и выше
- journalctl -p warning выбор сообщений с приоритетом warning и выше
- journalctl -n вывод последних 10 записей
- journalctl -n 5 вывод последних 5 записей
- journalctl -f непрерывный вывод
- journalctl --since today вывод записей зарегистрированных сегодня
- journalctl -since "2019-11-20 20:30:00" -until "2019-11-21 20:30:00" вывод записей из указанного диапазона даты и времени
- journalctl -since "19:30:00" -until "20:30:00" вывод записей из указанного диапазона времени
- journalctl -since 'date +%T -d "-10 mins"' вывод записей за последние 10 минут
- journalctl -since 9:00:00 _SYSTEMD_UNIT="sshd.sevice" вывод записей от службы sshd, записанные с 9 утра сегодня
- journalctl -o verbose детальный вывод данных
- journalctl _SYSTEMD_UNIT=sshd.service вывод записей журнала, связанных с сервисом sshd
- journalctl _EXE=/usr/sbin/NetworkManager просмотр журнала процесса, запущенного по пути /usr/sbin/NetworkManager
- journalctl -o verbose _PID=<pid> просмотр подробного журнала по процессу, для которого указан id
- journalctl _PID=1 вывести только сообщения от процесса systemd
- journalctl _UID=1000 вывод сообщений созданных службой, запущенной от пользователя с uid=1000
- journalctl -b вывод журнала с последней загрузки
- journalctl -b -1 вывод журнала предыдущей загрузки
По умолчанию журнал хранится в
/run/log/journal
Если существует каталог
/var/log/journalжурнал будет сохранятся и после перезагрузки
Журнал использует встроенный механизм ротации, который запускается каждый месяц. Размер журнала не может быть больше 10% размера файловой системы, в которой он находится. Эти параметры видно в выводе команды
journalctl | head -2
Создание каталога /var/log/journal
mkdir /var/log/journal chown root:systemd-journal /var/log/journal chmod 2755 /var/log/journalДля применения изменений нужно перезагрузить систему или отправить сигнал
killall -USR1 systemd-journald
Так как теперь журнал сохраняется после перезагрузки, чтобы уменьшить объем вывода и посмотреть сообщения с момента последней перезагрузки можно добавить ключ -b
journalctl -bможно ограничить вывод сообщениями предыдущей загрузки
journalctl -b -1