Как получить доступ и настроить системные журналы в системах Ubuntu и Debian

Введение

Системные администраторы, работающие с Ubuntu и Debian часто приходится обращаться к файлам журналов для устранения неполадок. Это фундаментальный шаг в диагностике и решении проблем в этих операционных системах.

Системы на базе Linux, включая Ubuntu и Debian, генерируют множество сообщений, которые записываются в файлы журнала. Эти сообщения журнала очень важны для понимания поведения системы и выявления проблем. Linux использует комбинацию конфигурационных файлов, каталогов, программ, команд и демонов для управления и организации этих журнальных сообщений. Знание расположения файлов журналов и соответствующих команд может значительно ускорить процесс устранения неполадок.

В этом руководстве мы рассмотрим ключевые аспекты системы протоколирования Linux в контексте Ubuntu и Debian.

Шаг 1 — Определение местоположения файлов журнала по умолчанию

По умолчанию файлы журналов в Ubuntu и Debian хранятся в папке /var/log директории. Вы можете просмотреть список файлов журнала в этой директории с помощью следующей команды:

$ ls -l /var/log

При ее выполнении в вашей системе вывод будет выглядеть следующим образом:

total 49316
drwxr-xr-x. 2 root   root          6 Sep 27 19:17 anaconda
drwx------. 2 root   root         99 Jan  3 08:23 audit
-rw-rw----. 1 root   utmp    1234560 Jan  3 16:16 btmp
-rw-rw----. 1 root   utmp   17305344 Jan  1 00:00 btmp-20230101
drwxr-x---. 2 chrony chrony        6 Aug 10  2021 chrony
-rw-r--r--. 1 root   root     130466 Dec  8 22:12 cloud-init.log
-rw-r-----. 1 root   adm       10306 Dec  8 22:12 cloud-init-output.log
-rw-------. 1 root   root      36979 Jan  3 16:03 cron
-rw-------. 1 root   root      27360 Dec 10 23:15 cron-20221211
-rw-------. 1 root   root      94140 Dec 17 23:07 cron-20221218
-rw-------. 1 root   root      95126 Dec 24 23:14 cron-20221225
-rw-------. 1 root   root      95309 Dec 31 23:04 cron-20230101
…

Шаг 2 — Просмотр содержимого журнала

В разделе /var/log, вы найдете различные файлы журналов с определенными целями. Некоторые распространенные примеры включают:

  • wtmp
  • utmp
  • dmesg
  • messages
  • maillog или mail.log
  • spooler
  • auth.log или secure

wtmp и utmp файлы отслеживают входы и выходы пользователей. Чтобы увидеть всех пользователей, вошедших в систему на сервере Linux, воспользуйтесь командой who команду. На Ubuntu вывод может выглядеть следующим образом:

root@ubuntu-22:~# who
root     pts/0        2023-01-03 16:23 (198.7.211.4)

Для получения истории входа в систему можно использовать команду last полезная команда:

root@ubuntu-22:~# last
root     pts/0        198.7.211.4  Tue Jan  3 16:23   still logged in
reboot   system boot  5.19.0-23-generi Thu Dec  8 21:48   still running
wtmp begins Thu Dec  8 21:48:51 2022

Для определения времени последней перезагрузки используйте:

$ last reboot

В Debian вывод может выглядеть следующим образом:

root@debian-11-trim:~# last reboot
reboot   system boot  5.10.0-11-amd64  Thu Dec  8 21:49   still running
wtmp begins Thu Dec  8 21:49:39 2022

The lastlog Команда позволяет узнать время последнего входа пользователей в систему:

$ lastlog

Вывод на системе Debian может выглядеть следующим образом:

root@debian-11-trim:~# lastlog
Username         Port     From             Latest
root             pts/0    162.243.188.66   Tue Jan  3 16:23:03 +0000 2023
daemon                                     **Never logged in**
bin                                        **Never logged in**
sys                                        **Never logged in**
sync                                       **Never logged in**
games                                      **Never logged in**
man                                        **Never logged in**
lp                                         **Never logged in**
mail                                       **Never logged in**
news                                       **Never logged in**
uucp                                       **Never logged in**
proxy                                      **Never logged in**
www-data                                   **Never logged in**
backup                                     **Never logged in**
list                                       **Never logged in**
irc                                        **Never logged in**
gnats                                      **Never logged in**
nobody                                     **Never logged in**
_apt                                       **Never logged in**
messagebus                                 **Never logged in**
uuidd                                      **Never logged in**
…

Чтобы получить доступ к содержимому текстовых файлов журнала, можно использовать такие команды, как cat, head, или tail могут быть использованы. Например, чтобы просмотреть последние десять строк файла /var/log/messages файла на сервере Debian:

