- Просмотр и анализ логов сайта на Linux сервере
- Сейчас читают:
- Важные логи сайта
- Расположение логов
- Стандартные пути до Error.log
- Nginx
- Php-Fpm
- Apache (CentOS)
- Apache (Ubuntu, Debian)
- Стандартные пути до Access.log
- Nginx
- Php-Fpm
- Apache (CentOS)
- Apache (Ubuntu, Debian)
- Чтение записей в логах
- Примеры записей
- Error.log
- Access.log
- Просмотр логов сервера с помощью команды tail
- Первый вариант использования Tail
- Второй вариант использования Tail
- Аналог команды Tail
- Изменение стандартного количества строк для вывода
- Просмотр логов с помощью ISPManager
- Программы для анализа логов
- Статические программы
- WebLog Expert
- Web Log Explorer
- Программы для анализа в режиме реального времени
- GoAccess
- Logstash
- Ведения логов медленных запросов сервера
- MySQL
- PHP-FPM
- Анализ логов медленных запросов
- Ведение логов в Logrotate
- Логи сервера: что это, зачем нужны, как включить, посмотреть, проанализировать
- Зачем нужны логи?
- Как включить журнал записей?
- Как посмотреть логи сервера?
- Анализ логов сервера
- Лог ошибок error.log
- Заключение
Просмотр и анализ логов сайта на Linux сервере
Сейчас читают:
Содержание:
Логи сайта — это системные журналы, позволяющие получить информацию о посещении сайта ботами и пользователями, а также выявить скрытые проблемы на сервере — ошибки, битые ссылки, медленные запросы от сервера и многое другое.
Важные логи сайта
- Access.log — логи посещений пользователей и ботов. Позволяет составить более точную и подробную статистику, нежели сторонние ресурсы, выполняющие внешнее сканирование сайта и отправляющие ряд ненужных запросов серверу. Благодаря данному логу можно получить информацию об используемом браузере и IP-адрес посетителя, данные о местонахождении клиента (страна и город) и многое другое. Стоит обратить внимание, если сайт имеет высокую посещаемость, то анализ логов сервера потребует больше времени. Поэтому для составления статистики стоит использовать специализированные программы (анализаторы).
- Error.log — программные ошибки сервера. Стоит внимательно отнестись к анализу данного лога, ведь боты поисковиков, сканируя, получают все данные о работе сайта. При обнаружении большого количества ошибок, сайт может попасть под санкции поисковых систем. В свою очередь из записей данного журнала можно узнать точную дату и время ошибки, IP-адрес получателя, тип и описание ошибки.
- Slow.log (название зависит от используемой оболочки сервера) — в данный журнал записываются медленные запросы сервера. Так принято обозначать запросы с повышенным порогом задержки, выданные пользователю. Этот журнал позволяет выявить слабые места сервера и исправить проблему. Ниже будет рассмотрен способ включить ведение данного лога на разных типах серверов, а также настройка задержки, с которой записи будут заноситься в файл.
Расположение логов
Важно обратить внимание, что местоположение логов сайта по умолчанию зависит от используемого типа оболочки и может быть изменено администратором.
Стандартные пути до Error.log
Nginx
Php-Fpm
Apache (CentOS)
Apache (Ubuntu, Debian)
Стандартные пути до Access.log
Nginx
Php-Fpm
Apache (CentOS)
Apache (Ubuntu, Debian)
Чтение записей в логах
Записи в логах имеют структуру: одно событие – одна строка .
Записи в разных логах имеют общие черты, но количество подробностей отличается. Далее будут приведены примеры строк из разных системных журналов.
Примеры записей
Error.log
В приведенном примере:
- [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 — 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
Аргумент «-f» позволяет команде делать просмотр событий в режиме реального времени, в ожидании новых записей в лог файлах. Для прерывания процесса следует нажать сочетание клавиш «Ctrl+C».
На место переменной «/var/log/syslog» в примере следует подставить актуальный адрес до нужных системных журналов.
Второй вариант использования Tail
В Linux логи веб-сервера не ведутся до бесконечности, поскольку это усложняет их дальнейший анализ. При преодолении лимита записей, система переименует переполненный строками файл журнала и отправит в «архив». Вместо старого файла создастся новый, но с прежним названием.
Если будет использоваться аргумент «-f», команда продолжит отслеживание старого, переименованного журнала. Данный метод делает невозможным просмотр логов в реальном времени, поскольку файл более не актуален.
При использовании аргумента «-F», команда, после окончания записи старого журнала, перейдёт к чтению нового файла с логами. В таком случае просмотр логов в режиме реального времени продолжится.
Аналог команды Tail
Отличие команды tailf от предыдущей заключается в том, что она не обращается к файлу и файловой системе в период, когда запись логов не происходит. Это экономит ресурсы системы и заряд, если используется нестационарное устройство — ноутбук, смартфон или планшет.
Недостаток данного способа — проблема с чтением больших файлов. Если системный журнал достаточно большой, возникает вероятность отказа в работе программы.
Изменение стандартного количества строк для вывода
Как и отмечалось выше, по умолчанию выводится 10 строк. Если требуется увеличить или уменьшить их количество, в команду добавляется аргумент «-n» и необходимое число строк.
При использовании данной команды будут показаны последние 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, то необходимо создать каталог и сам файл для ведения журнала с помощью команд:
Стоит изменить владельца файла, чтобы избежать дальнейших проблем с записью логов. Делается это командой:
После выполнения предыдущих действий, нужно совершить вход в командную строку MySQL под учётной записью суперпользователя:
Для запуска и настройки ведения логов нужно последовательно ввести в терминале следующие команды:
- slow_query_log — запускает ведение журналов медленных запросов.
- slow_launch_time — указывает максимальную задержку отклика, после которой статистика запроса попадёт в журнал. В данном случае запись в логи происходит при преодолении откликом порога 2 секунды.
- slow_query_log_file — задаёт путь до используемого журнала.
Проверить статус и параметры ведения лога медленных запросов можно командой:
Выход из консоли MySQL выполняется командой:
После выполнения всех предыдущих действий, можно просмотреть логи сервера. Для этого в терминале вводится:
PHP-FPM
Для ведения журнала на данной оболочке, необходимо отредактировать параметры в конфигурационном файле. Для этого в терминале вводится команда:
Далее нужно найти строки:
- request_slowlog_timeout = 10s — параметр, позволяющий указать задержку, с которой запись о длительном запросе попадёт в журнал.
- slowlog = /var/log/php-fpm/www-slow.log — параметр, указывающий путь до актуального файла логирования (.log).
После применения изменений, необходимо перезагрузить сервер PHP-FPM. Для этого в консоль вводится команда:
Просмотр логов запускается командой:
Анализ логов медленных запросов
Логи медленных запросов могут за незначительное время вырасти до огромных размеров. Для сортировки и отображения повторяющихся запросов рекомендуется использовать программу MySQLDumpSlow.
Для запуска просмотра логов с помощью этой утилиты, нужно составить команду по приведенному ниже алгоритму:
Ведение логов в Logrotate
На больших ресурсах журналы могут достигать огромных размеров, поэтому нужно своевременно архивировать или очищать логи. С помощью утилиты Logrotate можно управлять ведением журналов: настроить период ротации (архивирование старого журнала и создание нового), период и количество хранения журналов и многое другое.
Изначально программа отсутствует в системе. Ниже приведены команды для инсталляции Logrotate из официальных репозиториев.
Ubuntu, Debian:
CentOS:
После установки необходимо проверить путь для будущих конфигурационных файлов. Для правильной работы они должны находится в папке «logrotate.d». Проверить данный параметр можно открыв конфигурационный файл командой:
В директории «RPM packages drop log rotation information into this directory» должна присутствовать строка:
Теперь создаётся конфигурационный файл «rsyslog.conf». В нём будет находиться конфигурацию по работе с логами. Для создания файла в терминале вводится команда:
В окне терминала откроется текстовой редактор. Теперь нужно внести конфигурацию, как указано в образце. В качестве примера будет использоваться журнал посещений «Access.log» (Nginx).
Теперь остаётся только запустить Logrotate. Для этого вводится команда:
Для проверки правильности работы программы в терминале можно ввести команду:
Начни экономить на хостинге сейчас — 14 дней бесплатно!
Источник
Логи сервера: что это, зачем нужны, как включить, посмотреть, проанализировать
Логи сервера (журнал сервера) – это файлы, где в хронологическом порядке содержатся данные о работе сервера, записаны все действия посетителей на веб-ресурсе (откуда пришли, в каком браузере сидят, какой IP-адрес, сколько времени пробыли, какие данные получали или отправляли), а также информация, с помощью которой анализируется и оценивается сайт и его посетители.
Зачем нужны логи?
Есть несколько видов логов:
- Логи доступа. Показывают, какой пользователь, в какую дату и время, по какой ссылке перешел на ресурс и каков был получен ответ. Данные записи помогают найти уязвимое место, если ресурс взломают.
- Логи ошибок. Показывают ошибки, выдаваемые при функционировании сайта либо в процессе обращения к его некоторым функциям. Здесь есть возможность отыскать и ликвидировать баг, приводящий к ошибке.
- Другие логи. Фиксируют события в различных серверских компонентах: логи почты сервера и т.п.
Если веб-сайт работает нормально, в штатном режиме, нет необходимости просматривать лог-файлы. Но бывают случаи, когда сервер внезапно перегружается, ресурс подвергается спаму, выдает изобилие ошибок или возникают проблемы в ранжировании в поисковых системах.
В таком случае системные администраторы или seo специалисты начинают анализировать посетителей, идентифицировать доступ к файлам со стороны постороннего лица, а именно IP-адрес, откуда он был осуществлен, после чего делают соответствующие выводы.
На заметку. Для обычного пользователя такие файлы будут представлять случайный набор символов, однако для разработчиков сайтов, seo специалистов и системных администраторов логи читабельные и несут важную информацию.
Как включить журнал записей?
В большинстве случаев хостер отключает функцию записи логов на хостинге, чтобы сохранить больше места на диске. На примере админки хостинга Beget.com рассмотрим, как активировать запись логов:
- Заходим в панель администратора и находим вкладку Журналы — логи доступа.
- В соответствующем поле выбираем домен ресурса и кликаем на ползунки Журнал доступа, Журнал ошибок, чтобы он перешел в положение ВКЛ.
Здесь же вы видите путь, где располагаются ваши логи
Если у вашего хостинга в админ панели нет функции включить запись самостоятельно, то для получения логов потребуется обратиться в техподдержку хостинга и запросить их, так как они могут быть просто отключены.
Как посмотреть логи сервера?
Включив лог-файлы на сервере, уже через час соберется довольно большое количество записей, после чего можно скачать файл в директорию сайта и открыть его через визуальный редактор для просмотра.
Логи хранятся в файле access.log в системной папке любого сервера, будь то Nginx, Apache или любой другой. Лог-файлы открываются через текстовые редакторы. Любая строчка здесь соответствует не больше, чем одному обращению.
Отыскать логи можно и через панель управления хостинга, а именно в разделах Логи или Журналы.
Анализ логов сервера
Рассмотрим строку, взятую с записи одного из логов сервера:
И рассмотрим значение всех символов, которые здесь есть:
- site.ru – адрес рассматриваемого ресурса
- 85.91.97.104 – IP-адрес пользователя, посетившего сайт, после которого идет дата и время перехода на страницу и часовой пояс
- GET – запрос, означающий получение данных. Может быть еще запрос POST, то есть, отправка данных, к примеру, авторизация на сайте
- page/3 – обращение сделано к 3-й странице
- HTTP/1.0 – протокол пользователя, посредством которого он зашел на ресурс
- 200 – код ответа, отправленного сервером посетителю
- 70214 – число байт, переданных пользователю
- Ahrefs Bot (http://www.ahrefs.com/bot; bot@ahrefs.com) – данные о пользователе или боте, с какого устройства он зашел, какую ОС использует и т.п. В нашем случае это бот парсера ahrefs.
Это один из множества логов, и чтобы прочитать их все вручную, нужно потратить невероятное количество сил и времени. Но на помощь вебмастерам приходят специальные анализаторы данных, трудно читаемых человеком. Они анализируют данные, а затем структурируют их. К часто используемым программам можно отнести:
И это далеко не все программные обеспечения, которые можно найти в сети. Они есть и в платном, и в бесплатном доступе.
На некоторых хостингах их можно установить при включении логов. Например в ранее нами рассматриваемом хостинге Beget.com когда мы включаем логи, нам предлагается установить Awstats.
Успешно анализируя лог-файлы, вы сможете отыскать слабое место на сайте, из-за которого он работает нестабильно, или же идентифицировать IP, с которого вам хотят навредить. Особенно стоит обращать внимание на запросы POST, потому что именно с их помощью мошенники взламывают ресурсы чаще всего.
Лог ошибок error.log
Это файл, где тоже протоколируются логи, но они относятся не к пользователям, а к ошибкам, возникающим на сервере. Аналогично файлу access.log, в error.log каждая отдельная строка показывает запись только одной ошибки. Благодаря этому файлу можно узнать причину возникновения ошибки и ее тип, а также IP пользователя, которому она была показана. Рассмотрим пример:
- Первая строка: дата и время/тип записи error (ошибка), а также IP адрес пользователя.
- Вторая: событие PHP Notice – уведомление, расшифровка Undefined variable – неизвестная переменная.
- Третья: путь к файлу с уведомлением и строка.
Здесь мы наблюдаем ошибку в модуле контактов, в файле default.php в строке 14.
Заключение
Журнал сервера – это эффективный инструмент, позволяющий быстро получить информацию о том, где у сайта есть лазейка, из-за которой перегружается сервер. Но просматривать логи вручную – дело хлопотное, поэтому и были созданы такие специальные сервисы-анализаторы, помогающие куда быстрее найти ошибки и указать на слабые места веб-ресурса.
Оцените эту статью. Чтобы мы могли делать лучший контент! Напишите в комментариях, что вам понравилось и не понравилось!
Рейтинг статьи: 4.6 / 5. Кол-во оценок: 14
Пока нет голосов! Будьте первым, кто оценит эту статью.
Источник