Человеку, отвечающему за работоспособность системы, очень важно всегда отчётливо представлять, что с нею творится. Теоретически, никакое происшествие не должно ускользнуть от его внимания. Однако компьютерные системы столь сложны, что отслеживать все события в них — выше человеческих возможностей. Для того, чтобы довести поток служебной информации до разумного объёма, её надо просеять (выкинуть незначащие данные), классифицировать (разделить на несколько групп сообразно тематике) и журнализировать (сохранить в доступном виде для дальнейшего анализа).
В Linux
эта задача решается с помощью механизма
централизованной журнализации, который
реализован демоном (системной службой)
syslogd. Все части системы (включая
ядро и системные службы) рапортуют syslogd о происходящих в них
событиях. В этот рапорт включается имя службы,
категория (facility) и
важность (priority) произошедшего события.
Демон, сообразно настройкам, классифицирует все эти рапорты в
несколько выходных потоков. Классификация и отсев данных всякого
выходного потока происходит так: для каждой категории событий
определяется наименьшая важность, которой
событие должно обладать, чтобы попасть в этот выходной поток.
Например, легко определить поток «ошибки», в который
будут попадать только важные рапорты
любых категорий, или поток
«безопасность», в который будут попадать
все рапорты категории
«безопасность» и те рапорты других категорий,
важность которых заставляет подозревать угрозу безопасности
системы (например, рапорт категории «демон» об
аварийном завершении работы системной службы).
Главное место хранения уже
классифицированного syslogd потока событий — системный журнал (т. н. log-файл). Системный журнал —
текстовый файл, содержащий рапорты
одного потока. Обычно
syslogd хранит системные журналы в
каталоге /var/log
и его
подкаталогах. Именно в системные журналы, прежде всего в /var/log/messages
, /var/log/maillog
и /var/log/dmesg
, необходимо
заглядывать администратору, который хочет знать, что происходит в
системе. Поток рапортов о важных событиях
syslogd направляет и на
системную консоль — выделенное
терминальное устройство. В ALT Linux роль системной консоли
выполняет 12-я виртуальная консоль, доступная
по сочетанию клавиш Alt+F12 или Alt+Ctrl+F12. Стоит
заметить, что некоторые службы (например, WWW-сервер
apache)
самостоятельно, в обход
syslogd, ведут журнализацию своих
событий, поэтому информацию о количестве и местоположении их
журналов можно почерпнуть из их файлов настроек (обычно, тем не
менее, журналы хранятся в /var/log
).
Новые рапорты, поступающие в системный журнал, наиболее
актуальны, а предыдущие, по мере их устаревания, эту актуальность
утрачивают. Если самые старые данные в журнале не удалять,
файловая система, рано или поздно, окажется переполненной. В
Linux
организован механизм устаревания журналов, которым занимается служба
logrotate. Запускаясь раз в день,
logrotate проверяет, какие из файлов
следует признать устаревшими. Файл объявляется устаревшим раз в
определённый промежуток времени (например, раз в неделю), или если
он достиг определённого размера.
Процедура устаревания такова. Для каждого журнала, как,
например, для /var/log/syslog/alert
,
logrotate держит в том же каталоге
очередь устаревших копий — файлы с
именами от alert.0.bz2
(предыдущая копия) до
alert.4.bz2
(самая старая копия). Очередь
alert
в нашем примере состоит из
пяти упакованных с помощью bzip2
файлов. В момент устаревания alert.3.bz2
переименовывается в alert.4.bz2
(старые
данные теряются), копия с номером 2
превращается в третью, первая — во вторую, нулевая в первую.
Наконец, сам журнал упаковывается и переименовывается в
alert.0.bz2
, а на его месте заводится новый — пустой. Таким образом, администратор всегда имеет доступ к
свежему журналу и к нескольким его копиям за
определённое время.
Некоторые файлы в /var/log
— нетекстовые, они
не являются полноценными журналами, а представляются собой
«свалку событий» для служб авторизации и учёта.
Текстовую информацию о входе пользователей в систему и выходе
оттуда можно получить по команде last, а узнать
о тех, кто в данный момент пользуется системой, помогут команды
w и who.
Множество важной информации может дать анализ загруженности системы — в плане процессорного времени и потребления оперативной памяти (ps, top, vmstat), в плане использования дискового пространства (du, df, lsof) и в плане работы сетевых устройств (netstat).