$ sudo tail /var/log/messages

Ожидаемый вывод:

root@debian-11-trim:~# tail /var/log/messages
Jan  1 00:10:14 debian-11-trim rsyslogd: [origin software="rsyslogd" swVersion="8.2102.0" x-pid="30025" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Jan  3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 ssh_watcher.go:65: [SSH Watcher] Port knocking detected.
Jan  3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:43: [DO-Managed Keys Actioner] Metadata contains 1 ssh keys and 1 dotty keys
Jan  3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:49: [DO-Managed Keys Actioner] Attempting to update 1 dotty keys
Jan  3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:65: [DO-Managed Keys Actioner] Attempting to create 1 ssh keys
Jan  3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:105: [DO-Managed Keys Actioner] Action metadata updated
Jan  3 16:23:02 debian-11-trim kernel: [   22.685314] Bluetooth: RFCOMM TTY layer initialized
Jan  3 16:23:02 debian-11-trim kernel: [   22.685320] Bluetooth: RFCOMM socket layer initialized
Jan  3 16:23:02 debian-11-trim kernel: [   22.685321] Bluetooth: RFCOMM ver 1.11
Jan  3 16:23:03 debian-11-trim login[956]: ROOT LOGIN  on '/dev/pts/0'

Для журналов, которые обновляются в режиме реального времени, используется параметр tail -f команда может использоваться для «слежения» за журналом и отображения новых записей по мере их добавления:

$ sudo tail -f /var/log/syslog

Чтобы просмотреть начало файла журнала, используйте head:

$ sudo head /var/log/syslog

Шаг 3 — Использование Logrotate для управления журналами

Сайт logrotate Утилита автоматизирует управление файлами журналов. Она может архивировать старые файлы журналов, сжимать журналы и очищать каталоги журналов, чтобы предотвратить чрезмерное использование диска.

Чтобы настроить logrotate, отредактируйте /etc/logrotate.conf файл с помощью текстового редактора (например nano или vim). Сайт logrotate конфигурационный файл хорошо прокомментирован и содержит четкие указания по настройке правил ротации файлов журналов.

Вот пример того, как может выглядеть конфигурационный файл:

# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
# compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    minsize 1M
    rotate 1
}
/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}
# system-specific logs may be also be configured here

В этом примере файлы журналов ротируются еженедельно, хранятся в общей сложности 4 недели, и после ротации создаются новые файлы журналов. Кроме того, после ротации файлы журнала сжимаются.

Чтобы добавить или изменить определенные правила ротации журналов, можно создать или отредактировать файлы в папке /etc/logrotate.d каталоге. Например, файл с именем /etc/logrotate.d/nginx будет содержать правила, специально предназначенные для ротации журналов веб-сервера Nginx.

Шаг 4 — Использование rsyslog Демон

The rsyslog демон — это мощный и гибкий сервис ведения системных журналов, доступный в системах Ubuntu и Debian. Он заменяет старый syslog и предоставляет расширенные возможности для обработки сообщений журнала. rsyslog позволяет фильтровать, маршрутизировать и сохранять сообщения журнала в различных форматах и местах назначения.

Установка и базовая конфигурация

  1. Установка:

Проверьте, если rsyslog уже установлен в вашей системе, выполнив команду:

$ sudo dpkg -l | grep rsyslog

Если он не установлен, вы можете установить его с помощью следующей команды:

$ sudo apt-get update
$ sudo apt-get install rsyslog
  1. Конфигурационные файлы:

rsyslogОсновной файл конфигурации находится по адресу /etc/rsyslog.conf. Однако рекомендуется вносить изменения в конфигурацию в отдельных файлах в /etc/rsyslog.d/ , чтобы сохранить порядок и избежать прямого изменения главного файла.

Понимание строк конфигурации

The rsyslog.conf Файл состоит из ряда строк конфигурации, каждая из которых состоит из двух частей: a селектор и действие. Эти части разделены белым пространством.

  1. Селектор: Селекторная часть определяет источник и важность сообщения журнала. Она разделена на два компонента точкой (.):
    • Объект: Обозначает происхождение сообщения, например auth, kern, mail, user, и т.д.
    • Приоритет: Представляет уровень серьезности сообщения, в диапазоне от debug (самый низкий) до emerg (самый высокий).
  2. Действие: Часть действия определяет, что rsyslog , что нужно сделать с сообщениями журнала, соответствующими заданному селектору. Это может быть запись сообщений в определенные файлы журнала, пересылка их на удаленные серверы и т. д.

