После завершения этого раздела вы сможете интерпретировать события в соответствующих файлах syslog для устранения проблем и просмотра состояния системы.
Многие программы используют syslog для протоколирования событий в системе. Каждое сообщение классифицируется по источнику (тип сообщения) и приоритету (важность сообщения). Информация о доступных источниках приведена на man-странице rsyslog.conf(5).
syslog
rsyslog.conf
В следующей таблице указаны восемь стандартных приоритетов syslog, от самого высокого до самого низкого.
Таблица 11.2. Обзор приоритетов syslog
0
emerg
Систему невозможно использовать
1
alert
Необходимо немедленно принять меры
2
crit
Критическое состояние
3
err
Некритическое состояние ошибки
4
warning
Предупреждение
5
notice
Обычное событие повышенной важности
6
info
Информационное событие
7
debug
Отладочное сообщение
Служба rsyslog использует источник и приоритет сообщений журнала для определения способа их обработки. Настройка сортировки сообщений осуществляется с помощью правил в файле /etc/rsyslog.conf и в любом файле с расширением .conf в каталоге /etc/rsyslog.d. Программные пакеты могут легко добавлять правила, устанавливая соответствующие файлы в каталог /etc/rsyslog.d.
rsyslog
/etc/rsyslog.conf
.conf
/etc/rsyslog.d
Каждое правило, управляющее сортировкой сообщений syslog, представляет собой строку в одном из файлов конфигурации. В левой части каждой строки указаны источник и приоритет сообщений syslog, соответствующих правилу. Правая часть каждой строки указывает, в каком файле сохранять сообщение (или куда его доставить). Звездочка (*) — это метасимвол, который соответствует всем значениям.
*
Например, следующая строка записывает сообщения, отправленные источнику authpriv с любым приоритетом, в файл /var/log/secure:
authpriv
/var/log/secure
authpriv.* /var/log/secure
Иногда сообщения журнала могут соответствовать нескольким правилам, указанным в файле rsyslog.conf. В таких случаях одно сообщение хранится в нескольких log-файлах. Чтобы ограничить количество сохраняемых сообщений, задайте в поле приоритета ключевое слово none, которое указывает, что никакие сообщения для указанного источника не должны сохраняться в данном файле.
none
Вместо того чтобы сохранять сообщения syslog в файле, их можно выводить на терминалы всех пользователей, вошедших в систему. В файле rsyslog.conf есть настройки для вывода всех сообщений syslog с приоритетом emerg на терминалы всех пользователей, вошедших в систему.
#### RULES #### # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg :omusrmsg:* # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log
Подсистема syslog предоставляет множество других возможностей, которые не рассматриваются в этом курсе. Дополнительные сведения на эту тему можно найти на man-странице rsyslog.conf(5), а также в обширной HTML-документации, содержащейся в файле /usr/share/doc/rsyslog/html/index.html пакета rsyslog-doc, который доступен в репозитории AppStream системы Red Hat Enterprise Linux 8.
/usr/share/doc/rsyslog/html/index.html
Утилита logrotate осуществляет ротацию log-файлов, чтобы они не заполнили все свободное пространство в файловой системе, содержащей каталог /var/log. При ротации log-файла к его имени добавляется дата ротации. Например, старый файл /var/log/messages может получить имя /var/log/messages-20190130 при ротации 30 января 2019 г. После ротации старого файла создается новый log-файл и служба, осуществляющая запись в этот файл, получает уведомление.
/var/log
/var/log/messages
/var/log/messages-20190130
После определенного количества ротаций (обычно через 4 недели) самый старый log-файл удаляется для освобождения дискового пространства. Запланированное задание ежедневно запускает программу logrotate, чтобы определить необходимость ротации log-файлов. Ротация большинства log-файлов выполняется еженедельно, однако программа logrotate выполняет ротацию некоторых файлов быстрее, медленнее или по достижении файлами определенного размера.
Конфигурация программы logrotate не рассматривается в этом курсе. Дополнительные сведения см. на man-странице logrotate(8).
Сообщения в log-файлах начинаются с самого старого сообщения вверху и заканчиваются самым последним сообщением внизу. Служба rsyslog использует стандартный формат при записи сообщений в log-файлы. В следующем примере объясняется структура сообщения в log-файле /var/log/secure.
Feb 11 20:11:48 localhost sshd[1433]: Failed password for student from 172.25.0.10 port 59344 ssh2
Метка времени создания записи в log-файле
Хост, с которого было отправлено сообщение журнала
Имя и идентификатор PID программы или процесса, которые отправили сообщение журнала
Содержание отправленного сообщения
Чтобы иметь возможность воспроизвести проблемные ситуации и ошибки, рекомендуется периодически просматривать события в одном или нескольких log-файлах. Команда tail -f /path/to/file выводит последние 10 строк указанного файла и продолжает выводить новые строки в файл по мере их записи.
/path/to/file
Например, для отслеживания неудачных попыток входа в систему выполните команду tail на одном терминале, а затем на другом терминале выполните команду ssh от имени пользователя root, пока пользователь пытается войти в систему.
root
В окне первого терминала выполните следующую команду tail:
[root@host ~]# tail -f /var/log/secure
[root@host ~]#
tail -f /var/log/secure
В окне второго терминала выполните следующую команду ssh:
[root@host ~]# ssh root@localhost root@localhost's password: redhat ...output omitted... [root@host ~]#
ssh root@localhost
root@localhost's password:
redhat
Вернитесь к первому терминалу и просмотрите сообщения журналов.
...output omitted... Feb 10 09:01:13 host sshd[2712]: Accepted password for root from 172.25.254.254 port 56801 ssh2 Feb 10 09:01:13 host sshd[2712]: pam_unix(sshd:session): session opened for user root by (uid=0)
Команда logger может отправлять сообщения службе rsyslog. По умолчанию она отправляет сообщение источнику user с приоритетом notice (user.notice), если иное не указано с помощью опции -p. Полезно проверять все изменения в конфигурации службы rsyslog.
user
user.notice
-p
Чтобы отправить сообщение службе rsyslog, которое записывается в log-файл /var/log/boot.log, выполните следующую команду logger:
/var/log/boot.log
[root@host ~]# logger -p local7.notice "Log entry created on host"
logger -p local7.notice "Log entry created on host"
Man-страницы руководства logger(1), tail(1), rsyslog.conf(5) и logrotate(8)
logger
tail
logrotate
Руководство по rsyslog
/usr/share/doc/rsyslog/html/index.html в пакете rsyslog-doc
Дополнительные сведения см. в разделе Troubleshooting problems using log files руководства Red Hat Enterprise Linux 8 Configuring basic system settings: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/configuring_basic_system_settings/index#troubleshooting-problems-using-log-files_getting-started-with-system-administration