Полный цикл в digital

Работа с логами в Linux

Практически любое ПО или служба в Linux ведут или могут вести логи. Лог-файлы, это журналы куда в процессе работы ПО или службы вносится служебная информация:

  1. Запросы и ответы, коды состояния
  2. Выполнение операций, последовательность событий
  3. Исключения (механизмы, обрабатывающие нетипичные ситуации и не прекращающие работу)
  4. Трассировку стека (список методов, которые были вызваны до момента, когда в приложении произошло исключение)
  5. Сообщения об ошибках или недостаточных данных
  6. Выполнение определенных операций, использование ресурсов (например, процессора, памяти)

Дополнительно для удобства обработки логи делятся на подтипы:

  • Логи ядра - содержат информацию о работе самого ядра Linux. Эти логи полезны для диагностики проблем, связанных с ядром, таких как паники и ошибки. Логи ядра обычно находятся в /var/log/kern.log
  • Системные логи - эти логи содержат информацию о работе операционной системы. Важные события, такие как загрузка системы, ошибки ядра и управление аппаратным оборудованием, записываются в системных логах. Обычно они находятся в /var/log/syslog или /var/log/messages
  • Серверные логи - отвечающие за процесс обращения к серверу
  • Почтовые логи - работающие с отправлениями
  • Логи баз данных - которые отражают процессы обращения к базам данных
  • Авторизационные и аутентификационные логи - эти логи отслеживают попытки входа в систему. Ошибки аутентификации и информация о входящих пользовательских сессиях записываются в эти логи. Примером является /var/log/auth.log
  • Логи приложений - создаются приложениями и сервисами, установленными в системе. Они могут содержать информацию о работе приложений, сообщения об ошибках и другую отладочную информацию. Местоположение логов приложений может различаться в зависимости от конкретного приложения
  • Логи аудита - используются для аудита безопасности системы. Они записывают информацию о действиях пользователей и изменениях в системе. Примером является /var/log/audit/audit.log
  • Логи X-системы - если вы используете графическую среду на Linux, то логи X-системы содержат информацию о работе X-сервера, который управляет графическим интерфейсом. Обычно они находятся в /var/log/Xorg.0.log

Где хранятся логи

