Начнём издалека. Работая, система отслеживает и записывает в специальные файлы события, которые считает важными или нужными (например, для исправления и отладки ошибок и сбойных конфигураций). Эти файлы называются лог-файлами (файлы регистрации / журнальные файлы). Други словами, эти файлы (далее “логи”) являются основным источником информации о работе системы и происходящих ошибках. Сбор и отслеживание логов осущесвтляется демонами событий. Главной системой логирования считается syslog и ее демон syslogd (в новых дистрибутивах, включая Debian 11, система rsyslog и демон rsyslogd).
Описанный выше процесс, т.е. журналирование, может осуществляться на локальной системе, а так же сообщения журналирования могут пересылаться на удаленную систему.
Для правильной фиксации времени логов, необходимо настроить его синхронизацию.
Сначала задаем правильный часовой пояс:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
в данном примере мы использовали московское время.
Затем устанавливаем и запускаем chrony.
а) на системе CentOS / Red Hat:
yum install chrony
systemctl enable chronyd
systemctl start chronyd
б) на системе Ubuntu / Debian:
apt-get install chrony
systemctl enable chrony
systemctl start chrony
Файл rsyslog.conf является главным конфигурационным файлом журналирования системы. Файл представляет собой набор правил работы демона.
nano /etc/rsyslog.conf
*источник.приоритет действие*
Две и более конструкции разделяются ";", после идёт действие (куда записывать/отправлять?). Символ "*" обозначает "все/любой".
user.* @адрес_машины"
Далее перезапускаем демона.
service rsyslog restart
Или же:
systemctl restart rsyslog
Все логи:
Для начала можно настроить отправку всех логов на сервер. Создаем конфигурационный файл для rsyslog:
vi /etc/rsyslog.d/all.conf
Добавляем:
*.* @@192.168.0.15:514
Перезапускаем rsyslog:
systemctl restart rsyslog
Для определенных категорий:
Если необходимо отправлять только определенные категории логов, создаем конфигурационный файл для соответствующей, например:
vi /etc/rsyslog.d/kern.conf
Добавим строку:
kern.* @@192.168.0.15:514
Перезапускаем сервис логов:
systemctl restart rsyslog
Возможные категории для логов (facility):
Категории и Описание
Для определенного уровня:
Если мы хотим передавать только сообщения об ошибках, добавляем строку в файл конфигурации rsyslog:
vi /etc/rsyslog.d/erors.conf
*.err @@192.168.0.15:514
Перезапускаем сервис логов:
systemctl restart rsyslog
Возможные категории для логов (severity):
№ Уровень Расшифровка
0 emerg Система не работает (PANIC)
1 alert Серьезная проблема, требующая внимания
2 crit Критическая ошибка
3 err Ошибка (ERROR)
4 warning Предупреждение (WARN)
5 notice Важное информационное сообщение
6 info Информационное сообщение
7 debug Отладочная информация
nano /etc/rsyslog.conf
Здесь нам необходимо раскомментировать следующие строчки:
Затем вписываем шаблон хранения входящих журналов.
Файлы журнала будут использовать следующее соглашение об именах:
/% HOSTNAME% / — имя хоста клиентской системы.
/% PROGRAMNAME% / — определяет клиентскую программу, создавшую файл журнала.
Перезапускаем демона.
logger — unix-утилита, предоставляющая командный интерфейс для модуля системного журнала syslog.
logger -p user.warn *Собщение*
Утилита logrotate предназначена для автоматизации обработки журналов. Она может выполнять с ними необходимые действия в зависимости от определенных условий и правил соответствия. На данный момент эта утилита уже предустановленна на большинстве дистрибутивов, но если у вас её нет, выполните команду apt install logrotate
.
Все основные настройки программы находятся в файле /etc/logrotate.conf.
nano /etc/logrotate.conf
Основные директивы управления и обработки логов:
rotate - указывает сколько старых логов нужно хранить, в параметрах передается количество;
create - указывает, что необходимо создать пустой лог файл после перемещения старого;
dateext - добавляет дату ротации перед заголовком старого лога;
compress - указывает, что лог необходимо сжимать;
delaycompress - не сжимать последний и предпоследний журнал;
extension - сохранять оригинальный лог файл после ротации, если у него указанное расширение;
mail - отправлять Email после завершения ротации;
maxage - выполнять ротацию журналов, если они старше, чем указано;
missingok - не выдавать ошибки, если лог файла не существует;
olddir - перемещать старые логи в отдельную папку;
postrotate/endscript - выполнить произвольные команды после ротации;
start - номер, с которого будет начата нумерация старых логов;
size - размер лога, когда он будет перемещен.
То есть, для каждого лога, подлежащего ротации, используется этот шаблон:
cat /var/log/bacula/bacula.log | less
tail -n 40 /etc/log/kern.log
journalctl -bo
dmesg