Пример строки конфигурации

Вот пример строки конфигурации, которая регистрирует сообщения ядра (kern) с приоритетом err (ошибка) уровня:

kern.err        /var/log/kernel_errors.log

В этом примере:

  • kern.err является селектором, указывающим, что он предназначен для сообщений ядра с приоритетом ошибки.
  • /var/log/kernel_errors.log это действие, указывающее, что соответствующие сообщения журнала должны быть сохранены в файл kernel_errors.log файл.

Просмотр файлов конфигурации

В системах Ubuntu файл конфигурации по умолчанию часто находится по адресу /etc/rsyslog.d/50-default.conf. Для просмотра его содержимого можно воспользоваться следующей командой:

$ cat /etc/rsyslog.d/50-default.conf

Объекты и приоритеты

Разное объекты представляют различные источники сообщений журнала, такие как auth, kern, mail, и другие. Каждому сообщению присваивается приоритет указывающий на уровень серьезности, варьирующийся от debug (самый низкий) до emerg (самый высокий).

Вот несколько объектов и приоритетов, признанных rsyslog:

Объекты:

  • auth или authpriv: События, связанные с авторизацией и безопасностью
  • user: Сообщения журнала, поступающие от пользовательских программ
  • mail: Сообщения журнала, генерируемые почтовой подсистемой
  • local0 на local7: Зарезервировано для местного использования
  • kern: Сообщения, исходящие от ядра Linux

Приоритеты:

  • debug: Отладочная информация из программ
  • info: Простые информационные сообщения
  • notice: Условия, которые могут потребовать внимания
  • warn: Предупреждения
  • err: Ошибки
  • crit: Критические условия
  • alert: Состояния, требующие немедленного вмешательства
  • emerg: Неотложные состояния

Понимание этих объектов и приоритетов необходимо для настройки rsyslog эффективной настройки.

  1. Базовое протоколирование: По умолчанию, rsyslog регистрирует сообщения в /var/log/syslog файл. Вы можете просмотреть содержимое этого файла, используя cat или другие команды, как упоминалось ранее.

Расширенная конфигурация и фильтрация

  1. Фильтрация с помощью шаблонов:

rsyslog позволяет фильтровать и обрабатывать сообщения журнала на основе различных атрибутов, таких как объект, степень серьезности или имя программы. Можно создавать пользовательские шаблоны для форматирования сообщений журнала. Например, для пересылки определенных журналов на удаленный сервер:

  1. Создайте пользовательский файл конфигурации в /etc/rsyslog.d/, например /etc/rsyslog.d/50-remote.conf.
  2. Добавьте следующие строки для пересылки сообщений из auth на удаленный сервер с IP-адресом 1.2.3.4:
if $programname == 'sshd' and $syslogfacility-text == 'auth' then @@1.2.3.4:514
  1. Создание пользовательских файлов журнала:

Вы можете создавать пользовательские файлы журнала для определенных приложений или служб. Например, чтобы создать файл журнала для службы с именем myapp:

  1. Создайте пользовательский файл конфигурации в /etc/rsyslog.d/, например /etc/rsyslog.d/60-myapp.conf.
  2. Добавьте следующие строки, чтобы создать файл журнала по адресу /var/log/myapp.log для сообщений из myapp программа:
if $programname == 'myapp' then /var/log/myapp.log

Применение изменений и перезапуск rsyslog

После внесения изменений в rsyslog конфигурационных файлов, вам необходимо перезапустить rsyslog службу, чтобы применить их:

$ sudo service rsyslog restart

Отладка и устранение неполадок

Если у вас возникли проблемы с протоколированием или конфигурацией, вы можете проверить /var/log/syslog файл для rsyslog связанные с ним сообщения. Дополнительно, rsyslog сам ведет журнал своих действий, поэтому вы можете использовать следующую команду для просмотра этих журналов:

$ sudo journalctl -u rsyslog

Это покажет вам rsyslog‘журналы, которые могут быть полезны для диагностики проблем, связанных с самой службой протоколирования.

Заключение

Доступ к системным журналам и их настройка — важный навык для системных администраторов Linux. Ubuntu и Debian предоставляют надёжный набор инструментов и команд для управления лог-файлами, которые очень важны для диагностики проблем и мониторинга поведения системы.

Понимая расположение файлов журнала по умолчанию, используя такие команды просмотра журнала, как cat, tail, и head, а также настройка ротации журналов с помощью logrotate, администраторы могут эффективно управлять и поддерживать файлы журналов в своих системах. Это гарантирует сохранение важных данных журнала и предотвращает чрезмерное использование диска.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *