Логи, или журналы, это важный инструмент диагностики и мониторинга в любой системе. Один из самых важных и базовых навыков системного администратора - это уметь читать логи и делать из них корректные выводы по тем или иным проблемам и задачам. И ядро системы, и модули, и отдельные приложения так или иначе пишут журналы.
В этой статье мы разберемся, как работает система журналов в Uncom OS, какую полезную информацию можно извлечь из журналов, и как настроить ведение логов под свои задачи.
Стандартная директория для хранения логов - /var/log. Логи в эту папку заполняет служба syslogd.

Хранящиеся в ней логи можно читать просто как текстовые файлы, с помощью текстовых редакторов, по умолчанию gedit:

В случае, если лог-файл имеет аномально большой размер, вы можете воспользоваться удобными терминальными командами чтения какой-то части файла: less, more, cat, head, tail, grep.
Справочную информацию по всем этим командам, их синтаксису и опциям можно найти во встроенном мануале терминала man. Например, man less:
К примеру, посмотрим "хвост", то есть последние строки файла syslog с помощью команды tail syslog:

Инструмент grep удобно использовать, если необходимо отфильтровать данные по каким-то ключевым словам. К примеру, отфильтруем ошибки из лога ядра dmesg командой grep -i error /var/log/dmesg:

Логи приложений могут храниться во вложенных папках внутри папки /var/log, либо в самой этой папке.
Основные логи системы приведены в списке ниже:
boot.log - лог загрузки системы
dmesg - лог ядра системы
kern.log - также лог ядра системы
syslog - главный лог системы
apport.log - записи аварийного завершения работы приложений, "крэшей", когда приложение перестает отвечать на запросы и подлежит аварийному закрытию
auth.log - содержит информацию об авторизации пользователей в системе, включая пользовательские логины и механизмы аутентификации, которые были использованы
lastlog - отображает информацию о последней сессии всех пользователей. Это нетекстовый файл, для его просмотра необходимо использовать команду lastlog
btmp - содержит информацию о неудачных попытках входа
cups - все сообщения, связанные с печатью и принтерами
Размер логов постоянно растет, они занимают все больше и больше места на диске, поэтому необходимо вовремя чистить логи и удалять устаревшие записи, чтобы они не мешали нормально работать. Для этого существует утилита logrotate
В Uncom OS уже предварительно настроена ротация системных логов syslog и kern.log, однако в некоторых исключительно редких случаях скорость заполнения логов может быть аномальной, что создает нежелательную нагрузку на диски, особенно на SSD. Как правило это связано с неисправимыми аппаратными ошибками каких-то компонентов вашего ПК.
В таком случае вы увидите сообщение вида:
Размер системного журнала увеличивается слишком быстро.
Рекомендуем обратиться в поддержку: http://t.me/uncomos
Мы рекомендуем вам написать в поддержку и прислать нам отчет о системе для анализа ваших системных логов
Утилита logrotate предустановлена в Uncom OS.
Все основные настройки программы находятся в файле /etc/logrotate.conf, дополнительные настройки правил и других возможностей могут быть размещены в папке /etc/logroate.d/.
Вы можете размещать все настройки logrotate прямо в основном конфигурационном файле, но более правильно, если настройки для каждого отдельного сервиса будут находиться в отдельном файле, в папке /etc/logrotate.d/.
Откроем основной файл конфигурации с помощью текстового редактора Nano:
sudo nano /etc/logrotate.conf

Мы видим, что логи ротируются раз в неделю, после ротации старых создается новый файл лога, глубина хранения - четыре недели, после чего старые файлы логов будут перезаписаны.
Строка include /etc/logrotate.d разрешает использование правил, прописанных в файлах внутри папки /etc/logroate.d/
Проверим, есть ли какие-то файлы правил в этой папке:

И посмотрим, какие правила ротации системных логов записаны в файле rsyslog:

В первых строках описаны файлы логов, к которым применимы данные правила ротации.
Для всех указанных логов, кроме syslog, используется ротация раз в неделю с глубиной хранения 4 недели и сжатием старых логов в архивы.
Для syslog используется ротация по размеру файла - 30 мегабайт с глубиной хранения 4 архивных лога.
Чтобы указать, как часто нужно выполнять проверку совпадению условий, используются такие директивы:
Основные директивы управления и обработки логов:
Logrotate является стандартной утилитой Linux, и подробное руководство можно открыть командой man logrotate
На журналах безопасности, пожалуй, остановимся отдельно, так как это важный элемент информационной безопасности системы.
Основной журнал аутентификации - /var/log/auth.log

Файл auth.log.1 - архивный файл, прошедший ротацию
В файл lastlog пишется вся информация о входе пользователей в систему, в faillog - информация о неудачных попытках входа.
Для быстрого просмотра журналов аутентификации используется терминальная команда last

Мы видим все активные сессии пользователей, все записанные до этого сессии пользователей и системные события, такие, как перезагрузка системы.
Команда lastlog используется для просмотра журналов последней успешной аутентификации пользователей. Она выводит информацию о каждом пользователе, такую как дата и время последней аутентификации, IP-адрес, с которого произведена аутентификация и другую полезную информацию.
Ее синтаксис выглядит следующим образом:
lastlog параметры
Все возможные параметры можно изучить, вводя в терминал:
man lastlog
Команда lastlog будет выполняться некоторое время в зависимости от количества пользователей, зарегистрированных в компьютерной системе. После выполнения команды будет выведен список всех пользователей и информация о последней успешной аутентификации.
При интерпретации результатов команды lastlog важно обратить внимание на дату и время последней успешной аутентификации каждого пользователя. Если дата или время слишком давние, это может указывать на уязвимость в системе или на то, что пользователь не использует свой аккаунт.
Кроме того, результаты команды lastlog могут быть полезны при поиске пользователей, которые недавно проявляли активность в системе. Например, если замечена подозрительная активность в системе, возможно использовать команду lastlog, чтобы выявить пользователей, которые могут быть связаны с этой активностью.
Если вам удобнее пользоваться графическими утилитами для просмотра логов, вы можете обратиться к предустановленной в систему утилите "Журналы":


При создании статьи использовались материалы с losst.ru и habr.com