Как правило, в Linux логи хранятся в специальном каталоге /var/log, внутри которого создаются отдельные файлы и папки для того или иного сервиса.

  • /var/log/messages содержит глобальные системные логи Linux, в том числе те, которые регистрируются при запуске системы. В этот лог записываются несколько типов сообщений: это почта, cron, различные сервисы, ядро, аутентификация и другие
  • /var/log/dmesg содержит сообщения, полученные от ядра. Регистрирует много сообщений еще на этапе загрузки, в них отображается информация об аппаратных устройствах, которые инициализируются в процессе загрузки. Можно сказать это еще один лог системы Linux. Количество сообщений в логе ограничено, и когда файл будет переполнен, с каждым новым сообщением старые будут перезаписаны. Вы также можете посмотреть сообщения из этого лога с помощью команды dmseg
  • /var/log/auth.log содержит информацию об авторизации пользователей в системе, включая пользовательские логины и механизмы аутентификации, которые были использованы
  • /var/log/boot.log содержит информацию, которая регистрируется при загрузке системы
  • /var/log/daemon.log включает сообщения от различных фоновых демонов
  • /var/log/kern.log тоже содержит сообщения от ядра, полезны при устранении ошибок пользовательских модулей, встроенных в ядро
  • /var/log/lastlog отображает информацию о последней сессии всех пользователей. Это нетекстовый файл, для его просмотра необходимо использовать команду lastlog
  • /var/log/maillog /var/log/mail.log журналы сервера электронной почты, запущенного в системе
  • /var/log/user.log информация из всех журналов на уровне пользователей
  • /var/log/Xorg.x.log лог сообщений Х сервера
  • /var/log/alternatives.log информация о работе программы update-alternatives. Это символические ссылки на команды или библиотеки по умолчанию
  • /var/log/btmp лог файл Linux содержит информацию о неудачных попытках входа. Для просмотра файла удобно использовать команду last -f /var/log/btmp
  • /var/log/cups все сообщения, связанные с печатью и принтерами
  • /var/log/anaconda.log все сообщения, зарегистрированные при установке сохраняются в этом файле
  • /var/log/yum.log регистрирует всю информацию об установке пакетов с помощью Yum
  • /var/log/cron всякий раз когда демон Cron запускает выполнения программы, он записывает отчет и сообщения самой программы в этом файле
  • /var/log/secure содержит информацию, относящуюся к аутентификации и авторизации. Например, SSHd регистрирует здесь все, в том числе неудачные попытки входа в систему
  • /var/log/wtmp или /var/log/utmp системные логи Linuxсодержат журнал входов пользователей в систему. С помощью команды wtmp вы можете узнать кто и когда вошел в систему
  • /var/log/faillog лог системы linux, содержит неудачные попытки входа в систему. Используйте команду faillog, чтобы отобразить содержимое этого файла
  • /var/log/mysqld.log файлы логов Linux от сервера баз данных MySQL
  • /var/log/httpd/ или /var/log/apache2 лог файлы linux11 веб-сервера Apache. Логи доступа находятся в файле access_log, а ошибок в error_log
  • /var/log/lighttpd/ логи linux веб-сервера lighttpd
  • /var/log/conman/ файлы логов клиента ConMan,
  • /var/log/mail/ в этом каталоге содержатся дополнительные логи почтового сервера
  • /var/log/prelink/ программа Prelink связывает библиотеки и исполняемые файлы, чтобы ускорить процесс их загрузки. /var/log/prelink/prelink.log содержит информацию о .so файлах, которые были изменены программой
  • /var/log/audit/ содержит информацию, созданную демоном аудита auditd
  • /var/log/setroubleshoot/ SE Linux использует демон setroubleshootd (SE Trouble Shoot Daemon) для уведомления о проблемах с безопасностью. В этом журнале находятся сообщения этой программы
  • /var/log/samba/ содержит информацию и журналы файлового сервера Samba, который используется для подключения к общим папкам Windows
  • /var/log/sa/ содержит .cap файлы, собранные пакетом Sysstat
  • /var/log/sssd/ используется системным демоном безопасности, который управляет удаленным доступом к каталогам и механизмами аутентификации

Стоит учитывать, для служб и ПО не запрещено задавать специальные каталоги для хранения логов. Например, для виртуальных хостов сайтов, панель ispmanager задает специальный каталог /var/www/htttpd-logs для удобного анализа логов по каждому сайту отдельно. Стороннее ПО, устанавливаемое в директорию /opt, чаще всего будет вести логи также внутри этого каталога.

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

  1. Debian-based сюда относятся: Debian, Ubuntu
  2. RedHat-based сюда относятся: Centos, Rocky Linux, AlmaLinux

Системные логи

Системные логи можно разделить на две части.

Системный журнал записывается в файлы:

Debian-based/var/log/syslog
RedHat-based/var/log/messages

В этих логах находится много различной информации о событиях, процессах и ошибках практически от всех системных служб сервера и сообщения от ядра Linux.

К системному логу можно отнести журнал с сообщениями ядра и драйверов всех устройств сервера:

Debian-based/var/log/dmesg
RedHat-based/var/log/kern.log

Системные логи ведутся с момента старта системы, поэтому часто после ее аварийной перезагрузки сложно узнать, что было виной, так как этого события уже нет в логе.

Лог авторизации

Сюда вносится информация о входах в систему, в том числе и о неудачных попытках, полезно для отслеживания попыток подбора пароля к системе и выяснения, кто был на сервере.

Debian-based/var/log/auth.log
RedHat-based/var/log/secure

Лог загрузки ОС

/var/log/boot.log

Лог планировщика (CRON) системы

/var/log/cron

Логи веб-сервера

В стандартных конфигурациях сайты осуществляют свою работу посредством таких веб-серверов, как Apache или Nginx. Они могут быть установлены как поодиночке, так и в связке, где Nginx будет отвечать за фронтенд, а Apache за бэкенд.

У Apache и Nginx есть свои логи, как правило, двух категорий:

  1. хранит журнал посещений
  2. хранит информацию об ошибках, уведомлениях, примечаниях, предупреждениях

Apache

Apache создает два лог-файла:

  • Лог посещений или доступа access.log/access_log
  • Лог ошибок error.log/error_log

