Yesterday

Логи Linux

Это перевод оригинальной статьи Linux Logs.

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

Логи в Linux — это текстовые записи событий, происходящих в системе.
Они автоматически генерируются ядром, системными службами (такими как SSH, cron, сетевые службы), приложениями (такими как веб-серверы, базы данных) или компонентами безопасности. Логи можно рассматривать как дневник системы — они фиксируют, что произошло, когда это произошло и, в некоторых случаях, что это вызвало.

Традиционные логи хранятся в /var/log/

Типы логов Linux

  1. Логи ядра: генерируются ядром Linux.
  2. Системные логи: управляются службами логирования, такими как rsyslog, systemd-journald.
  3. Логи приложений: программы создают собственные логи. Примеры: Apache (/var/log/httpd/), Nginx (/var/log/nginx/), MySQL (/var/log/mysql/)
ls /var/log #shows all existing logs

Важность логов в Linux

Логи крайне важны для:

  1. Устранения ошибок
  2. Расследования в вопросах безопасности
  3. Мониторинга производительности
  4. Отладки служб
  5. Аудита изменений системы

Как работает логирование в 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 и rsyslog

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, где будет еще больше полезной информации.