Глава 55. Что происходит в системе
Человеку, отвечающему за работоспособность системы, очень важно всегда отчётливо представлять происходящие в ней события. Теоретически, никакое происшествие не должно ускользнуть от его внимания. Однако компьютерные системы настолько сложны, что отслеживать все события в них — выше человеческих возможностей. Для того чтобы довести поток служебной информации до разумного объёма, её надо просеять (выкинуть незначащие данные), классифицировать (разделить на несколько групп сообразно тематике) и журнализировать (сохранить в доступном виде для дальнейшего анализа).
В ОС Альт Образование для Эльбрус функция записи информации о системных событиях и событиях безопасности обеспечивается с помощью системной службы systemd-journald. Она создает и поддерживает структурированные, индексированные журналы, на основе регистрируемой информации, полученной от ядра, от пользовательских процессов через вызов Libc syslog, от потоков STDOUT/STDERR системных служб через собственный API. Журналы данного инструмента хранятся в бинарном виде в /var/log/journal
, что исключает возможность просмотра содержимого данных файлов стандартными утилитами обработки текстовых данных. Для просмотра логов используется утилита journalctl.
Можно запускать
journalctl
с разными ключами:
journalctl
-b
— покажет сообщения только с текущей загрузки;
journalctl
-f
— покажет только последние сообщения и продолжит печатать новые записи, при добавлении их в журнал.
Так же можно посмотреть сообщения определенного процесса:
Для ознакомления с прочими возможностями, читайте руководство по 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
).