Конфигурация Apache позволяет задать хранение этих файлов отдельно для каждого сайта, размещенного на сервере, стандартная реализация:

Debian-based/var/log/apache2
RedHat-based/var/log/httpd

Nginx

Nginx создает как и Apache два файла, хранящих журнал посещений и журнал ошибок. Файлы находятся в каталоге:

/var/log/nginx

В случае конфигурации веб-сервера как связки Nginx с Apache, журналы Nginx иногда пишутся в одном файле с логами Apache, с одной стороны, это может быть удобно, но в некоторых случаях для обнаружения ошибок это может создать трудности. Также как и в Apache, Nginx может быть настроен для ведения логов каждого сайта отдельно.

PHP-интерпретатора

Стандартно PHP-интерпретатор входит в конфигурацию Apache как модуль PHP. В таком случае все ошибки PHP хранятся там же, где основной лог Apache. Если интерпретатор PHP работает в виде службы PHP-FPM, для связки веб-сервера Nginx+PHP-fpm, логи хранятся отдельно, в каталоге:

/var/log/php-fpm

В PHP, через конфигурационный файл php.ini, возможно настроить запись ошибок в определенный лог-файл, либо задать запись ошибок на определенной странице в отдельный файл, это уже осуществляется через файл .htaccess в соответствующем каталоге сайта. Чаще всего для таких случаев задают имя файла php_error.log или просто error.log, располагаться они могут как в каталоге сайта, так и любом другом каталоге пользователя, проверить лучше непосредственно в конфигурации PHP и веб-сервера.

Логи почтовой службы

На серверах довольно часто, присутствует почтовая служба для отправки и приема писем все с тех же сайтов или отдельно через электронные почтовые ящики. Наиболее популярной конфигурацией почты сейчас является связка, Exim отправка и прием писем по протоколу SMTP и Dovecot с сортировщиком sieve, для доступа пользователей к почтовым ящикам по протоколу IMAP/POP3.

Логи Exim находятся в каталоге /var/log/exim, чаще всего интересует файл main.log, в нем хранятся все события почтовой службы, еще есть panic.log там находятся сообщения об ошибках.

У Dovecot, логи как правило, пишутся в файл /var/log/maillog или /var/log/mail.log, в него заносится информация о доставке, приеме и сортировке писем.

Логи FTP

В качестве FTP-службы в Linux есть несколько вариантов ПО, но в целом методика ведения логов у каждого ПО примерно схожая.

В папке /var/log создаются журналы FTP-сервера, в случае использования vsFTPd это будет файл vsftpd.log, в случае proFTPd это будет файл proftpd.log.

В случае PURE-FTPd поищите файл /var/log/pureftpd.log.

Если лога FTP вы не обнаружите, скорее всего, он все равно ведется, но уже в системных логах

Debian-based/var/log/syslog
RedHat-based/var/log/messages

Логи сервера базы данных

MySQL

В стандартной настройке он ведет лог в файле mysqld.log или mysql.log. Файл располагается в папке /var/log/mysql или /var/log/mariadb, в зависимости от используемой версии MySQL. Чаще всего в этот файл задается ведение general log, он же лог запросов, но так как этот лог очень быстро заполняется и начинает занимать много места на диске, то без особой необходимости его ведение не включают, а в лог если что и пишется, то ошибки и уведомления.

Ошибки и уведомления заносятся, как правило, в файл error.log или mysql_error.log.

Сервер MySQL может создавать в папке /var/log/mysql, файл отладки медленных запросов к базе данных. Обычно он называется mysql_slow.log.

Иногда, в случае если настроена репликация баз данных, включают и ведение бинарных логов, они заносятся в файл mysql-bin.log. Этот лог, помимо большого своего объема на диске, также может снизить производительность сервера баз данных, поэтому также без особой необходимости включать его ведение не стоит.

PostgreSQL

Ведение логов задается в разных случаях в совершенно разные директории. Стоит посмотреть значение переменной log_filename в конфигурационном файле PostgreSQL, если этот параметр не задан, но при этом параметр logging_collector в статусе on, то лог ведется по следующему пути:

Debian-based/var/log/postgresql/postgresql-x.x.main.log
RedHat-based/var/lib/pgsql/data/pg_log
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг