Блоги, форумы, посадочные страницы и другие интернет-ресурсы представляют собой совокупность графического, текстового, аудио- и видео-контента, размещенного на веб-страницах в виде кода. Чтобы обеспечить к ним доступ пользователей через интернет, файлы размещают на серверах. Это аппаратное обеспечение (персональный компьютер или рабочая станция), на жестком диске которого и хранится код. Ключевые функции выполняются без участия человека, что актуально для всех типов оборудования, включая виртуальный выделенный сервер. Но это не означает, что контроль не осуществляется. Большинство событий, которые происходят при участии оборудования, пользователей и софта, включая ошибки, логи сервера фиксируют и сохраняют. Из этой статьи вы узнаете, что они собой представляют, зачем нужны, и как их читать.
Что такое логи
Это текстовые файлы, которые хранятся на жестком диске сервера. Создаются и заполняются в автоматическом режиме, в хронологическом порядке. В них записываются:
- системная информация о переданных пользователю данных;
- сообщения о сбоях и ошибках;
- протоколирующие данные о посетителях платформы.
Посмотреть логи сервера может каждый, у кого есть к ним доступ, но непосвященному обывателю этот набор символов может показаться бессмысленным. Интерпретировать записи и получить пользу после прочтения проще профессионалу.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Классификация логов
Для каждой разновидности софта предусмотрены соответствующие файлы. Все логи сервера могут храниться на одном диске или даже на отдельном сервере. Существует довольно много разновидностей логов, вот наиболее распространенные:
- доступа (access_log) — записывают IP-адрес, время запроса, другую информацию о пользователях;
- ошибок (error_log) — показывают файлы, в которых выявлены ошибки и классифицируют сбои;
- FTP-авторизаций — отображают данные о попытках входа по FTP-соединению;
- загрузки системы — с его помощью выполняется отладка при появлении проблем, в файл записываются основные системные события, включая сбои;
- основной — содержит информацию о действиях с файерволом, DNS-сервером, ядром системы, FTP-сервисом;
- планировщика задач — в нем выполняется протоколирование задач, отображаются ошибки при запуске cron;
- баз данных — хранит подробности о запросах, сбоях, ошибки в логах сервера отображаются наравне с другой важной информацией;
- хостинговой панели — включает статистику использования ресурсов сервера, время и количество входов в панель, обновление лицензии;
- веб-сервера — содержит информацию о возникавших ошибках, обращениях;
- почтового сервера — в нем ведутся записи о входящих и исходящих сообщениях, отклонениях писем.
Записи в системные журналы выполняет установленный софт.
Зачем нужны логи
Анализ логов сервера — неотъемлемая часть работы системного администратора или веб-разработчика. Обрабатывая их, специалисты получают массу полезных сведений. Используются в следующих целях:
- поиск ошибок и сбоев в работе системы;
- выявление вредоносной активности;
- сбор статистики посещения веб-ресурса.
После изучения информации можно получить точную статистику в виде сводных цифр, информацию о юзерах, выявить поведенческие закономерности пользовательских групп.
Читайте также
Где посмотреть логи
Расположение определяется хостинг-провайдером или настройками установленного софта. На виртуальном хостинге доступ к лог-файлам предоставляется из панели управления хостингом. Если администратор не открыл его для владельца сайта, получить информацию не получится. Но большинство провайдеров разрешают свободно пользоваться журналами и проводить анализ логов сервера. Независимо от разновидности сервера лог-файлы хранятся в текстовом документе. По умолчанию он называется access.log, но настройки позволяют переименовать файл. Это актуально для Nginx, Apache, прокси-разновидностей squid, других типов. Для просмотра их надо скачать и открыть в текстовом редакторе. В качестве альтернативы можно использовать Grep и схожие утилиты. Они позволяют открыть и отфильтровать логи прямо на сервере.
Как читать логи. Пример
Существует довольно много форматов записи, combined — один из наиболее распространенных. В нем строчка кода может выглядеть так:
%h %l %u %t «%r» %>s %b «%{Referer}i» «%{User-Agent}i»
Директивы имеют следующее значение:
- %h — IP-адрес, с которого был сделан запрос;
- %l — длинное имя удаленного хоста;
- %u — удаленный пользователь, если запрос был сделан аутентифицированным юзером;
- %t — время запроса к серверу и его часовой пояс;
- %r — тип и содержимое запроса;
- %s — код состояния HTTP;
- %b — количество байт информации, отданных сервером;
- %{Referer} — URL-источник запроса;
- %{User-Agent} — HTTP-заголовок.
Еще один пример чтения логов можно посмотреть в статье «Как читать логи сервера».
Опытные веб-мастера для сбора и чтения лог-файлов используют программы-анализаторы. Они позволяют читать логи сервера без значительных временных затрат. Вот некоторые из наиболее востребованных:
- Analog. Один из самых популярных анализаторов, что во многом объясняется высокой скоростью обработки данных и экономным расходованием системных ресурсов. Хорошо справляется с объемными записями, совместим с любыми ОС.
- Weblog Expert. Программа доступна в трех вариациях: Lite (бесплатная версия), Professional и Standard (платные релизы). Версии отличаются функциональными возможностями, но каждая позволяет анализировать лог-файлы и создает отчеты в PDF и HTML.
- SpyLOG Flexolyzer. Простой аналитический инструмент, позволяющий получать отчеты с высокой степенью детализации. Интегрируется c системой статистики SpyLOG, позволяет решать задачи любой сложности.
Логи сервера с ошибками error.log
Это журнал с информацией об ошибках на сайте. В нем можно посмотреть, какие страницы отсутствуют, откуда пришел пользователь с конкретным запросом, имеются ли «битые» ссылки, другие недочеты, включая те, которые не удалось классифицировать. Используется для выявления багов и погрешностей в коде.
Каждая ошибка в логе сервера error.log отображается с новой строки. Идентифицировав и устранив ее, программист сможет наладить работу сайта. Используя журнал, можно выявить и слабые места веб-платформы. Это простой и удобный инструмент анализа, которым должен уметь пользоваться каждый веб-мастер, системный администратор и программист.
В работе системного администратора, нередко возникает необходимость посмотреть логи сервера (Server Logs), с какими задачами работал сервер в конкретное время, какие действия совершали пользователи. Причины возникновения этой необходимости могут быть разные:
- Сбой в работе сервера;
- Выявление неблагонамеренных действий;
- Анализ рабочих процессов.
Всю необходимую информацию можно получить в логи сервера (Server Logs), то есть файлах, в которые вносятся записи о различных процессах, действиях пользователей, и т.п. Но, для этого необходимо понимать, где хранятся эти данные, а главное, как с ними работать.
Что такое логи сервера?
Собственно говоря, само слово «логи сервера», является банальной транслитерацией, от словосочетания «server log», которое переводится как «журнал сервера».
Существуют следующие типы логов:
- Ошибки – записи, фиксирующие различные сбои в работе сервера, или при обращении к конкретным функциям или задачам. С их помощью можно быстро ликвидировать разные баги и сбои;
- Доступ – записи, которые фиксируют точные дату и время подключения конкретного пользователя, каким образом он попал на сайт, и т.д. Позволяют проводить аналитическую работу, а также находить уязвимые места, в тех случаях, когда ресурс пытались взломать;
- Прочее – записи с данными о работе разных компонентов сервера, например, почты.
Разумеется, если вы не наблюдаете никаких проблем, или подозрительных моментов, связанных с работой сервера, то нет никакой необходимости в частом просмотре логов. Тем не менее, специалисты рекомендуют выборочно изучать их, хотя бы раз в год.
С другой стороны, если уже произошло какое-то ЧП, например, сайт резко начал выдавать большое количество ошибок, подвергся спам-атаке, или стремительно возросла нагрузка на сервер, то изучение логов, позволит быстро понять в чем проблема и устранить её.
Тем не менее, для большинства рядовых пользователей записи в log-файлах, представляют собой просто странный набор символов. А значит, нужно понять, как правильно их читать.
Как правильно читать логи сервера?
В данном примере, мы разберем два типа записей, касающихся логов доступа и ошибок, поскольку именно к ним чаще всего обращаются, при возникновении каких-то проблем.
Итак, запись лога доступа, из файла access.log:
mysite.biz 25.34.94.132 — — [21/Nov/2017:03:21:08 +0200] «GET /blog/2/ HTTP/1.0» 200 18432 «-» «Unknow Bot (http://www.unknow.com/bot; [email protected])»
Что она обозначает:
- mysite.biz – домен сайта, которым вы интересуетесь;
- 34.94.132 – IP-адрес, который использовал пользователь при заходе на сайт;
- [21/Nov/2017:03:21:08 +0200] – дата, точное время и часовой пояс пользователя;
- GET – запрос, который отправляется для получения данных. В том случае, если пользователь передает данные, запрос будет «POST»;
- /blog/2/ — относительный адрес страницы, к которой был обращен запрос;
- HTTP/1.0 – используемый протокол;
- 200 – код ответа на запрос;
- 18432 – количество данных, переданных по запросу, в байтах;
- Unknow Bot (http://www.unknow.com/bot; [email protected]) – данные о роботе, или реальном человеке, который зашел на сайт. В том случае, если это человек, будет отображена ОС, тип устройства и т.д. В конкретном примере на сайт зашел робот-парсер, принадлежащий ресурсу unknow.com.
Таким образом, мы узнали, что с IP-адреса 25.34.94.132, двадцать первого ноября, 2017-го года, в три часа, двадцать одну минуту и восемь секунд, на наш сайт заходил бот, принадлежащий другому веб-ресурсу. Он отправил запрос на получение данных, и получил 18432 байт информации.
Теперь можно заблокировать доступ для ботов от этого сайта, либо от всех, кто пользуется этим IP, разумеется, если в этом есть необходимость.
Логи ошибок, можно посмотреть в файле с говорящим именем – error.log. Они выглядят следующим образом:
[Sat Oct 1 18:23:28.719615 2019] [:error] [pid 10706] [client 44.248.44.22:35877]
PHP Notice: Undefined variable: moduleclass_sfx in
/var/data/www/mysite.biz/modules/contacts/default.php on line 13
Что здесь написано?
- Дата, время и тип ошибки, а также IP-адрес, который использовал посетитель;
- Тип события, в данном случае – «PHP Notice» (уведомление), а также уточнение, что в данном случае, мы имеем дело с неизвестной переменной;
- Местоположение файла с уведомлением, а также строка, на которой оно находится.
Если говорить просто, то в данном случае мы имеем сообщение о том, что первого октября, в 18:23, 2019-го года, произошла ошибка, связанная с модулем контактов.
Разумеется, даже после расшифровки, полученные данные не так просто проанализировать. Именно поэтому, для удобной обработки данных из логов сервера, используется различное программное обеспечение. К таким программам относятся: Awstats, Webtrends, WebAlyzer, и многие другие.
Сегодня существует множество платных и бесплатных вариантов программ, для обработки и анализа лог-файлов.
Логи серверов на Windows
У логов серверов на Windows, изначально более удобный и структурированный вывод информации, в виде простой и понятной таблицы.
Существует несколько уровней событий:
- Подробности;
- Сведения;
- Предупреждение;
- Ошибка;
- Критический.
Также есть возможность быстрой фильтрации и сортировки записей, в зависимости от того, какие данные вы хотите получить.
Логи SQL сервера
На сегодняшний день, базы данных SQL, являются наиболее распространенным способом работы с большими объемами информации. В первую очередь, логи sql сервера, стоит изучить, если вы не уверены в том, что какие-то процессы были успешно завершены. Этими процессами могут быть:
- Резервное копирование;
- Восстановление данных;
- Массовые изменения;
- Различные скрипты, и программы для обработки данных.
Для того, чтобы просмотреть записи в логах, можно использовать SQL Server Management Studio, либо другой, удобный вам редактор текстов. Записи распределены по журналам следующих типов:
- Сбор данных;
- Database Mail;
- SQL Сервер;
- События Windows;
- Журнал заданий;
- Коллекция аудита;
- SQL Сервер, агент.
Для того, чтобы получить доступ к журналам, необходимо иметь права «securityadmin».
Как включить или выключить запись логов сервера?
Для того, чтобы осуществить эту операцию, нужно зайти в административную панель вашего хостера. Как правило, в основном меню есть раздел «Журнал», или «Логи», в котором можно включить или выключить запись данных о предоставленном доступе, ошибках, и т.п.
Где находятся логи сервера?
Расположение журналов, зависит в первую очередь от используемой вами операционной системы.
Логи серверов с CentOS, или Fedora, хранятся в дирректории «/var/log/».
Названия файлов:
- Журнал ошибок – «error.log»;
- Журнал nginx – «nginx»;
- Журнал доступов – «log»;
- Основной журнал – «syslog»;
- Журнал загрузки системы – «dmesg».
Логи ошибок, связанных с работой MySQL, находятся в директории «/var/lib/mysql/», в файле «$hostname.err».
Для операционных систем Debian и Ubuntu, логи сервера располагаются в папке «/var/log/», в файлах:
- Nginx — журнал nginx;
- /mysql/error.log – журнал ошибок для баз данных MySQL;
- Syslog – основной журнал;
- Dmesg – загрузка системы, драйвера;
- Apache2 – журнал веб-сервера Apache.
Как видите, у всех ОС, основанных на Linux, логи сервера, как правило имеют одинаковые названия, и директории.
С логами для Windows server, дело обстоит несколько иначе. Если нужно просмотреть журналы, необходимо войти в систему, нажать клавиши «Win» и «R», после чего откроется окно просмотра событий, где есть возможность подобрать интересующие нас логи.
Если вы хотите посмотреть логи PowerShell, то необходимо открыть программу и ввести команду: «Get-EventLog -Logname ‘System’».
Все данные будут выведены в виде удобной таблицы.
Пример работы с логами сервера
Представьте себе, что вы внезапно обнаружили существенное увеличение нагрузки на ваш сервер, связанное с внешними воздействиями. Сервисы аналитики начинают регистрировать рекорды посещаемости, и можно было бы радоваться, но видно, что эти «пользователи» не совершают действий, которых от них ждут, неважно что это – изучение контента, или покупки на сайте.
Можно потратить много времени на выяснения причины, а можно просто посмотреть логи доступа и проверить, с каких IP, и кто заходил на ваш сайт, в выбранные промежуток времени. Вполне вероятно, что вы обнаружите большое количество переходов с нескольких IP-адресов, которые делались автоматически, то есть ваш сайт попал под DDoS-атаку.
В этом случае, можно заблокировать доступ к сайту с выбранных IP, и в дальнейшем расширять этот список, при необходимости.
Вывод
На сегодняшний день, log-файлы сервера, являются крайне удобным инструментом, который позволяет отслеживать работу сайта, выявлять баги и ошибки, злонамеренных пользователей, противодействовать DDoS-атакам.
Для того, чтобы правильно работать с логами сервера, необходимо знать их расположение, иметь возможность изучить нужные файлы, а также понимать разные типы записей. В большинстве панелей управления, пользователю сразу предоставляется возможность включать и выключать запись логов. К тому же есть возможность скачивать или просматривать журналы.
Кроме того, сегодня можно найти ряд программного обеспечения, и они позволяют взаимодействовать с информацией из журналов через удобный графический интерфейс, с большой скоростью расшифровывать её и выводить в простом виде.
У систем, основанных на Linux, как правило примерно одинаковое расположение файлов с логами, что существенно упрощает работу с ними.
У Windows Server, есть свой собственный графический интерфейс для чтения логов, который весьма удобен, и позволяет быстро получить необходимую информацию.
”FAQ
Какие виды логов сервера существуют?
Существует несколько видов логов сервера, которые могут быть полезны при обнаружении проблем и улучшении производительности вашего сервера.
Системные логи — это логи, которые ведутся самой операционной системой и хранят информацию о событиях, происходящих в системе. Они могут включать в себя ошибки, предупреждения, информационные сообщения и другую полезную информацию.
Важная информация:
Системные логи могут быть использованы для обнаружения проблем в работе сервера и операционной системы.
Информация в системных логах может помочь в анализе причин отказов и сбоев на сервере.
Хранение системных логов может потребовать дополнительной памяти и ресурсов сервера.
Логи веб-сервера — это логи, которые создаются веб-сервером и содержат информацию о запросах клиентов, ответах сервера и других событиях, связанных с работой веб-сервера.
Важная информация:
Логи веб-сервера могут быть использованы для анализа производительности и оптимизации веб-сайта.
Информация в логах веб-сервера может помочь в обнаружении атак и уязвимостей безопасности.
Хранение логов веб-сервера может занимать большой объем дискового пространства.
Логи приложений — это логи, которые создаются приложениями, установленными на сервере, и содержат информацию о работе приложений.
Важная информация:
Логи приложений могут помочь в обнаружении ошибок и проблем в работе приложений.
Информация в логах приложений может быть полезна для анализа производительности приложений и оптимизации их работы.
Хранение логов приложений может занимать много места на диске, поэтому их необходимо регулярно очищать.
Где можно найти файлы логов сервера?
Файлы логов сервера находятся на самом сервере и могут быть найдены в разных местах, в зависимости от операционной системы и типа сервера.
В операционной системе Linux файлы логов обычно находятся в директории /var/log. В этой директории находятся различные поддиректории, которые содержат различные логи, такие как системные логи (syslog), логи веб-сервера (apache, nginx), логи баз данных (mysql, postgresql) и т.д.
Важная информация:
Для доступа к файлам логов необходимы права администратора.
Файлы логов могут быть сохранены в различных форматах, включая текстовые файлы и бинарные файлы.
Некоторые серверные приложения и сервисы могут хранить свои логи в других местах, поэтому необходимо проверять документацию для каждого приложения.
В операционной системе Windows файлы логов могут находиться в различных местах, в зависимости от конфигурации системы. Некоторые из распространенных мест для логов включают директории C:WindowsSystem32LogFiles и C:inetpublogsLogFiles.
Важная информация:
Для доступа к файлам логов также необходимы права администратора.
Файлы логов могут быть сохранены в различных форматах, включая текстовые файлы и бинарные файлы.
Некоторые серверные приложения и сервисы могут хранить свои логи в других местах, поэтому необходимо проверять документацию для каждого приложения.
Как просмотреть файлы логов сервера?
Чтение файлов логов сервера может помочь в анализе производительности и обнаружении проблем на сервере. Способы просмотра файлов логов зависят от операционной системы и типа сервера.
В Linux можно использовать команду less для просмотра содержимого файлов логов. Например, чтобы просмотреть содержимое файла syslog, нужно ввести команду less /var/log/syslog.
Важная информация:
Команда less позволяет просматривать содержимое файлов логов постранично.
Для поиска конкретных фрагментов в файле логов можно использовать команду grep.
В Windows можно использовать инструмент Event Viewer для просмотра логов системы. Event Viewer позволяет просматривать системные логи, логи приложений и логи безопасности.
Важная информация:
Для доступа к Event Viewer необходимо иметь права администратора.
В Event Viewer можно настроить фильтры для отображения только нужной информации из логов.
Как использовать логи сервера для анализа производительности?
Анализ логов сервера может помочь в выявлении проблем с производительностью и оптимизации работы сервера. Вот несколько способов использования логов сервера для анализа производительности:
Анализ времени ответа сервера. Логи веб-сервера содержат информацию о времени ответа сервера на запросы от клиентов. Анализ этих логов может помочь выявить проблемы с производительностью сервера, такие как медленное выполнение запросов или долгое время загрузки страниц.
Важная информация:
Для анализа времени ответа сервера нужно обратить внимание на значения, указанные в логах, такие как время ответа сервера и время загрузки страницы.
Для оптимизации времени ответа сервера можно использовать различные методы, такие как кэширование данных, оптимизация запросов и настройка сервера.
Анализ ошибок сервера. Логи сервера могут содержать информацию о возникающих ошибках, таких как ошибки базы данных, ошибки в коде приложения и т.д. Анализ этих логов может помочь выявить проблемы с производительностью сервера и исправить ошибки.
Важная информация:
Для анализа ошибок сервера нужно обратить внимание на сообщения об ошибках, указанные в логах.
Для исправления ошибок можно использовать различные методы, такие как обновление приложения, настройка сервера или исправление кода.
Анализ использования ресурсов сервера. Логи сервера могут содержать информацию о загрузке процессора, использовании памяти и других ресурсах сервера. Анализ этих логов может помочь выявить проблемы с производительностью сервера и оптимизировать его работу.
Важная информация:
Для анализа использования ресурсов сервера нужно обратить внимание на значения, указанные в логах, такие как процент загрузки процессора и использование памяти.
Для оптимизации использования ресурсов сервера можно использовать различные методы, такие как настройка сервера и уменьшение нагрузки на сервер.
Как обезопасить логи сервера?
Логи сервера содержат важную информацию о работе сервера и могут быть использованы злоумышленниками для получения доступа к системе. Вот несколько способов обезопасить логи сервера:
Шифрование логов. Логи сервера могут быть зашифрованы для защиты от несанкционированного доступа.
Важная информация:
Для шифрования логов можно использовать различные методы, такие как использование шифрования на уровне файловой системы или шифрование на уровне приложения.
Ограничение доступа к логам. Доступ к логам сервера должен быть ограничен только для авторизованных пользователей.
Важная информация:
Для ограничения доступа к логам можно использовать различные методы, такие как настройка прав доступа на уровне файловой системы или использование специальных программ для мониторинга доступа к файлам.
Удаление устаревших логов. Устаревшие логи сервера должны быть удалены, чтобы предотвратить их использование злоумышленниками.
Важная информация:
Для удаления устаревших логов можно использовать различные методы, такие как настройка автоматического удаления или ручное удаление логов через определенный период времени.
Мониторинг логов. Логи сервера должны быть мониторингом для выявления несанкционированного доступа и других проблем с безопасностью.
Важная информация:
Для мониторинга логов можно использовать различные программы и инструменты, такие как системы мониторинга событий и программы для анализа логов.
Защита логов от удаления. Логи сервера должны быть защищены от удаления злоумышленниками.
Важная информация:
Для защиты логов от удаления можно использовать различные методы, такие как использование систем резервного копирования или использование специальных программ для мониторинга изменений в файловой системе.
Загрузка…
Лог (log) — это текстовый файл, куда автоматически записывается важная информация о работе системы или программы. Чаще всего говорят о логах сервера. Их записывает программное обеспечение, которое управляет внутренней частью сайта или онлайн-системы. Лог-файл — своеобразный журнал событий.
В логи записываются сведения об ошибках, действиях пользователей и других событиях, которые происходят на сервере или в системе. Разработчики и инженеры пользуются ими при отладке или при проверке, как работает программное обеспечение.
Лог-файл (log file) содержит в себе информацию в сокращенном формате. Для обычного пользователя это непонятный набор символов. Но у записей есть смысл, и специалисты должны уметь читать их — в файлах много важной информации о работе.
Для чего нужны логи
Устранение неполадок. По логам можно понять, когда и из-за чего в работе системы возник сбой. А когда станет понятна причина, устранить его будет легче.
Контроль работы. Логи позволяют лучше отслеживать процессы, делать прогнозы на будущее и в целом контролировать работу сервера. По ним понятно, нормально ли работает система, что нужно доработать, какая у сайта посещаемость и так далее.
Проверка стабильности. Даже если с системой все хорошо, рекомендуется периодически проверять ее логи. Так можно на ранних этапах найти уязвимость или недочет — еще до того, как он станет проблемой.
Выявление злоумышленников. Вирус или взлом можно обнаружить по логам. Они фиксируют любые действия пользователей или программ в системе, поэтому по ним специалист может отследить подозрительную активность.
Маркетинг. Логи — источник ценной информации для развития сайта. Они позволяют собрать статистику по посещаемости с «сырыми» техническими данными. Например, понять, откуда приходят пользователи, где они находятся и какими устройствами пользуются для визита.
Какими бывают логи
Информации в логах много, поэтому для каждого типа сведений существует свой лог-файл. Возьмем для примера логи веб-сервера. Вот какими они могут быть:
- основной рассказывает о главных событиях, которые произошли непосредственно с серверным ПО;
- журнал доступа содержит сведения о посетителях сайта;
- лог ошибок сообщает обо всех сбоях, которые произошли во время работы ПО;
- лог веб-сервера рассказывает об обращениях к серверу и о возможных ошибках;
- лог баз данных записывает сведения о действиях с БД, запросах и ошибках;
- лог почтового сервера содержит информацию об отправленных и полученных письмах и так далее.
Наиболее важными считаются логи сервера, доступа и ошибок, но проверять советуют не только их. Мы перечислили только несколько примеров: отдельные журналы могут быть у планировщика задач, клиента передачи файлов, хостинга и многих других подсистем. Информация по каждой из них пишется в свой лог.
Что может содержаться в логах
В лог-файлах находится полный журнал событий, связанных с конкретным узлом. Там описываются время события, тип запроса, реакция сервера, код ответа, IP-адрес пользователя, количество переданной информации и многое другое. Если произошла ошибка, это будет помечено в логах отдельно.
Но вся перечисленная информация представлена в очень сжатом виде. Поэтому незнакомый с правилами записи человек может в ней запутаться. Более того, в логах много сведений, поэтому они очень подробные и обширные. Бывает сложно отделить нужную информацию от той, которая не пригодится сейчас.
Как правильно читать лог
Вручную. Логи хранятся в файлах с расширением .log. Их можно открыть как обычные текстовые файлы и просмотреть содержимое. Перед этим стоит посмотреть, как настроен формат записи логов, если у вас есть доступ к этим параметрам.
Например, так выглядит формат по умолчанию для лога доступа с веб-сервера:
[доменное имя сайта][IP-адрес пользователя][дата и время визита][тип запроса][URL, к которому обратился пользователь][протокол, по которому пользователь соединился с сайтом][код ответа сервера][количество байт информации, которую передали пользователю][дополнительная информация]
Данные чаще всего разделяются пробелами, иногда также дефисами или слэшами. Каждая запись показывается с новой строчки. Читать полные логи в таком формате довольно трудоемко, поэтому главное — найти нужные строки и сконцентрироваться на них.
Это не единственный возможный способ записи лога. Например, в логе ошибок каждая строчка — это запись об ошибке с полной информацией о ней: датой и временем, адресом страницы, на которой возник сбой, и так далее.
С помощью анализатора. Второй вариант — не просматривать лог вручную, а воспользоваться специальной программой-анализатором. Она парсит лог-файл — «разбирает» его на составляющие и представляет в удобном для пользователя виде. Так информация показывается в виде понятного отчета, иногда с графиками и диаграммами.
Анализаторы бывают разными, например Weblog Expert, Analog и пр. Некоторые из них также умеют интегрироваться с сервисами для сбора статистики, чтобы показывать более полную картинку.
Проверять и читать логи вам понадобится, если вы будете работать с профессиональным ПО для разработчиков, вебмастеров или инженеров. Это сложно только с первого взгляда — если понять принцип, расшифровать их не составит труда. А анализаторы помогут лучше и быстрее сориентироваться в записях.
Узнать больше о сетевых технологиях и получить новую профессию вы можете на курсах. Записывайтесь и станьте востребованным IT-специалистом.
Логи сервера
Если вы хотите знать всё про логи сервера, читайте нашу статью. Мы расскажем, что такое logs, для чего они нужны и покажем, как посмотреть их.
Что такое логи
Чтобы объяснить, что такое логи сервера, скажем несколько слов о самих серверах.
На серверах хранятся файлы сайтов. Чтобы перейти на сайт, пользователь заходит в браузер и вбивает запрос. Затем браузер обращается к серверу, получает файлы нужного сайта и отображает их пользователю. Попадая на сайт, посетитель совершает различные действия — переходит на страницы, оформляет заказ, совершает оплату и другое. При каждом действии посетитель и сервер взаимодействуют друг с другом на уровне интернет-системы.
Логи — это текстовые файлы, в которых хранится информация о пользователях, их взаимодействии с сервером, а также системная информация о работе сервера. Логи формируются в автоматическом режиме и сохраняются в хронологическом порядке. Поэтому их также называют журналом сервера (Server Logs).
Можно выделить несколько основных типов логов:
- сведения о каждом обращении (IP-адрес и тип браузера посетителя) — access_log,
- протоколы действий каждого посетителя (из какого источника перешел на сайт, сколько на нём находился, какие совершал операции и другое),
- записи о сбоях и ошибках — error_log,
- записи о входящих и исходящих сообщениях — почтовые логи,
- сведения о загрузках и основные события в системе,
- данные о количестве входов по FTP-соединению,
- данные о действиях с файерволом, DNS-сервером, ядром системы,
- статистика использования ресурсов сервера, время и количество входов в панель, обновление лицензии.
Где хранятся логи сервера
В некоторых случаях для хранения логов используют отдельный файловый сервер. Но чаще всего логи хранятся на жёстком диске основного сервера. Они располагаются в корневой директории хостинга в системной папке logs. Точный путь до лога будет зависеть от операционной системы сервера. Например, логи SSH Ubuntu хранятся в /var/log/auth.log, а логи SSH CentOS в /var/log/secure.
Зачем проверять логи
Чаще всего обращаться к содержимому логов и анализировать его приходится системным администраторам. Анализ логов необходим в следующих ситуациях:
- сбои в работе сервера,
- резкое повышение нагрузки,
- подозрение на спам-атаки и другое.
Однако уметь анализировать журнал полезно не только админам, но и владельцам сайтов и другим пользователям с доступом в админку. Для этого нужно понимать, как устроены логи.
Как устроены логи
Каждый тип logs имеет свою структуру. В качестве примера разберём структуру access_log:
123.123.123.123 - - [01/Janr/2021:10:00:00 +0300] "GET /wp-includes/feed.php HTTP/1.0" 200 - "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36"
Здесь:
- 123.123.123.123 — IP-адрес, с которого был сделан запрос,
- [01/Janr/2021:10:00:00 +0300] — дата и время запроса,
- GET — метод запроса,
- /wp-includes/feed.php — объект запроса,
- HTTP/1.0 — протокол, по которому прошёл запрос,
- 200 — код ответа,
- Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 — информация о посетителе.
Также структура логов зависит от операционной системы сервера. Например, логи сервера Windows устроены в виде структурированной таблицы. Поэтому, чтобы научиться «читать» логи, нужна практика.
Если вы разобрались со структурой logs, можно приступать к их просмотру. Существует несколько способов, с помощью которых можно посмотреть журнал сайта. Выбор способа будет зависеть от типа платформы, на которой расположен ваш сайт — VPS-сервер или хостинг.
Как проверить логи сервера VPS
Чтобы посмотреть логи:
- 1.
-
2.
Введите команды cd logs и ls —all, чтобы посмотреть содержимое папки logs:
Логи сервера Linux
-
3.
Откройте нужный файл.
Готово.
Как проверить логи хостинга
Чтобы посмотреть содержимое журнала, нужно открыть папку и скачать нужный файл на локальный ПК. Это можно сделать одним из двух способов:
- в хостинг-панели управления, если вы являетесь клиентом REG.RU,
- через подключение по FTP.
В панели управления хостингом
- 1.
-
2.
Перейдите в Менеджер файлов, а затем в директорию logs:
-
3.
Выделите строку с названием нужного типа файла и нажмите Скачать:
Готово.
Обратите внимание: если вид вашей панели управления отличается от представленного в статье, в разделе «Основная информация» переключите тему с paper_lantern на jupiter.
- 1.
-
2.
В разделе «Файлы» нажмите Менеджер файлов:
-
3.
Кликните на папку logs:
-
4.
Выделите строку с названием нужного типа файла и нажмите Скачать:
Готово.
- 1.
-
2.
Перейдите во вкладку «Файлы», а затем в директорию logs:
-
3.
Выделите строку с названием нужного типа файла и нажмите Скачать:
Готово.
По FTP
Чтобы скачать логи:
- 1.
-
2.
Перейдите в директорию logs:
-
3.
Выделите строку с названием нужного типа файла и нажмите Просмотр/Правка:
Теперь вы знаете, что такое журнал сайта и где можно посмотреть логи сервера.
Блоги, форумы, посадочные страницы и другие интернет-ресурсы представляют собой совокупность графического, текстового, аудио- и видео-контента, размещенного на веб-страницах в виде кода. Чтобы обеспечить к ним доступ пользователей через интернет, файлы размещают на серверах. Это аппаратное обеспечение (персональный компьютер или рабочая станция), на жестком диске которого и хранится код. Ключевые функции выполняются без участия человека, что актуально для всех типов оборудования, включая виртуальный выделенный сервер. Но это не означает, что контроль не осуществляется. Большинство событий, которые происходят при участии оборудования, пользователей и софта, включая ошибки, логи сервера фиксируют и сохраняют. Из этой статьи вы узнаете, что они собой представляют, зачем нужны, и как их читать.
Что такое логи
Это текстовые файлы, которые хранятся на жестком диске сервера. Создаются и заполняются в автоматическом режиме, в хронологическом порядке. В них записываются:
- системная информация о переданных пользователю данных;
- сообщения о сбоях и ошибках;
- протоколирующие данные о посетителях платформы.
Посмотреть логи сервера может каждый, у кого есть к ним доступ, но непосвященному обывателю этот набор символов может показаться бессмысленным. Интерпретировать записи и получить пользу после прочтения проще профессионалу.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Классификация логов
Для каждой разновидности софта предусмотрены соответствующие файлы. Все логи сервера могут храниться на одном диске или даже на отдельном сервере. Существует довольно много разновидностей логов, вот наиболее распространенные:
- доступа (access_log) — записывают IP-адрес, время запроса, другую информацию о пользователях;
- ошибок (error_log) — показывают файлы, в которых выявлены ошибки и классифицируют сбои;
- FTP-авторизаций — отображают данные о попытках входа по FTP-соединению;
- загрузки системы — с его помощью выполняется отладка при появлении проблем, в файл записываются основные системные события, включая сбои;
- основной — содержит информацию о действиях с файерволом, DNS-сервером, ядром системы, FTP-сервисом;
- планировщика задач — в нем выполняется протоколирование задач, отображаются ошибки при запуске cron;
- баз данных — хранит подробности о запросах, сбоях, ошибки в логах сервера отображаются наравне с другой важной информацией;
- хостинговой панели — включает статистику использования ресурсов сервера, время и количество входов в панель, обновление лицензии;
- веб-сервера — содержит информацию о возникавших ошибках, обращениях;
- почтового сервера — в нем ведутся записи о входящих и исходящих сообщениях, отклонениях писем.
Записи в системные журналы выполняет установленный софт.
Зачем нужны логи
Анализ логов сервера — неотъемлемая часть работы системного администратора или веб-разработчика. Обрабатывая их, специалисты получают массу полезных сведений. Используются в следующих целях:
- поиск ошибок и сбоев в работе системы;
- выявление вредоносной активности;
- сбор статистики посещения веб-ресурса.
После изучения информации можно получить точную статистику в виде сводных цифр, информацию о юзерах, выявить поведенческие закономерности пользовательских групп.
Читайте также
Где посмотреть логи
Расположение определяется хостинг-провайдером или настройками установленного софта. На виртуальном хостинге доступ к лог-файлам предоставляется из панели управления хостингом. Если администратор не открыл его для владельца сайта, получить информацию не получится. Но большинство провайдеров разрешают свободно пользоваться журналами и проводить анализ логов сервера. Независимо от разновидности сервера лог-файлы хранятся в текстовом документе. По умолчанию он называется access.log, но настройки позволяют переименовать файл. Это актуально для Nginx, Apache, прокси-разновидностей squid, других типов. Для просмотра их надо скачать и открыть в текстовом редакторе. В качестве альтернативы можно использовать Grep и схожие утилиты. Они позволяют открыть и отфильтровать логи прямо на сервере.
Как читать логи. Пример
Существует довольно много форматов записи, combined — один из наиболее распространенных. В нем строчка кода может выглядеть так:
%h %l %u %t «%r» %>s %b «%{Referer}i» «%{User-Agent}i»
Директивы имеют следующее значение:
- %h — IP-адрес, с которого был сделан запрос;
- %l — длинное имя удаленного хоста;
- %u — удаленный пользователь, если запрос был сделан аутентифицированным юзером;
- %t — время запроса к серверу и его часовой пояс;
- %r — тип и содержимое запроса;
- %s — код состояния HTTP;
- %b — количество байт информации, отданных сервером;
- %{Referer} — URL-источник запроса;
- %{User-Agent} — HTTP-заголовок.
Еще один пример чтения логов можно посмотреть в статье «Как читать логи сервера».
Опытные веб-мастера для сбора и чтения лог-файлов используют программы-анализаторы. Они позволяют читать логи сервера без значительных временных затрат. Вот некоторые из наиболее востребованных:
- Analog. Один из самых популярных анализаторов, что во многом объясняется высокой скоростью обработки данных и экономным расходованием системных ресурсов. Хорошо справляется с объемными записями, совместим с любыми ОС.
- Weblog Expert. Программа доступна в трех вариациях: Lite (бесплатная версия), Professional и Standard (платные релизы). Версии отличаются функциональными возможностями, но каждая позволяет анализировать лог-файлы и создает отчеты в PDF и HTML.
- SpyLOG Flexolyzer. Простой аналитический инструмент, позволяющий получать отчеты с высокой степенью детализации. Интегрируется c системой статистики SpyLOG, позволяет решать задачи любой сложности.
Логи сервера с ошибками error.log
Это журнал с информацией об ошибках на сайте. В нем можно посмотреть, какие страницы отсутствуют, откуда пришел пользователь с конкретным запросом, имеются ли «битые» ссылки, другие недочеты, включая те, которые не удалось классифицировать. Используется для выявления багов и погрешностей в коде.
Каждая ошибка в логе сервера error.log отображается с новой строки. Идентифицировав и устранив ее, программист сможет наладить работу сайта. Используя журнал, можно выявить и слабые места веб-платформы. Это простой и удобный инструмент анализа, которым должен уметь пользоваться каждый веб-мастер, системный администратор и программист.
Для эффективного управления веб-сервером необходимо получить обратную связь об активности и производительности сервера, а также о всех проблемах, которые могли случиться. Apache HTTP Server обеспечивает очень полную и гибкую возможность ведения журнала. В этой статье мы разберём, как настроить логи Apache и как понимать, что они содержат.
HTTP-сервер Apache предоставляет множество различных механизмов для регистрации всего, что происходит на вашем сервере, от первоначального запроса до процесса сопоставления URL-адресов, до окончательного разрешения соединения, включая любые ошибки, которые могли возникнуть в процессе. В дополнение к этому сторонние модули могут предоставлять возможности ведения журналов или вставлять записи в существующие файлы журналов, а приложения, такие как программы CGI, сценарии PHP или другие обработчики, могут отправлять сообщения в журнал ошибок сервера.
В этой статье мы рассмотрим модули журналирования, которые являются стандартной частью http сервера.
Логи Apache в Windows
В Windows имеются особенности настройки имени файла журнала — точнее говоря, пути до файла журнала. Если имена файлов указываются с начальной буквы диска, например «C:/«, то сервер будет использовать явно указанный путь. Если имена файлов НЕ начинаются с буквы диска, то к указанному значению добавляется значение ServerRoot — то есть «logs/access.log» с ServerRoot установленной на «c:/Server/bin/Apache24″, будет интерпретироваться как «c:/Server/bin/Apache24/logs/access.log«, в то время как «c:/logs/access.log» будет интерпретироваться как «c:/logs/access.log«.
Также особенностью указания пути до логов в Windows является то, что нужно использовать слэши, а не обратные слэши, то есть «c:/apache» вместо «c:apache«. Если пропущена буква диска, то по умолчанию будет использоваться диск, на котором размещён httpd.exe. Рекомендуется явно указывать букву диска при абсолютных путях, чтобы избежать недоразумений.
Apache error: ошибки сервера и сайтов
Путь до файла журнала с ошибками указывается с помощью ErrorLog, например, для сохранения ошибок в папке «logs/error.log» относительно корневой папки веб-сервера:
ErrorLog "logs/error.log"
Если не указать директиву ErrorLog внутри контейнера <VirtualHost>, сообщения об ошибках, относящиеся к этому виртуальному хосту, будут записаны в этот общий файл. Если в контейнере <VirtualHost> вы указали путь до файла журнала с ошибками, то сообщения об ошибках этого хоста будут записываться там, а не в этот файл.
С помощью директивы LogLevel можно установить уровень важности сообщений, которые должны попадать в журнал ошибок. Доступные варианты:
- debug
- info
- notice
- warn
- error
- crit
- alert
- emerg
Журнал ошибок сервера, имя и местоположение которого задаётся директивой ErrorLog, является наиболее важным файлом журнала. Это место, куда Apache httpd будет отправлять диагностическую информацию и записывать любые ошибки, с которыми он сталкивается при обработке запросов. Это первое место, где нужно посмотреть, когда возникает проблема с запуском сервера или работой сервера, поскольку он часто содержит подробности о том, что пошло не так и как это исправить.
Журнал ошибок обычно записывается в файл (обычно это error_log в системах Unix и error.log в Windows и OS/2). В системах Unix также возможно, чтобы сервер отправлял ошибки в системный журнал или передавал их программе.
Формат журнала ошибок определяется директивой ErrorLogFormat, с помощью которой вы можете настроить, какие значения записываются в журнал. По умолчанию задан формат, если вы его не указали. Типичное сообщение журнала следующее:
[Fri Sep 09 10:42:29.902022 2011] [core:error] [pid 35708:tid 4328636416] [client 72.15.99.187] File does not exist: /usr/local/apache2/htdocs/favicon.ico
Первый элемент в записи журнала — это дата и время сообщения. Следующим является модуль, создающий сообщение (в данном случае ядро) и уровень серьёзности этого сообщения. За этим следует идентификатор процесса и, если необходимо, идентификатор потока процесса, в котором возникло условие. Далее у нас есть адрес клиента, который сделал запрос. И, наконец, подробное сообщение об ошибке, которое в этом случае указывает на запрос о несуществующем файле.
В журнале ошибок может появиться очень большое количество различных сообщений. Большинство выглядит похожим на пример выше. Журнал ошибок также будет содержать отладочную информацию из сценариев CGI. Любая информация, записанная в stderr (стандартный вывод ошибок) сценарием CGI, будет скопирована непосредственно в журнал ошибок.
Если поместить токен %L в журнал ошибок и журнал доступа, будет создан идентификатор записи журнала, с которым вы можете сопоставить запись в журнале ошибок с записью в журнале доступа. Если загружен mod_unique_id, его уникальный идентификатор запроса также будет использоваться в качестве идентификатора записи журнала.
Во время тестирования часто бывает полезно постоянно отслеживать журнал ошибок на наличие проблем. В системах Unix вы можете сделать это, используя:
tail -f error_log
Apache access: логи доступа к серверу
Журнал доступа к серверу записывает все запросы, обработанные сервером. Расположение и содержимое журнала доступа контролируются директивой CustomLog. Директива LogFormat может быть использована для упрощения выбора содержимого журналов. В этом разделе описывается, как настроить сервер для записи информации в журнал доступа.
Различные версии Apache httpd использовали разные модули и директивы для управления журналом доступа, включая mod_log_referer, mod_log_agent и директиву TransferLog. Директива CustomLog теперь включает в себя функциональность всех старых директив.
Формат журнала доступа легко настраивается. Формат указывается с использованием строки формата, которая очень похожа на строку формата printf в стиле C. Некоторые примеры представлены в следующих разделах. Полный список возможного содержимого строки формата смотрите здесь: https://httpd.apache.org/docs/current/mod/mod_log_config.html
Общий формат журнала (Common Log)
Типичная конфигурация для журнала доступа может выглядеть следующим образом.
LogFormat "%h %l %u %t "%r" %>s %b" common CustomLog logs/access_log common
В первой строке задано имя (псевдоним) common, которому присвоено в качестве значения строка «%h %l %u %t «%r» %>s %b«.
Строка формата состоит из директив, начинающихся с символа процента, каждая из которых указывает серверу регистрировать определённый фрагмент информации. Литеральные (буквальные) символы также могут быть помещены в строку формата и будут скопированы непосредственно в вывод журнала. Символ кавычки («) должен быть экранирован путём размещения обратной косой черты перед ним, чтобы он не интерпретировался как конец строки формата. Строка формата также может содержать специальные управляющие символы «n«для новой строки и «t» для обозначения таба (табуляции).
В данной строке значение директив следующее:
- %h — имя удалённого хоста. Будет записан IP адрес, если HostnameLookups установлен на Off, что является значением по умолчанию.
- %l — длинное имя удалённого хоста (от identd, если предоставит). Это вернёт прочерк если не присутствует mod_ident и IdentityCheck не установлен на On.
- %u — удалённый пользователь, если запрос был сделан аутентифицированным пользователем. Может быть фальшивым, если возвращён статус (%s) 401 (unauthorized).
- %t — время получения запроса в формате [18/Sep/2011:19:18:28 -0400]. Последнее показывает сдвиг временной зоны от GMT
- «%r» — первая строка запроса, помещённая в буквальные кавычки
- %>s — финальный статус. Если бы было обозначение %s, то означало бы просто статус — для запросов, которые были внутренне перенаправлены это обозначало бы исходный статус.
- %b — размер ответа в байтах, исключая HTTP заголовки. В формате CLF, то есть ‘—‘ вместо 0, когда байты не отправлены.
Директива CustomLog устанавливает новый файл журнала, используя определённый псевдоним. Имя файла для журнала доступа относительно ServerRoot, если оно не начинается с косой черты (буквы диска).
Приведённая выше конфигурация будет сохранять записи журнала в формате, известном как Common Log Format (CLF). Этот стандартный формат может создаваться многими различными веб-серверами и считываться многими программами анализа журналов. Записи файла журнала, созданные в CLF, будут выглядеть примерно так:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
Каждая часть этой записи журнала описана ниже.
127.0.0.1 (%h)
Это IP-адрес клиента (удалённого хоста), который сделал запрос к серверу. Если для HostnameLookups установлено значение On, сервер попытается определить имя хоста и зарегистрировать его вместо IP-адреса. Однако такая конфигурация не рекомендуется, поскольку она может значительно замедлить работу сервера. Вместо этого лучше всего использовать постпроцессор журнала, такой как logresolve, для определения имён хостов. Указанный здесь IP-адрес не обязательно является адресом машины, на которой сидит пользователь. Если между пользователем и сервером существует прокси-сервер, этот адрес будет адресом прокси, а не исходной машины.
— (%l)
«Дефис» в выходных данных указывает на то, что запрошенная часть информации недоступна. В этом случае информация, которая недоступна, является идентификационной информацией клиента RFC 1413, определённой с помощью id на клиентском компьютере. Эта информация крайне ненадёжна и почти никогда не должна использоваться, кроме как в жёстко контролируемых внутренних сетях. Apache httpd даже не будет пытаться определить эту информацию, если для IdentityCheck не установлено значение On.
frank (%u)
Это идентификатор пользователя, запрашивающего документ, как определено HTTP-аутентификацией. Такое же значение обычно предоставляется сценариям CGI в переменной среды REMOTE_USER. Если код состояния для запроса равен 401, то этому значению не следует доверять, поскольку пользователь ещё не аутентифицирован. Если документ не защищён паролем, эта часть будет «—«, как и предыдущая.
[10/Oct/2000:13:55:36 -0700] (%t)
Время получения запроса. Формат такой:
[день/месяц/год:час:минута:секунда зона]
день = 2*цифры
месяц = 3*цифры
год = 4*цифры
час = 2*цифры
минута = 2*цифры
секунда = 2*цифры
зона = (`+’ | `-‘) 4*цифры
Можно отобразить время в другом формате, указав %{format}t в строке формата журнала, где формат такой же, как в strftime(3) из стандартной библиотеки C, или один из поддерживаемых специальных токенов. Подробности смотрите в строках формате строки mod_log_config.
«GET /apache_pb.gif HTTP/1.0» («%r»)
Строка запроса от клиента указана в двойных кавычках. Строка запроса содержит много полезной информации. Во-первых, клиент использует метод GET. Во-вторых, клиент запросил ресурс /apache_pb.gif, и в-третьих, клиент использовал протокол HTTP/1.0. Также возможно зарегистрировать одну или несколько частей строки запроса независимо. Например, строка формата «%m %U%q %H» будет регистрировать метод, путь, строку запроса и протокол, что приведёт к тому же результату, что и «%r«.
200 (%>s)
Это код состояния, который сервер отправляет обратно клиенту. Эта информация очень ценна, потому что она показывает, привёл ли запрос к успешному ответу (коды начинаются с 2), к перенаправлению (коды начинаются с 3), к ошибке, вызванной клиентом (коды начинаются с 4), или к ошибкам в сервер (коды начинаются с 5). Полный список возможных кодов состояния можно найти в спецификации HTTP (RFC2616 раздел 10).
2326 (%b)
Последняя часть указывает размер объекта, возвращаемого клиенту, не включая заголовки ответа. Если контент не был возвращён клиенту, это значение будет «—«. Чтобы записать «0» без содержимого, вместо %b используйте %B.
Логи комбинированного формата (Combined Log)
Другая часто используемая строка формата называется Combined Log Format. Может использоваться следующим образом.
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" combined CustomLog log/access_log combined
Этот формат точно такой же, как Common Log Format, с добавлением ещё двух полей. Каждое из дополнительных полей использует директиву начинающуюся с символа процента %{заголовок}i, где заголовок может быть любым заголовком HTTP-запроса. Журнал доступа в этом формате будет выглядеть так:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
Дополнительными полями являются:
«http://www.example.com/start.html» («%{Referer}i»)
Referer — это часть заголовок HTTP-запроса, которая называется также Referer. В этой строке содержится информация о странице, с которой клиент был прислан на данный сайт. (Это должна быть страница, которая ссылается или включает /apache_pb.gif).
«Mozilla/4.08 [en] (Win98; I ;Nav)» («%{User-agent}i»)
Заголовок HTTP-запроса User-Agent. Это идентифицирующая информация, которую клиентский браузер сообщает о себе.
По умолчанию в главном конфигурационном файле Apache прописаны следующие настройки логов:
<IfModule log_config_module> LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined LogFormat "%h %l %u %t "%r" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio </IfModule> CustomLog "logs/access.log" common </IfModule>
Как можно увидеть, установлены три псевдонима: combined, common и combinedio. При этом по умолчанию используется common. При желании вы без труда сможете переключиться на combined или настроить формат строки лога под свой вкус.
Например, если вы предпочитаете, чтобы в файле лога доступа также присутствовала информация о пользовательском агенте и реферере, то есть Combined Logfile Format, то вы можете использовать следующую директиву:
CustomLog "logs/access.log" combined
Связанные статьи:
- Почему в логах ошибок Apache не сохраняются записи об ошибке 404 (100%)
- Как в Apache под Windows настроить автоматическую ротацию и очистку логов (100%)
- Удалённый просмотр и поиск по логам Apache в Windows (модуль mod_view) (100%)
- Apache для Windows (54.6%)
- Как запустить Apache на Windows (54.6%)
- Как сделать резервную копию баз данных MySQL (MariaDB) в Windows без phpMyAdmin (RANDOM — 50%)
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
или переопределить формат по умолчанию. Обычно лучше определить новый формат.
Хотя журнал доступа предоставляет очень полезную информацию, он занимает дисковое пространство и может повлиять на производительность сервера. Если на вашем сервере мало ресурсов и у вас загруженный веб-сайт, вы можете отключить журнал доступа.
Для этого просто закомментируйте или удалите директиву CustomLog
из разделов конфигурации основного сервера и виртуального сервера.
Если вы хотите отключить журнал доступа только для одного виртуального хоста, установите для первого аргумента директивы CustomLog
значение /dev/null
:
CustomLog /dev/null combined
Настройка журнала ошибок
Apache записывает сообщения об ошибках приложения и общих ошибках сервера в файл журнала ошибок. Если вы испытываете ошибки в своем веб-приложении, журнал ошибок — это первое место, с которого можно начать поиск и устранение неисправностей.
Директива ErrorLog
определяет расположение имени журнала ошибок. Он имеет следующий вид:
Если путь к log_file
не является абсолютным, он устанавливается относительно ServerRoot
. Сообщения об ошибках также могут быть переданы другой программе с помощью символа вертикальной черты |
.
Параметр LogLevel
устанавливает уровень ведения журнала. Ниже перечислены уровни в порядке их серьезности (от низкого до высокого):
trace1
—trace8
— сообщения трассировки.-
debug
—debug
сообщения. -
info
— Информационные сообщения. -
notice
— Уведомления. -
warn
— Предупреждения. -
error
— Ошибки при обработке запроса. -
crit
— Критические проблемы. Требуется быстрое действие. -
alert
— Оповещения. Действия должны быть предприняты немедленно. -
emerg
— Чрезвычайная ситуация. Система находится в непригодном для использования состоянии.
Каждый уровень журнала включает в себя более высокие уровни. Например, если вы установите уровень журнала , чтобы warn
, Apache также записывает error
, crit
, alert
и emerg
сообщения.
Если параметр LogLevel
не указан, по умолчанию используется warn
. Рекомендуется установить уровень как минимум crit
.
Директива ErrorLogFormat
определяет формат журнала ошибок. В большинстве дистрибутивов Linux сервер Apache использует формат по умолчанию, которого достаточно в большинстве случаев.
Виртуальные хосты и глобальное ведение журнала
Поведение журнала и расположение файлов можно установить глобально или для каждого виртуального хоста.
Затем в контексте основного сервера ErrorLog
директивы CustomLog
или ErrorLog
, сервер записывает все сообщения журнала в те же файлы журнала доступа и ошибок. В противном случае, если директивы помещаются в блок <VirtualHost>
, в указанный файл записываются только сообщения журнала для этого виртуального хоста.
Директива журнала, установленная в блоке <VirtualHost>
заменяет директиву, установленную в контексте сервера.
Виртуальные хосты без директив CustomLog
или ErrorLog
будут записывать свои сообщения журнала в глобальные журналы сервера.
Для лучшей читаемости рекомендуется установить отдельные файлы журнала доступа и ошибок для каждого виртуального хоста. Вот пример:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
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 имеет очень настраиваемую систему ведения журнала, которая позволяет настраивать журналы доступа и ошибок в соответствии с вашими потребностями.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Веб-серверы Apache могут генерировать много логов.
Эти логи содержат различную информацию, такую как HTTP-запросы, которые Apache обработал и ответил, и другие действия, специфичные для Apache.
Анализ журналов является важной частью администрирования Apache и обеспечения его правильной работы.
В этом руководстве мы рассмотрим различные параметры ведения журналов, представленные в Apache, и способы их интерпретации.
Вы узнаете, как анализировать логи, которые создает Apache, и как настроить параметры ведения журналов, чтобы предоставить вам наиболее релевантные данные о том, что делает Apache.
В этом руководстве вы узнаете как:
- Настроить и понять ведение журналов веб-сервера Apache
- Каковы уровни журнала Apache
- Как интерпретировать форматирование логов Apache и их значение
- Каковы наиболее распространенные файлы конфигурации логгирования Apache
- Как расширить конфигурацию логгирования, чтобы включить форензику
Содержание
- Логи Apache и их расположение
- Форматирование логов Apache
- Настройка логов Apache
- Директивы логов
- Модули логов Apache
- Заключение
Логи Apache и их расположение
Apache создает два разных файла журнала:
- access.log хранит информацию обо всех входящих запросах на подключение к Apache. Каждый раз, когда пользователь посещает ваш сайт, это будет зарегистрирован здесь. Каждая страница, которую запрашивает пользователь, также будет зарегистрирована как отдельная запись.
- error.log хранит информацию об ошибках, с которыми Apache сталкивается на протяжении всей своей работы. В идеале этот файл должен оставаться относительно пустым.
Расположение файлов журналов может зависеть от того, какую версию Apache вы используете и какой дистрибутив Linux вы используете.
Apache также может быть настроен для хранения этих файлов в другом месте, отличном от заданного по умолчанию.
Но по умолчанию вы сможете найти журналы доступа и ошибок в одном из следующих каталогов:
- /var/log/apache/
- /var/log/apache2/
- /etc/httpd/logs/
Форматирование логов Apache
Apache позволяет вам настраивать, какая информация регистрируется и как представляется каждая запись в журнале, что мы рассмотрим позже в этом руководстве.
Обычный формат, которым следует Apache для представления записей журнала:
"%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i""
Вот как можно интерпретировать это форматирование:
- %h –IP-адрес клиента.
- %l –Это «идентификатор» на клиенте, который используется для идентификации. Это поле обычно пустое и представляется как дефис.
- %u – Идентификатор пользователя клиента, если использовалась HTTP-аутентификация. Если нет, в записи журнала ничего для этого поля не будет отображаться.
- %t –Отметка времени записи в журнале.
- %r –Строка запроса от клиента. Этот параметр покажет, какой метод HTTP был использован (например, GET или POST), какой файл был запрошен и какой протокол HTTP был использован.
- %>s –Код состояния, который был возвращен клиенту. Коды 4xx (например, 404, страница не найдена) указывают на ошибки клиента, а коды 5xx (например, 500, внутренняя ошибка сервера) указывают на ошибки сервера. Другие числа должны указывать успешную работу (например, 200, ОК) или что-то еще, например, перенаправление (например, 301).
- %O –Размер файла (включая заголовки) в байтах, который был запрошен.
- ”%{Referer}i”– Ссылка на ссылку. Параметр говорит о том, как пользователь перешел на вашу страницу (по внутренней или внешней ссылке).
- ”%{User-Agent}i” – Содержит информацию о подключающемся веб-браузере клиента и операционной системе.
Типичная запись в журнале access.log будет выглядеть примерно так:
10.10.220.3 - - [17/Dec/2019:23:05:32 -0500] "GET /products/index.php HTTP/1.1" 200 5015 "http://example.com/products/index.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
Журнал ошибок ( error.log )немного более прост и легко интерпретируется.
Вот как может выглядеть типичная запись:
[Mon Dec 16 06:29:16.613789 2019] [php7:error] [pid 2095] [client 10.10.244.61:24145] script '/var/www/html/settings.php' not found or unable to stat
Это хороший способ узнать, сколько ошибок 404 встречают ваши посетители, и может помочь вам найти некоторые неработающие ссылки на вашем сайте.
Что еще более важно, эти логи могут предупредить вас о пропавших ресурсах или потенциальных проблемах с сервером.
В приведенном выше примере показана страница * .php, которая была запрошена, но отсутствует на сервере.
Настройка логов Apache
Ведение логов в Apache очень настраиваемо и может быть изменено с помощью пары файлов конфигурации.
В Ubuntu и Debian основной файл конфигурации для ведения журнала Apache находится здесь:
- /etc/apache2/apache2.conf
Поскольку вы можете запускать несколько веб-сайтов (называемых виртуальными хостами) из одного экземпляра Apache, вы также можете настроить каждый из них для отдельного ведения и журналов доступа и ошибок.
Чтобы определить, как должны называться эти отдельные файлы журналов и где их сохранять, настройте этот файл:
- /etc/apache2/sites-available/000-default.conf
На CentOS, RHEL и Fedora два файла конфигурации находятся, соответственно, в следующих местах:
- /etc/httpd/conf/httpd.conf
- /etc/httpd/conf.d/ (поместите дополнительные конфигурации VirtualHost в этот каталог)
Директивы логов
Существует несколько различных директив, которые можно настроить внутри этих файлов, но это основные из них, о которых вам следует позаботиться, если вы хотите настроить логи Apache:
- CustomLog – определяет, где хранится файл журнала доступа.
- ErrorLog – определяет, где хранится файл журнала ошибок.
- LogLevel – Определяет, насколько серьезным должно быть событие, чтобы его можно было зарегистрировать (подробнее см. Ниже).
- LogFormat – Определяет, как должна быть отформатирована каждая запись в журнале доступа (подробнее см. Ниже).
LogLevel по умолчанию настроен на warn, что означает, что он будет записывать в журнал error.log предупреждения или более серьезные события.
Если ваш журнал ошибок заполняется множеством безобидных предупреждающих сообщений, вы можете увеличить его до error
, и система будет сообщать только об ошибках или более серьезных проблемах.
Другие варианты включают (в порядке серьезности)crit
, alert
, и emerg
.
Apache рекомендует использовать уровень как минимум crit.
В целях отладки вы можете временно настроить LogLevel на debug, но имейте в виду, что вы можете получить громоздкое количество записей в журнале ошибок (error.log).
LogFormat позволяет вам настроить внешний вид записей в журнале доступа ( acces.log ).
Если вы считаете, что пример записи в access.log (из приведенного выше примера логов Apache) немного сбивает с толку, вы не одиноки в этом мнении.
Apache позволяет вам настроить формат записей журнала, дабы вы могли настроить их более логичным способом.
Вы также можете использовать эту настройку, чтобы исключить определенную информацию, которая может оказаться неактуальной.
Модули логов Apache
Настройка логов, которую мы пока показываем в этом руководстве, относится к модулю Apache mod_log_config.
Чтобы расширить функциональность логов, вы можете загрузить другие модули Apache.
Они могут предоставить вам некоторые дополнительные возможности, которые недоступны с настройками по умолчанию.
mod_log_forensic начинает запись перед запросом (когда заголовки получены впервые) и снова регистрируется после запроса.
Это означает, что для каждого запроса создаются две записи журнала, что позволяет администратору более точно измерять время ответа.
Определите местоположение вашего журнала форензики с помощью директивы CustomLog.
Например:
CustomLog ${APACHE_LOG_DIR}/forensic.log forensic
mod_logio записывает количество байтов, отправленных и полученных от каждого запроса.
Он предоставляет очень точную информацию, поскольку он также учитывает данные, присутствующие в заголовке и теле каждого запроса, а также дополнительные данные, которые требуются для зашифрованных соединений SSL / TLS.
Добавьте %I
и O%
% к директиве LogFormat, чтобы использовать дополнительные данные, предоставленные этим модулем.
Так же есть и другие модули; это лишь два из самых полезных.
Заключение
В этой статье мы увидели, как анализировать и интерпретировать acces.log и error.log Apache.
Мы также узнали, как настроить ведение журнала в файлах конфигурации Apache, чтобы сделать данные журнала более актуальными.
Вооружившись этими знаниями, вы сможете быстрее выявлять проблемы и решать их.
Помните, что функциональность логов в Apache может быть расширена с помощью других модулей, хотя это необходимо только в крайних случаях, которые требуют расширенной отладки.
Веб-серверы Apache могут создавать множество журналов. Эти журналы содержат такую информацию, как HTTP-запросы, которые Apache обработал и на которые ответил, а также другие действия, специфичные для Apache. Анализ журналов — важная часть администрирования Apache и обеспечения его правильной работы.
В этом руководстве мы рассмотрим различные варианты ведения журнала, имеющиеся в Apache, и то, как интерпретировать эти данные журнала. Вы узнаете, как анализировать журналы, которые создает Apache, и как настраивать параметры ведения журналов, чтобы получать наиболее актуальные данные о том, что делает Apache.
В этом уроке вы узнаете:
- Настроить и понять ведение журнала веб-сервера Apache
- Что такое уровни журнала Apache
- Как интерпретировать форматирование журнала Apache и его значение
- Каковы наиболее распространенные файлы конфигурации журнала Apache
- Как расширить конфигурацию ведения журнала для включения данных судебной экспертизы
Как анализировать и интерпретировать журнал веб-сервера Apache
Требования к программному обеспечению и используемые условные обозначения
Требования к программному обеспечению и условные обозначения командной строки Linux
Категория | Требования, условные обозначения или используемая версия программного обеспечения |
---|---|
Система | Ubuntu, Debian, CentOS, RHEL, Fedora |
Программного обеспечения | Веб-сервер Apache |
Другой | Привилегированный доступ к вашей системе Linux с правами root или через судо команда. |
Условные обозначения |
# — требует данных команды linux для выполнения с привилегиями root либо непосредственно как пользователь root, либо с использованием судо команда$ — требует данных команды linux для выполнения от имени обычного непривилегированного пользователя. |
Файлы журнала Apache и их расположение
Apache создает два разных файла журнала:
- access.log хранит информацию обо всех входящих запросах на подключение к Apache. Каждый раз, когда пользователь посещает ваш сайт, он регистрируется здесь. Каждая страница, которую запрашивает пользователь, также будет регистрироваться как отдельная запись.
- журнал ошибок хранит информацию об ошибках, с которыми Apache сталкивается в процессе своей работы. В идеале этот файл должен оставаться относительно пустым.
Конфигурация журнала Apache по умолчанию на сервере Ubuntu Linux
Расположение файлов журнала может зависеть от того, какая версия Apache у вас запущена и на каком дистрибутиве Linux он установлен. Apache также можно настроить для хранения этих файлов в другом месте, отличном от места по умолчанию.
Но по умолчанию вы сможете найти журналы доступа и ошибок в одном из этих каталогов:
- /var/log/apache/
- /var/log/apache2/
- /etc/httpd/logs/
Форматирование журнала Apache
Apache позволяет вам настроить, какая информация будет регистрироваться и как представлена каждая запись в журнале, о чем мы расскажем позже в этом руководстве.
Обычно Apache представляет записи журнала в следующем формате:
"% h% l% u% t "% r "%> s% O "% {Referer} i ""% {User-Agent} i ""
Вот как интерпретировать это форматирование:
- %час — IP-адрес клиента.
- % l — Это «идентификатор» на клиенте, который используется для его идентификации. Это поле обычно пустое и отображается в виде дефиса.
- % u — ID пользователя клиента, если использовалась HTTP-аутентификация. В противном случае в журнале ничего не будет отображаться для этого поля.
- % t — Отметка времени записи в журнале.
- %р — Строка запроса от клиента. Это покажет, какой метод HTTP использовался (например, GET или POST), какой файл был запрошен и какой протокол HTTP использовался.
- %> s — Код статуса, возвращенный клиенту. Коды 4xx (например, 404, страница не найдена) указывают на ошибки клиента, а коды 5xx (например, 500, внутренняя ошибка сервера) указывают на ошибки сервера. Другие числа должны указывать на успех (например, 200, ОК) или что-то еще, например, перенаправление (например, 301, окончательно перемещено).
- % O — Размер запрошенного файла (включая заголовки) в байтах.
- ”% {Referer} i ” — Ссылающая ссылка, если применимо. Это сообщает вам, как пользователь перешел на вашу страницу (по внутренней или внешней ссылке).
- ”% {User-Agent} i ” — Здесь содержится информация о веб-браузере и операционной системе подключающегося клиента.
Типичная запись в журнале доступа будет выглядеть примерно так:
10.10.220.3 - - [17 / Dec / 2019: 23: 05: 32 -0500] "GET /products/index.php HTTP / 1.1" 200 5015 " http://example.com/products/index.php" «Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, например Gecko) Chrome / 79.0.3945.79 Safari / 537.36 "
Журнал ошибок немного проще и понятнее. Вот как может выглядеть типичная запись:
[Пн, 16 декабря, 06:29: 16.613789 2019] [php7: error] [pid 2095] [client 10.10.244.61:24145] сценарий '/var/www/html/settings.php' не найден или не может выполнить статистику.
Это хороший способ узнать, сколько 404
ошибки, с которыми сталкиваются ваши посетители, и могут указать вам на неработающие ссылки на вашем сайте. Что еще более важно, он может предупредить вас об отсутствующих ресурсах или потенциальных проблемах с сервером. В приведенном выше примере показан * .php
страница, которая была запрошена, но отсутствует.
Конфигурация журнала Apache
Ведение журнала Apache легко настраивается и может быть изменено с помощью пары файлов конфигурации. В Ubuntu и Debian основной файл конфигурации для ведения журнала Apache находится здесь:
- /etc/apache2/apache2.conf
Поскольку вы можете запускать несколько веб-сайтов (называемых Виртуальные хосты
) из одного экземпляра Apache, вы также можете настроить для каждого из них отдельные журналы доступа и журналы ошибок. Чтобы определить, как должны называться эти отдельные файлы журнала и где их сохранять, настройте этот файл:
- /etc/apache2/sites-available/000-default.conf
В CentOS, RHEL и Fedora два файла конфигурации находятся, соответственно, в следующих местах:
- /etc/httpd/conf/httpd.conf
- /etc/httpd/conf.d/ (поместите в этот каталог дополнительные конфигурации VirtualHost)
Директивы журнала
Внутри этих файлов можно настроить довольно много разных директив, но это основные из них, о которых вам следует позаботиться, если вы хотите настроить ведение журнала Apache:
- CustomLog — Определяет, где хранится файл журнала доступа.
- Журнал ошибок — Определяет, где хранится файл журнала ошибок.
- LogLevel — Определяет, насколько серьезным должно быть событие, чтобы его можно было зарегистрировать (подробнее см. Ниже).
- LogFormat — Определите, как должна быть отформатирована каждая запись в журнале доступа (дополнительную информацию см. Ниже).
LogLevel установлен на предупреждать
по умолчанию, что означает, что он будет записывать в журнал ошибок при возникновении предупреждений или более серьезных событий. Если ваш журнал ошибок заполняется множеством безобидных предупреждающих сообщений, вы можете увеличить его до ошибка
который будет сообщать только об ошибках или более серьезных проблемах.
Другие варианты включают (в порядке серьезности) крит
, тревога
, и возникать
. Apache рекомендует использовать уровень не ниже критического. В целях отладки вы можете временно установить LogLevel к отлаживать
, но имейте в виду, что вы можете получить огромное количество записей в журнале ошибок.
LogFormat позволяет настроить внешний вид записей в журнале доступа. Если вы найдете пример записи в access.log
(из Форматирование журнала Apache раздел выше), чтобы немного сбить с толку, вы не одиноки. Apache позволяет настраивать формат записей журнала, чтобы вы могли настроить их более логичным образом. Вы также можете использовать эту настройку, чтобы исключить определенную информацию, которая может оказаться неактуальной.
Модули ведения журнала Apache
Конфигурация ведения журнала, которую мы показывали в этом руководстве, относится к mod_log_config
Модуль Apache. Чтобы еще больше расширить функциональность ведения журнала, вы можете загрузить в Apache другие модули ведения журнала. Это может предоставить некоторые дополнительные возможности, которые недоступны при настройках по умолчанию.
mod_log_forensic начинает запись в журнал перед запросом (при первом получении заголовков) и снова в журнал после запроса. Это означает, что для каждого запроса создаются две записи в журнале, что позволяет администратору более точно измерять время ответа.
Определите расположение журнала судебной экспертизы с помощью CustomLog
директива. Например:
CustomLog $ {APACHE_LOG_DIR} /forensic.log судебная экспертиза
mod_logio регистрирует количество байтов, отправленных и полученных от каждого запроса. Он предоставляет очень точную информацию, потому что он также считает данные, присутствующие в заголовке и теле каждого запроса, а также дополнительные данные, необходимые для соединений с шифрованием SSL / TLS.
Добавить %Я
и O%
заполнители для LogFormat
директива, чтобы использовать дополнительные данные, предоставляемые этим модулем.
Существуют другие модули; это лишь два из самых полезных.
Вывод
В этой статье мы увидели, как анализировать и интерпретировать журналы доступа и ошибок Apache. Мы также узнали, как настроить ведение журнала в файлах конфигурации Apache, чтобы сделать данные журнала более актуальными. Вооружившись этими знаниями, вы сможете быстрее выявлять проблемы и устранять проблемы с Apache.
Помните, что функциональность ведения журнала Apache может быть расширена с помощью других модулей ведения журнала, хотя это необходимо только в крайних случаях, требующих расширенной отладки.
Подпишитесь на новостную рассылку Linux Career Newsletter, чтобы получать последние новости, вакансии, советы по карьере и рекомендуемые руководства по настройке.
LinuxConfig ищет технических писателей, специализирующихся на технологиях GNU / Linux и FLOSS. В ваших статьях будут представлены различные руководства по настройке GNU / Linux и технологии FLOSS, используемые в сочетании с операционной системой GNU / Linux.
Ожидается, что при написании статей вы сможете идти в ногу с технологическим прогрессом в вышеупомянутой технической области. Вы будете работать независимо и сможете выпускать не менее 2 технических статей в месяц.
Содержание:
- Важные логи сайта
- Расположение логов
- Чтение записей в логах
- Просмотр с помощью команды tail
- Просмотр с помощью ISPManager
- Программы для анализа логов
- Ведение логов медленных запросов сервера
- Ведение логов с помощью Logrotate
Логи сайта — это системные журналы, позволяющие получить информацию о посещении сайта ботами и пользователями, а также выявить скрытые проблемы на сервере — ошибки, битые ссылки, медленные запросы от сервера и многое другое.
Важные логи сайта
- Access.log — логи посещений пользователей и ботов. Позволяет составить более точную и подробную статистику, нежели сторонние ресурсы, выполняющие внешнее сканирование сайта и отправляющие ряд ненужных запросов серверу. Благодаря данному логу можно получить информацию об используемом браузере и IP-адрес посетителя, данные о местонахождении клиента (страна и город) и многое другое. Стоит обратить внимание, если сайт имеет высокую посещаемость, то анализ логов сервера потребует больше времени. Поэтому для составления статистики стоит использовать специализированные программы (анализаторы).
- Error.log — программные ошибки сервера. Стоит внимательно отнестись к анализу данного лога, ведь боты поисковиков, сканируя, получают все данные о работе сайта. При обнаружении большого количества ошибок, сайт может попасть под санкции поисковых систем. В свою очередь из записей данного журнала можно узнать точную дату и время ошибки, IP-адрес получателя, тип и описание ошибки.
- Slow.log (название зависит от используемой оболочки сервера) — в данный журнал записываются медленные запросы сервера. Так принято обозначать запросы с повышенным порогом задержки, выданные пользователю. Этот журнал позволяет выявить слабые места сервера и исправить проблему. Ниже будет рассмотрен способ включить ведение данного лога на разных типах серверов, а также настройка задержки, с которой записи будут заноситься в файл.
Расположение логов
Важно обратить внимание, что местоположение логов сайта по умолчанию зависит от используемого типа оболочки и может быть изменено администратором.
Стандартные пути до Error.log
Nginx
/var/log/nginx/error.log
Php-Fpm
/var/log/php-fpm/error.log
Apache (CentOS)
/var/log/httpd/error_log
Apache (Ubuntu, Debian)
/var/log/apache2/error_log
Стандартные пути до Access.log
Nginx
/var/log/nginx/access.log
Php-Fpm
/var/log/php-fpm/access.log
Apache (CentOS)
/var/log/httpd/access_log
Apache (Ubuntu, Debian)
/var/log/apache2/access_log
Чтение записей в логах
Записи в логах имеют структуру: одно событие – одна строка.
Записи в разных логах имеют общие черты, но количество подробностей отличается. Далее будут приведены примеры строк из разных системных журналов.
Примеры записей
Error.log
[Sat Sep 1 15:33:40.719615 2019] [:error] [pid 10706] [client 66.249.66.61:60699] PHP Notice: Undefined variable: moduleclass_sfx in /var/data/www/site.ru/modules/contacts/default.php on line 14
В приведенном примере:
- [Sat Sep 1 15:33:40.719615 2019] — дата и время события.
- [:error] [pid 10706] — ошибка и её тип.
- [client 66.249.66.61:60699] — IP-адрес подключившегося клиента.
- PHP Notice: Undefined variable: moduleclass_sfx in — событие PHP Notice. В данной ситуации — обнаружена неизвестная переменная.
- /var/data/www/site.ru/modules/contacts/default.php on line 14 — путь и номер строки в проблемном файле.
Access.log
194.61.0.6 – alex [10/Oct/2019:15:32:22 -0700] "GET /apache_pb.gif HTTP/1.0" 200 5396 "http://www.mysite/myserver.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
В приведенном примере:
- 194.61.0.6 — IP-адрес пользователя.
- alex — если пользователь зарегистрирован в системе, то в логах будет указан идентификатор.
- [10/Oct/2019:15:32:22 -0700]— дата и время записи.
- «GET /apache_pb.gif HTTP/1.0» — «GET» означает, что определённый документ со страницы сайта был отправлен пользователю. Существует команда «POST», наоборот отправляет конкретные данные (комментарий или любое другое сообщение) на сервер . Далее указан извлечённый документ «Apache_pb.gif», а также использованный протокол «HTTP/1.0».
- 200 5396 — код и количество байтов документа, которые были возвращены сервером.
- «http://www. www.mysite/myserver.html»— страница, с которой был произведён запрос на извлечение документа «Apache_pb.gif».
- «Mozilla/4.08 [en] (Win98; I ;Nav)» — данные о пользователе, которой произвёл запрос (используемый браузер и операционная система).
Просмотр логов сервера с помощью команды tail
Выполнить просмотр логов в Linux можно с помощью команды tail. Данный инструмент позволяет смотреть записи в логах, выводя последние строки из файла. По умолчанию tail выводит 10 строк.
Первый вариант использования Tail
tail -f /var/log/syslog
Аргумент «-f» позволяет команде делать просмотр событий в режиме реального времени, в ожидании новых записей в лог файлах. Для прерывания процесса следует нажать сочетание клавиш «Ctrl+C».
На место переменной «/var/log/syslog» в примере следует подставить актуальный адрес до нужных системных журналов.
Второй вариант использования Tail
tail -F /var/log/syslog
В Linux логи веб-сервера не ведутся до бесконечности, поскольку это усложняет их дальнейший анализ. При преодолении лимита записей, система переименует переполненный строками файл журнала и отправит в «архив». Вместо старого файла создастся новый, но с прежним названием.
Если будет использоваться аргумент «-f», команда продолжит отслеживание старого, переименованного журнала. Данный метод делает невозможным просмотр логов в реальном времени, поскольку файл более не актуален.
При использовании аргумента «-F», команда, после окончания записи старого журнала, перейдёт к чтению нового файла с логами. В таком случае просмотр логов в режиме реального времени продолжится.
Аналог команды Tail
tailf /var/log/syslog
Отличие команды tailf от предыдущей заключается в том, что она не обращается к файлу и файловой системе в период, когда запись логов не происходит. Это экономит ресурсы системы и заряд, если используется нестационарное устройство — ноутбук, смартфон или планшет.
Недостаток данного способа — проблема с чтением больших файлов. Если системный журнал достаточно большой, возникает вероятность отказа в работе программы.
Изменение стандартного количества строк для вывода
Как и отмечалось выше, по умолчанию выводится 10 строк. Если требуется увеличить или уменьшить их количество, в команду добавляется аргумент «-n» и необходимое число строк.
Пример:
tail -f -n 100 /var/log/syslog
При использовании данной команды будут показаны последние 100 строк журнала.
Просмотр логов с помощью ISPManager
Если на сервере установлен ISPManager, логи можно легко читать, используя приведенный ниже алгоритм.
- На главной странице, в панели инструментов «WWW» нужно нажать на вкладку «Журналы».
- ISPManager выдаст журналы посещений и серверных ошибок в виде:
- ru.access.log;
- ru.error.log.*
* Вместо «newdomen.ru» из примера в выдаче будет название актуального домена.
Открыть файл лога можно, нажав на «Посмотреть» в верхнем меню.
- Для просмотра всех записей журнала, необходимо нажать на «Скачать» и сохранить файл на локальный носитель.
- Более старые версии логов можно найти во вкладке «Архив».
Программы для анализа логов
Анализировать журналы с большим количеством данных вручную не только сложно, но и чревато ошибками. Для упрощения работы с лог файлами было создано большое количество сервисов и утилит.
Инструменты для анализа логов делятся на два основных типа — статические и работающие в режиме реального времени.
Статические программы
Данный тип выполняет работу только с извлеченными логами, но обеспечивает быструю сортировку данных.
WebLog Expert
Возможности
- Предоставление информации об активность сайта, количестве посетителей, доступ к файлам, URL страницы, ссылающиеся страницы, информацию о пользователе (браузер и операционная система).
- Создание отчётов в формате HTML (.html), PDF (.pdf), CSV (.csv).
- Поддерживает анализ логов Nginx, Apache, ISS.
- Чтение файлов даже в архивах ZIP (.zip), GZ (.gz).
Web Log Explorer
Возможности
- Создание многоуровневых отчётов, включающих количество посетителей, маршруты пользователей по сайту, местоположение хостов (страна и город), указанные в поисковике ключевые слова.
- Поддержка более 43 форматов логов.
- Возможность прямой загрузки логов с FTP, HTTP сервера.
- Чтение архивированных журналов.
Программы для анализа в режиме реального времени
Эти инструменты встраиваются в программную среду сервера, анализируют данные в реальном времени и записывают непрерывный отчёт.
GoAccess
Возможности
- Автоматическая генерация отчёта в формате HTML (.html), JSON (.json), CSV (.csv).
- При подключении к серверу через SSH, возможен анализ в браузере и в терминале
- Поддержка почти всех форматов (Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront и др.).
Logstash
Возможности
- Постоянная генерация отчёта в файл JSON (.json).
- Получение и анализ информации из нескольких источников.
- Возможность пересылать журналы с помощью Filebeat.
- Поддержка анализа системных журналов.
- Поддерживается большое количество форматов: от Apache до Log4j (Java).
Ведения логов медленных запросов сервера
Анализ данного лога позволяет определить на какие типы запросов сервер отвечает долго. В идеале задержка должна составлять не более 1 секунды.
На некоторых типах оболочек (MySQL, PHP-FPM) ведение данного лога по умолчанию отключено. Процесс запуска и ведения зависит от сервера.
MySQL
Если сервер управляется с помощью MySQL, то необходимо создать каталог и сам файл для ведения журнала с помощью команд:
mkdir /var/log/mysql
touch /var/log/mysql/mysql-slow.log
Стоит изменить владельца файла, чтобы избежать дальнейших проблем с записью логов. Делается это командой:
chown mysql:mysql /var/log/mysql/mysql-slow.log
После выполнения предыдущих действий, нужно совершить вход в командную строку MySQL под учётной записью суперпользователя:
mysql -uroot -p
Для запуска и настройки ведения логов нужно последовательно ввести в терминале следующие команды:
> SET GLOBAL slow_query_log = 'ON'; > SET GLOBAL slow_launch_time = 2; > SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log'; > FLUSH LOGS;
В примере:
- slow_query_log — запускает ведение журналов медленных запросов.
- slow_launch_time — указывает максимальную задержку отклика, после которой статистика запроса попадёт в журнал. В данном случае запись в логи происходит при преодолении откликом порога 2 секунды.
- slow_query_log_file — задаёт путь до используемого журнала.
Проверить статус и параметры ведения лога медленных запросов можно командой:
> SHOW VARIABLES LIKE '%slow%';
Выход из консоли MySQL выполняется командой:
> exit
После выполнения всех предыдущих действий, можно просмотреть логи сервера. Для этого в терминале вводится:
tail -f /var/log/mysql/mysql-slow.log
PHP-FPM
Для ведения журнала на данной оболочке, необходимо отредактировать параметры в конфигурационном файле. Для этого в терминале вводится команда:
vi /etc/php-fpm.d/www.conf
Далее нужно найти строки:
- request_slowlog_timeout = 10s — параметр, позволяющий указать задержку, с которой запись о длительном запросе попадёт в журнал.
- slowlog = /var/log/php-fpm/www-slow.log — параметр, указывающий путь до актуального файла логирования (.log).
После применения изменений, необходимо перезагрузить сервер PHP-FPM. Для этого в консоль вводится команда:
systemctl restart php-fpm
Просмотр логов запускается командой:
tail -f /var/log/php-fpm/www-slow.log
Анализ логов медленных запросов
Логи медленных запросов могут за незначительное время вырасти до огромных размеров. Для сортировки и отображения повторяющихся запросов рекомендуется использовать программу MySQLDumpSlow.
Для запуска просмотра логов с помощью этой утилиты, нужно составить команду по приведенному ниже алгоритму:
mysqldumpslow местонахождение/файла
Ведение логов в Logrotate
На больших ресурсах журналы могут достигать огромных размеров, поэтому нужно своевременно архивировать или очищать логи. С помощью утилиты Logrotate можно управлять ведением журналов: настроить период ротации (архивирование старого журнала и создание нового), период и количество хранения журналов и многое другое.
Изначально программа отсутствует в системе. Ниже приведены команды для инсталляции Logrotate из официальных репозиториев.
Ubuntu, Debian:
sudo apt install logrotate
CentOS:
sudo yum install logrotate
После установки необходимо проверить путь для будущих конфигурационных файлов. Для правильной работы они должны находится в папке «logrotate.d». Проверить данный параметр можно открыв конфигурационный файл командой:
nano /etc/logrotate.conf
В директории «RPM packages drop log rotation information into this directory» должна присутствовать строка:
include /etc/logrotate.d
Теперь создаётся конфигурационный файл «rsyslog.conf». В нём будет находиться конфигурацию по работе с логами. Для создания файла в терминале вводится команда:
sudo nano /etc/logrotate.d/rsyslog.conf
В окне терминала откроется текстовой редактор. Теперь нужно внести конфигурацию, как указано в образце. В качестве примера будет использоваться журнал посещений «Access.log» (Nginx).
/var/log/nginx/access.log { daily rotate 3 size 500M compress delaycompress }
Теперь остаётся только запустить Logrotate. Для этого вводится команда:
sudo logrotate -d /etc/logrotate.d/rsyslog.conf
Для проверки правильности работы программы в терминале можно ввести команду:
ls /var/cron.daily/