Логи Linux
Это перевод оригинальной статьи Linux Logs.
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Логи в Linux — это текстовые записи событий, происходящих в системе.
Они автоматически генерируются ядром, системными службами (такими как SSH, cron, сетевые службы), приложениями (такими как веб-серверы, базы данных) или компонентами безопасности. Логи можно рассматривать как дневник системы — они фиксируют, что произошло, когда это произошло и, в некоторых случаях, что это вызвало.
Традиционные логи хранятся в /var/log/
- Логи ядра: генерируются ядром Linux.
- Системные логи: управляются службами логирования, такими как rsyslog, systemd-journald.
- Логи приложений: программы создают собственные логи. Примеры: Apache (/var/log/httpd/), Nginx (/var/log/nginx/), MySQL (/var/log/mysql/)
ls /var/log #shows all existing logs
- Устранения ошибок
- Расследования в вопросах безопасности
- Мониторинга производительности
- Отладки служб
- Аудита изменений системы
Как работает логирование в Linux
Происходит событие → приложение/ядро генерирует сообщение лога → сообщение отправляется в интерфейс логирования → systemd-journald получает сообщение → лог записывается в файл (/var/log…) → logrotate управляет размером и хранением
/var/log — это важнейший каталог для хранения логов. Он содержит записи о системной активности, события безопасности, сообщения ядра и информацию об операциях с пакетами.
Системные файлы логов: эти логи содержат общую информацию о системной активности в файле /var/log/messages.
Логи аутентификации: критически важны для мониторинга безопасности в файле /var/log/secure.
Логи ядра: события, связанные с ядром, такие как обнаружение оборудования при загрузке, проблемы драйверов, ошибки памяти, проблемы с дисками, находятся в /var/log/kern.log
Логи загрузки: показывают, что происходит во время запуска системы, /var/log/boot.log
Логи управления пакетами: отслеживают установку, удаление и обновления в файле /var/log/dnf.log
cat /var/log/message #shows general system activity cat /var/log/dnf.log #shows installation history cat /var/log/secure #shows authentication activity
syslog — это стандарт для логирования сообщений в системах Unix/Linux. Он определяет, как приложения, сервисы и ядро могут отправлять сообщения в центральный лог. Он не определяет, как сообщения хранятся, а только как они форматируются и передаются.
Каждое сообщение syslog состоит из двух компонентов: FACILITY.SEVERITY.
FACILITY (Источник логов): FACILITY определяет, откуда поступило сообщение.
Priority (уровни важности): показывает, насколько серьёзным является событие.
rsyslog — это современная замена традиционному syslog, вносящая улучшения в реализацию протокола syslog. Это демон логирования (сервис), отвечающий за сбор логов, фильтрацию логов и запись логов в файлы. /etc/rsyslog.conf или /etc/rsyslog.d. Rsyslog использует правило facility.priority action
systemd Journal (journald) в Linux
systemd-journald — это сервис логирования по умолчанию, заменяющий многие традиционные конфигурации, использующие только syslog, что делает её незаменимой для устранения неполадок и мониторинга.
systemd-journald предоставляет структурированные логи с метаданными (временная метка, PID, сервис, приоритет)
journalctl — это команда для запроса логов journald. Она фильтрует логи по сервисам, времени, уровню важности и т.д. для удобства эффективной обработки.
Journald может хранить логи двумя способами:
а. Временные (по умолчанию в некоторых системах): логи хранятся в оперативной памяти и теряются при перезагрузке, доступ к ним осуществляется через /run/log/journal/
b. Постоянные: логи хранятся на диске и сохраняются после перезагрузки, использование /var/log/journal позволяет хранить логи между перезагрузками, но требует создания указанной директории.
Ротация логов — критически важная часть работы с логами, поскольку без неё логи могут заполнять дисковое пространство и замедлять системные процессы.
Ротация логов — это процесс удаления очень старых логов для освобождения места на диске, создания новых файлов логов для продолжения записи, автоматического переименования старых файлов логов, сжатия или архивирования.
logrotate — это утилита Linux для автоматической ротации логов. Основной конфигурационный файл logrotate находится в каталоге /etc/logrotate.d/. Файл /etc/logrotate.conf определяет общие параметры по умолчанию, такие как период ротации, степень сжатия и ограничение размера.
cat /etc/logrotate.conf #shows log rotation settings that can be modified
Логи событий представляют собой структурированную запись активности системы и сервисов, выступая основным источником информации об эксплуатации. Они служат первым ориентиром при устранении неполадок, позволяя администраторам выявлять первопричины и эффективно решать проблемы. С точки зрения безопасности, логи выступают в качестве аудиторского следа, поддерживая обнаружение инцидентов и анализ после их совершения.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.