Поиск по сайту:

Устаешь ждать, но насколько хуже было бы, если бы ждать стало нечего (Б. Шоу).

Настройка журналов ошибок и доступа Apache5 мин для чтения

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
9 января 2020
Настройка журналов ошибок и доступа Apache
Apache – это кроссплатформенный HTTP-сервер с открытым исходным кодом. Он имеет множество мощных функций, которые могут быть расширены с помощью широкого спектра модулей. При управлении веб-серверами Apache одной из самых частых задач, которую вы выполняете, является проверка файлов журнала.

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

Apache записывает записи своих событий в два типа журналов: журналы доступа и журналы ошибок. Журналы доступа содержат информацию о клиентских запросах, а журналы ошибок – информацию о проблемах сервера и приложения.

В этой статье описывается, как настроить доступ и прочитать журналы ошибок к Apache.

 

Настройка журнала доступа

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

Директива CustomLog определяет местоположение файла журнала и формат сообщений журнала.

Основной синтаксис директивы CustomLog следующий:

CustomLog log_file format [condition];

 

log_file может быть по отношению к ServerRoot или полный путь к файлу журнала. Сообщения журнала также могут передаваться в другую программу с использованием символа канала |.

Второй аргумент format указывает формат сообщений журнала. Это может быть либо явное определение формата, либо псевдоним, определенный директивой LogFormat.

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access.log combined
CustomLog logs/access.log "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""

 

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

Полный список всех форматных строк и модификаторов смотрите в документации к модулю «mod_log_config».

Третий аргумент [condition] является необязательным и позволяет писать сообщения журнала только при соблюдении определенного условия. Обычно это делается с помощью переменных среды. Условие можно отменить с помощью символа !.

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

SetEnvIf Request_URI \.css$ css-file
CustomLog logs/access.log custom env=!css-file

 

Чтобы изменить формат ведения журнала, вы можете либо определить новую директиву LogFormat, либо переопределить формат по умолчанию. Обычно лучше определить новый формат.

Читать  Как установить неограниченное кол-во пользователей и описания файлов на сервере Linux

Хотя журнал доступа предоставляет очень полезную информацию, он занимает место на диске и может повлиять на производительность сервера. Если на вашем сервере недостаточно ресурсов и у вас загруженный веб-сайт, вы можете отключить журнал доступа.

Для этого просто закомментируйте или удалите директиву CustomLog из разделов конфигурации основного сервера и виртуального сервера.

Если вы хотите отключить журнал доступа только для одного виртуального хоста, установите первый аргумент директивы CustomLog /dev/null:

CustomLog /dev/null combined

 

 

Настройка журнала ошибок

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

Директива ErrorLog определяет имя местоположение журнала ошибок. Он принимает следующую форму:

ErrorLog log_file

 

Если путь к log_file не является абсолютным, он устанавливается относительно ServerRoot. Сообщения об ошибках также могут передаваться в другую программу с использованием символа канала |.

Параметр LogLevel устанавливает уровень протоколирования. Ниже перечислены уровни их серьезности (от низкого до высокого):

  • trace1 – trace8- трассировка сообщений.
  • debug – отладка сообщений.
  • info – информационные сообщения.
  • notice – уведомления.
  • warn – предупреждения.
  • error – ошибки при обработке запроса.
  • crit – критические вопросы. Требует быстрых действий.
  • alert – оповещения. Действие должно быть принято немедленно.
  • emerg – чрезвычайная ситуация. Система находится в нерабочем состоянии.

 

Каждый уровень журнала включает в себя более высокие уровни. Например, если вы установите уровень журнала warn, Apache также пишет там сообщения error, crit, alert и emerg.

Если параметр LogLevel не указан, по умолчанию используется значение warn. Рекомендуется установить уровень как минимум crit.

Директива ErrorLogFormat определяет формат журнала ошибок. В большинстве дистрибутивов Linux сервер Apache использует формат по умолчанию, который является достаточным для большинства случаев.

 

Виртуальные хосты и глобальная регистрация

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

Затем директивы CustomLog или ErrorLog устанавливаются в контексте основного сервера, сервер записывает все сообщения журнала в один и тот же файл журнала доступа и журнала ошибок. В противном случае, если директивы находятся внутри блока <VirtualHost>, в указанный файл записываются только сообщения журнала для этого виртуального хоста.

Директива log, установленная в блоке <VirtualHost>, переопределяет директиву, заданную в контексте сервера.

Читать  Как извлечь или распаковать файл tar.xz в Linux

Виртуальные хосты без директив CustomLog или ErrorLog получат свои сообщения журнала, записанные в журналы глобального сервера.

Для лучшей читаемости рекомендуется установить отдельные файлы журналов доступа и ошибок для каждого виртуального хоста. Вот пример:

<VirtualHost *:80>
     ServerName example.com
     ServerAlias www.example.com
     ServerAdmin webmaster@example.com
     DocumentRoot /var/www/example.com/public
     LogLevel warn
     ErrorLog /var/www/example.com/logs/error.log
     CustomLog /var/www/example.com/logs/access.log combined
</VirtualHost>

 

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

 

Расположение файлов журнала

По умолчанию в дистрибутивах на основе Debian, таких как Ubuntu, журналы доступа и ошибок расположены в каталоге /var/log/apache2. На CentOS файлы журналов помещаются в каталог /var/log/httpd.

 

Чтение и понимание файлов журнала Apache

Файлы журнала можно открыть и проанализировать с помощью стандартных команд, таких как cat, less, grep, cut, awk, и так далее.

Вот пример записи из файла журнала доступа, который использует формат combine журнала в Debian :

192.168.33.1 - - [08/Jan/2020:21:39:03 +0000] "GET / HTTP/1.1" 200 6169 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"

 

Давайте разберемся, что означает каждое поле записи:

  • %h- 192.168.33.1 – Имя хоста или IP-адрес клиента, сделавшего запрос.
  • %l – — Удаленный логин. Если имя пользователя не установлено, в этом поле отображается -.
  • %u – — Если запрос аутентифицирован, отображается имя удаленного пользователя.
  • %t – [08/Jan/2020:21:39:03 +0000] – время локального сервера.
  • \”%r\”- “GET / HTTP/1.1” – Первая строка запроса. Тип запроса, путь и протокол.
  • %>s- 200 – Окончательный код ответа сервера. Если символ > не используется и запрос был перенаправлен изнутри, он покажет статус исходного запроса.
  • %O- 396 – Размер ответа сервера в байтах.
  • \”%{Referer}i\”- “-” – URL реферала.
  • \”%{User-Agent}i\”- Mozilla/5.0 … – Пользовательский агент клиента (веб-браузер).

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

 

tail -f access.log

 

 

Вывод

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

Apache имеет очень настраиваемую систему ведения журналов, которая позволяет вам настраивать доступ и журналы ошибок в соответствии с вашими потребностями.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

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

Читайте также

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close