Product SiteDocumentation Site

Глава 65. Что происходит в системе

Человеку, отвечающему за работоспособность системы, очень важно всегда отчётливо представлять происходящие в ней события. Теоретически, никакое происшествие не должно ускользнуть от его внимания. Однако компьютерные системы настолько сложны, что отслеживать все события в них — выше человеческих возможностей. Для того чтобы довести поток служебной информации до разумного объёма, её надо просеять (выкинуть незначащие данные), классифицировать (разделить на несколько групп сообразно тематике) и журнализировать (сохранить в доступном виде для дальнейшего анализа).
В ОС Альт Образование функция записи информации о системных событиях и событиях безопасности обеспечивается с помощью системной службы systemd-journald. Она создает и поддерживает структурированные, индексированные журналы, на основе регистрируемой информации, полученной от ядра, от пользовательских процессов через вызов Libc syslog, от потоков STDOUT/STDERR системных служб через собственный API. Журналы данного инструмента хранятся в бинарном виде в /var/log/journal, что исключает возможность просмотра содержимого данных файлов стандартными утилитами обработки текстовых данных. Для просмотра логов используется утилита journalctl.
Можно запускать journalctl с разными ключами:
  • journalctl -b — покажет сообщения только с текущей загрузки;
  • journalctl -f — покажет только последние сообщения и продолжит печатать новые записи, при добавлении их в журнал.
Так же можно посмотреть сообщения определенного процесса:
  • journalctl _PID=1 — покажет сообщения первого процесса (init).
Для ознакомления с прочими возможностями, читайте руководство по journalctl. Для этого используйте команду man journalctl.
Стоит заметить, что некоторые службы (например, веб-сервер apache) самостоятельно ведут журнализацию своих событий, поэтому информацию о количестве и местоположении их журналов можно почерпнуть из их файлов настроек (обычно, журналы хранятся в /var/log/).
Файл настройки journald находится в /etc/systemd/journald.conf. Справку по этому файлу можно получить выполнив команду man journald.conf.
Новые рапорты, поступающие в системный журнал, наиболее актуальны, а предыдущие, по мере их устаревания, эту актуальность утрачивают. Если самые старые данные в журнале не удалять, файловая система рано или поздно окажется переполненной. Узнать объем имеющихся на текущий момент логов можно с помощью команды:
journalctl --disk-usage
Ротация журналов:
  • для удаления старых файлов журналов с помощью указания размера (опция --vacuum-size), необходимо установить предельно допустимый размер для хранимых на диске журналов, как только объем журналов превысит указанную цифру, лишние файлы будут автоматические удалены:
    journalctl --vacuum-size=200M
    
  • для удаления старых записей по времени (опция --vacuum-time), необходимо установить для журналов срок хранения, по истечении которого они будут автоматически удалены:
    journalctl --vacuum-time=1months
    
Настройки ротации файлов журнала можно также прописать в конфигурационном файле /еtc/systemd/journald.conf.
Некоторые файлы в /var/log/ — не текстовые, они являются неполноценными журналами и представляют собой «свалку событий» для служб авторизации и учёта. Текстовую информацию о входе пользователей в систему и выходе оттуда можно получить по команде last, а узнать о тех, кто в данный момент пользуется системой, помогут команды w и who.
Множество важной информации может дать анализ загруженности системы — сведения о процессорном времени и потреблении оперативной памяти (ps, top, vmstat), сведения об использовании дискового пространства (du, df, fuser) и сведения о работе сетевых устройств (netstat).