Анализ и отображение логов PHP

fopen — php лучший способ анализа access_log

Я хочу, чтобы анализ access_log, а затем сохранить ip посетителей, дату, просмотр страницы или изображения в таблицу MySQL.

Я планирую использовать cron job, вызывать php-скрипт каждую минуту, открыть access_log.

Но теперь access_log имеет уже более 500 МБ, и он будет увеличиваться примерно на 0,4 МБ в минуту. (обычно 50-350 записей)

так как открыть такой большой файл в php? прочитайте последние 500 записей, затем regex получите записи за последнюю минуту. Мой сервер имеет 32 ГБ ОЗУ, память не проблема, но мне нужно меньше процессора. Кто-нибудь может помочь мне с простым кодом? Благодарю.

редактировать

примите совет @Jeremiah Winsley, я использую rotatelogs в моем httpd.conf. Но журнал не был создан. в чем проблема?

Решение

Не пытайтесь заново изобрести колесо. Всегда старайтесь искать инструменты, разработанные другими. Веб-серверы существуют уже давно, поэтому существует множество синтаксических анализаторов и серверных инструментов.

Дайте этому парсеру PHP попробовать и сэкономьте время.

Как уже отмечалось, я не буду делать это на живых файлах. Вам, вероятно, следует настроить cronjob примерно на каждые 5 или 10 минут и чаще вращать файлы. И используйте недавно повернутый файл. Однако это может привести к созданию большого количества файлов.

Включить лог ошибок php в .htacccess при использовании Apache с mod_php

Несколько иначе стоит действовать при использовании Apache с mod_php (с fast_cgi директива php_flag работать не будет — возникнет ошибка 500)

В .htaccess в корне сайта добавляется:

php_flag log_errors On
php_value error_log /var/log/php-errors.log

Выключается логирование установкой основной опции в Off

php_flag log_errors Off

Чтобы проверить в каком режиме работает PHP на сервере можно выполнить в консоли apache2ctl -M — вывести список всех модулей, среди них скорее всего будет fcgi, fastcgi или mod_php.

Также можно создать в корне сайта, работающего с сервера файл phpinfo и поместить в него тестовый скрипт

Затем обратиться к файлу из браузера

sitename.com/phpinfo.php

Если применяются редиректы может потребоваться временно переименовать файл .htaccess в корне сайта.

В выводе phpinfo.php можно будет увидеть всю информацию о существующих настройках РНР

Читайте про ошибку 500 и ее причины. Очень часто она появляется как следствие неверной отработки скриптов или настроек сервера не удовлетворяющим требованиям программного кода сайта.

Бортовой журнал

Полет нормальный. Без происшествий.

Ошибки PHP: как выявить и что с ними делать?

Если у вас сайт на PHP, даже самый простой, время от времени в его скриптах могут возникать ошибки. Это может привести к различным неприятным последствиям, от некорректной работы некоторых компонентов сайта (например, формы обратной связи), до недоступности сайта целиком. Как самостоятельно распознать тип ошибки PHP и понять, что с ней делать дальше?

Этот материал поможет вам, во-первых, самостоятельно оценить ситуацию (и, возможно, даже решить ее), а во-вторых, точно ускорит диагностику и решение проблемы при обращении в службу поддержки. Самые ценные советы по устранению наиболее частых ошибок PHP, связанных с лимитами оперативной памяти, вы найдете в конце статьи.

Как обнаружить ошибку PHP на сайте

1. Встроенными средствами браузера

Итак, если на сайте вместо привычной страницы ничего не отображается (вы видите “пустую страницу”), то, вероятнее всего, в одном из скриптов возникла ошибка. В этом можно убедиться, воспользовавшись встроенными «Инструментами разработчика» вашего браузера. В каждом браузере они могут называться немного по-разному, но суть от этого не меняется.

Например, в браузере Google Chrome это вкладка Dev Tools (или «Инструменты разработчика»). В Mozilla Firefox — это расширение Firebug (его нужно установить отдельно в меню Adds On) или же вкладка Developer.

Внутри «Инструментов разработчика» нас интересует вкладка, которая называется Network (или Net, или каким-то похожим образом).

Если на странице сайта присутствует ошибка, в этой вкладке вы увидите код ответа 500 (“Internal Server Error”).

2. Если вывод сообщений об ошибках в браузер отключен

Случается, что вывод сообщений об ошибках в браузер отключён. Чтобы сообщение об ошибке отображалось в браузере, достаточно добавить в файл .htaccess в корневой директории сайта следующую строку:

Файл .htaccess вы найдете по адресу: /home/login/domains/domain.ru/public_html/, где вместо login следует подставить логин вашего аккаунта, а вместо domain.ru — домен вашего сайта.

После сохранения файла .htaccess и обновления страницы вы сможете увидеть ошибку.

Если сайтом используется, например, CMS WordPress, то отображение ошибок можно также включить, заменив в файле wp-config.php:

3. С помощью журнала ошибок PHP

Иногда по различным причинам отображать ошибки в браузере нежелательно. В этом случае лучше всего сохранять их в какой-нибудь файл, например errors.log — журнал ошибок PHP. Для этого достаточно в файле .htaccess добавить следующую строку:

php_value error_log /home/login/domains/domain.ru/log/errors.log

Здесь /home/login/domains/domain.ru/log/errors.log — это полный путь до файла, в который будут записываться ошибки PHP (если файла с таким именем нет, он будет создан автоматически при появлении ошибки).
Теперь, если мы снова зайдем на сайт с ошибкой (либо обновим страницу с ошибкой), то в errors.log будут записаны сообщения об ошибках.

Журнал ошибок PHP можно просмотреть, например, с помощью файлового менеджера в Панели управления, открыв файл errors.log:

Также можно открыть файл с ошибками и нажать кнопку “Включить автообновление”. Таким образом, новые записи в журнале можно просматривать в реальном времени.

Расшифровка ошибок PHP

Как правило, в сообщении об ошибке достаточно подробно указано где именно и при выполнении какой части кода она возникла. Например:

Здесь ошибка заключается в следующем:

Fatal error: Call to undefined function weblizar_get_options() in /home/login/domains/domain.ru/public_html/wp-content/themes/enigma/header.php on line 14

“Вызов неопределенной функции weblizar_get_options() в файле используемой на сайте темы enigma”.

Вероятнее всего, был поврежден один из файлов темы, поэтому можно восстановить только директорию темы ./wp-content/themes/enigma/ , а не всего сайта.

Что делать, в зависимости от типа ошибки PHP

Условно ошибки PHP можно разбить на 4 уровня:

Parse Error

Возникают, если уже на этапе проверки кода интерпретатором PHP найдена ошибка. Чаще всего это синтаксические ошибка (например, пропущенная точка с запятой). Скорее всего, такая ошибка возникла в результате последних внесенных на сайт изменений.

Что делать?

1. Если вы НЕ специалист в PHP, восстановите сайт из последней резервной копии на тот момент, когда сайт работал без ошибок.

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

Мастер Йода рекомендует:  32 Youtube-канала для изучения программирования
Fatal Error и Warning

Возникают, если при выполнении кода какой-то его участок не может быть выполнен (например, попытка открыть несуществующий файл). Разница между 2-ым и 3-им уровнем в том, что при получении “критической ошибки” (FATAL ERROR) выполнение скрипта завершится, а при получении “предупреждения” (WARNING) — нет.

Что делать?

Восстановите сайт из последней доступной резервной копии на тот момент, когда он работал без ошибок.

Notice

К этому уровню ошибок относятся различные “замечания”, суть которых обычно отображена в тексте ошибки.

Что делать?

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

Частые ошибки PHP и их решение

Fatal Error: Allowed Memory

Означает, что для выполнения какой-либо части кода PHP не хватает выделенной оперативной памяти. При этом лимит памяти ограничен какими-то директивами «изнутри» сайта (то есть где-либо в скриптах сайта, либо директивой memory_limit в файле .htaccess). Чтобы исправить это, измените данный лимит в большую сторону, например, в файле .htaccess.

Для этого найдите в .htaccess такую директиву:

Вместо 128M укажите желаемый размер ограничения. Обратите внимание, что символ «M» (латинская M) указывается слитно со значением.

Помните, что есть максимальные значения памяти, отведенной на выполнение скриптов PHP, предусмотенные вашим тарифом хостинга (например, на тарифах виртуального хостинга это 512 Мб, премиум — 1024 Мб). Уточните эти значения у вашего провайдера, если они не указаны явно.

Fatal Error: Out of memory

То же самое, что и предыдущая ошибка, с той разницей, что достигнут лимит памяти, заданный “снаружи”. Обратите внимание на параметр “Памяти на процесс, Мб, не более“ в условиях пользования нашим сервисом.

Для решения вопроса в данном случае, скорее всего, потребуется либо оптимизация скриптов, чтобы они потребляли меньше памяти, либо разбиение процессов на части. Например, объемную загрузку или выгрузку данных, если она упирается в данный лимит, имеет смысл производить частями.

Также в этом случае мы советуем попробовать отключить акселераторы PHP, если они у вас подключены.

Unable to allocate memory for pool

Сайтам на аккаунте не хватает выделенной на тарифном плане памяти для акселераторов PHP.

Для решения проблемы вы можете отключить использование акселераторов в Панели управления хостингом, в разделе «Управление персональным веб-сервером».

Также, например, можно отключить акселератор APC для определенного сайта, добавив в файл .htaccess корневой директории следующую директиву:

php_value apc.cache_by_default off

Обычно имеет смысл оставлять APC для использования на самом посещаемом из ваших сайтов — это позволит использовать именно на нем преимущества акселератора, не заполняя его память данными с других, менее посещаемых сайтов.

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

Мы постараемся предложить возможные варианты решения.

Анализ логов посредством Web’a = LogAnalyzer + rsyslog

В предыдущей заметке я показал как настроить rsyslog для приёма логов по сети. Далее сделаем чтобы анализ логов производился посредством Web интерфейса, т. е. поднимем Web сервер на базе Apache2, прикрутим php и mysql, а также самый важный пакет LogAnalyzer.

$ sudo apt-get install apache2 php5 php5-mysql php5-gd

Reading package lists… Done

Building dependency tree

Reading state information… Done

The following extra packages will be installed:

apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common fontconfig-config libapache2-mod-php5 libapr1

libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libcap2 libfontconfig1 libgd2-xpm libjpeg-turbo8 libjpeg8

libt1-5 libxpm4 php5-cli php5-common ssl-cert ttf-dejavu-core

apache2-doc apache2-suexec apache2-suexec-custom php-pear libgd-tools php5-suhosin openssl-blacklist

The following NEW packages will be installed:

apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common fontconfig-config libapache2-mod-php5

libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libcap2 libfontconfig1 libgd2-xpm libjpeg-turbo8

libjpeg8 libt1-5 libxpm4 php5 php5-cli php5-common php5-gd php5-mysql ssl-cert ttf-dejavu-core

0 upgraded, 25 newly installed, 0 to remove and 106 not upgraded.

Need to get 10.8 MB of archives.

After this operation, 29.1 MB of additional disk space will be used.

Do you want to continue [Y/n]? y

Скачаем последнюю версию LogAnalyzer:

$ sudo mkdir /opt/log

—2013-01-10 12:21:03— https://download.adiscon.com/loganalyzer/loganalyzer-3.6.2.tar.gz

Resolving download.adiscon.com (download.adiscon.com)… 176.9.39.152

Connecting to download.adiscon.com (download.adiscon.com)|176.9.39.152|:80… connected.

HTTP request sent, awaiting response… 200 OK

Length: 1043284 (1019K) [application/x-gzip]

Saving to: loganalyzer-3.6.2.tar.gz’

2013-01-10 12:21:06 (420 KB/s) — loganalyzer-3.6.2.tar.gz’ saved [1043284/1043284]

Распаковываем и переходим:

ekzorchik@webserver:/opt/log$ sudo tar -xzf loganalyzer-3.6.2.tar.gz && cd loganalyzer-3.6.2

Теперь установим его в каталог на нашем веб-сервере:

ekzorchik@webserver:/opt/log/loganalyzer-3.6.2$ sudo mkdir /var/www/logs

ekzorchik@webserver:/opt/log/loganalyzer-3.6.2$ sudo cp -R src/* /var/www/logs/

ekzorchik@webserver:/opt/log/loganalyzer-3.6.2$ sudo cp contrib/* /var/www/logs/

ekzorchik@webserver:/opt/log/loganalyzer-3.6.2$ cd /var/www/logs/

ekzorchik@webserver:/var/www/logs$ sudo chmod +x configure.sh secure.sh

ekzorchik@webserver:/var/www/logs$ sudo ./configure.sh

Теперь создадим базу данных для работы LogAnalizer:

$ sudo mysql -u root -p

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 53

Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> create database log_analyzer_users;

Query OK, 1 row affected (0.00 sec)

Выводим все базы:

mysql> show databases;

6 rows in set (0.00 sec)

Создадим пользователя analyzer с паролем analyzer для доступа к этой базе:

mysql> grant all on log_analyzer_users.* to analyzer@’localhost’ identified by ‘analyzer’;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

Выходим из консоли управления MySQL:

mysql> quit

Открываем Web-интерфейс LogAnalyzer’а:

https://192.168.1.37/logs (в Вашем случае IP адрес другой) и нас приветствует первая ошибка. Нажимаем на гиперссылку «here» для начала прохода по всем шагам настройки.

П роверяе м наличие и права доступа к файлу config.php — далее нажимаем Next.

Активируем возможно создания пользователей внутри LogAnalizer а с целью раздачи прав для аудита , выбираем:

Enable User Database — yes

Database name – log_analyzer_users

Database User – analyzer

Database Password — analyzer

Регистр символов очень важен.

На следующих двух шагах проверяется соединение с базой данных и в ней создаются соответствующие таблицы

Далее создаём административную учетная запись (я ее назвал ekzorchik — 712mbddr@)

Теперь мы описываем параметры соединения с базой rsyslog , см. рисунок, какие параметры вводить.

Source Type = MYSQL Native

Select View = Syslog Fields

Table type = MonitorWare

Database Host = localhost

Database Name = Syslog

Database Tablename = systemevents

Database User = rsyslog

Database Password = 712mbddr@

И, наконец, все. Настройка завершена.

Жмем Finish

Открываем браузер и переходим по адресу для отображения логов посредством Web-интерфейса.

https://192.168.1.37/logs, перед нами окно входа, здесь вводятся данные административной учётной записи. ( Login: ekzorchik Pass: 712mbddr@ )

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

Отлично, теперь сделаем резеврную копию полученного конфигурационного файла :

ekzorchik@webserver:/var/www/logs$ sudo cp /var/www/logs/config.php /home/ekzorchik/config.php

Задача выполнена. Особое внимание стоит обратить пробелам при указании баз. На этом всё, с уважением ekzorchik.

2 комментария

Добрый день. Настраиваю по статье Syslog.
Вопрос: на шаге 7
Database User = rsyslog
Database Password = 712mbddr@
Откуда они — по ходу статьи их не было — пробую писать свои -ошибка соединения с базой.

Мастер Йода рекомендует:  Использование CSS для центрирования изображений и других HTML объектов

Добрый вечер!
Прошу читать заметку внимательнее в самом начале идет ссылка как поднять «Сервер централизованного сбора логов на базе rsyslog» — вот из нее и получаются эти данные.

Comments are closed.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще 🙂

Карта МКБ: 4432-7300-2472-8059
Yandex-деньги: 41001520055047

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Логирование в файл при помощи PHP

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

Я могу выделить множество плюсов этого:

  1. Если проходит выгрузка по событиям или ежедневная, то можно всегда узнать, прошла она или нет.
  2. Если вы пишите какой-то обработчик аякс запроса, то можете всегда узнать пришли ли данные и, если пришли, какие именно.
  3. Отслеживать определённые события. Например заход пользователем на страницу и т.д.

И т.д. Перечислять их можно долго, самое главное, что вы можете увидеть преимущество сбора логов.

Наконец мы можем приступить к действию. Давайте же теперь перейдём к самому примеру:

И так, что же мы сделали в данном скрипте.

  1. Мы положили в переменную $file путь до файла.
  2. Создали переменную текст в которую будем записывать то, что нужно записать в указанный файл.
    Для начала мы добавили разделитель, чтобы отличать каждую новую запись
    Далее сам текст, так же можем указать переменную или массив и в таком случае у нас будет записан дамп массива
    Последнее мы добавили перенос строки
  3. В переменную $fOpen пытаемся открыть файл. Если его не будет, то пытаемся создать его.
  4. Записываем содержимое переменной $text
  5. Закрываем файл

Собственно всё. Вы можете вставлять этот кусок кода либо прямо в свой скрипт. Либо, так даже лучше, вынести это в определённый класс, создав новый метод, и просто вызывать передавая в параметрах тест, массив или просто переменную.

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

Давайте сразу посмотрим дополненный пример:

Собственно всё. Надеюсь что это поможет в вашей работе, ну или найти ошибку в нерабочем коде.

Анализ и отображение логов PHP

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

Нажав кнопку «Принять и продолжить», вы соглашаетесь с Политики конфиденциальности

Мы запустили рейтинг зарплат интернет-маркетологов! Прими участие в анонимном опросе.

How-to – Читать 7 минут – 28 ноября 2020

Логи сайта, как правило, имеют ценность для технического аудита веб-площадок и могут быть чрезвычайно полезными для SEO-оптимизации.

Анализ логов сервера:

  • показывает, сколько краулингового бюджета теряется и где именно;
  • помогает выявить и корректно настроить возникшие ошибки 404, 500 и прочие;
  • позволяет найти страницы, которые редко сканируются или игнорируются поисковиками;
  • дает еще множество возможностей.

В данном случае браузер понимает, что https — это протокол, your_site_address.com — название сервера, а example.html — имя файла.

Название сервера преобразуется в IP-адрес через сервер доменных имен. Затем HTTP-запрос GET отправляется на веб-сервер через соответствующий протокол для запрашиваемой страницы или файла, при этом HTML возвращается в браузер, а затем интерпретируется для форматирования видимой страницы на экране. Каждый из этих запросов записывается в log file веб-сервера.

Проще говоря, процесс выглядит так: посетитель совершает переход по странице, браузер передает его запрос серверу, на котором расположен веб-сайт. Сервер выдает запрошенную пользователем страницу в ответ. И после этого фиксирует все происходящее в log-файле.

Все, что вам нужно, чтобы проанализировать сканирование сайта поисковой системой, — экспортировать данные и отфильтровать запросы, сделанные роботом, например, Googlebot. С помощью браузера и диапазона IP это сделать удобнее.

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

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

  • IP-адрес запроса;
  • дата и время;
  • география;
  • метод GET / POST;
  • запрос к URL;
  • код состояния HTTP;
  • браузер.

Пример записи, включая приведенные выше данные:

111.11.111.111 — — [12 / Oct / 2020: 01: 02: 03 -0100] « GET / resources / whitepapers / retail-whitepaper / HTTP / 1.1 « 200 »-« »Opera / 1.0 (совместимый; Googlebot / 2.1; + https://www.google.com/bot.html)

Дополнительные атрибуты, которые иногда можно увидеть, включают:

  • имя хоста;
  • запрос / клиентский IP-адрес;
  • загруженные байты;
  • затраченное время.

Где php хранит логи ошибок (error log)

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

Не забудьте создать файл php-scripts.log и дать на него права apache. После этого перезапусктить apache.

Есть проблемы с Linux сервер? Обращайтесь — [email protected]

Похожие статьи:

2 Comments

А если в php.ini прописан этот файл так, как вы здесь указали (и phpinfo() выводит это), стоят права на этот файл 644 (rw-r—r—), пользователем установлен www-data, но логирование в этот файл не происходит? Апач перегружен несколько раз…

Что может быть сделано не так?

Апач в процессах работает от этого пользователя?
LOG_ERRORS = 1, так же попробуйте изменить уровень логирования. Проверьте права на паку выше.

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

О КОМПАНИИ

Наша компания состоит из команды Linux/Windows администраторов с опытом более 15 лет, DevOps инженеров, специалистов в области информационной безопасности, виртуализации и облачных систем. Занимаемся круглосуточной поддержкой высоконагруженных сайтов и серверов. Выполняем проектирование, построение и поддержку наземных, облачных и гибридных инфраструктур.

Как включить отображение ошибок PHP

16 января 2013, 03:42

При отладке готового сайта на сервере просто необходимо бывает включить вывод ошибок PHP. Мало ли что может вылезти, так лучше ознакомиться с этим заранее. Ну, или узнать почему же вроде рабочий сайт вдруг не запускается на сервере.

Сделать это не сложно, просто добавьте следующие строки в файл .htaccess в корне сайте.

Приведу краткую справку по этим параметрам.

error_reporting — указывает, какие ошибки выводятся по уровню значимости. При значении директивы -1 отображаются все ошибки.

display_errors — включает опцию для вывода ошибок на экран вместе с остальным кодом.

display_startup_errors — включает опцию вывода ошибок, возникающих при запуске PHP, когда еще не работает директива display_errors.

ignore_repeated_errors — игнорирование повторяющихся ошибок (ошибка в том же файле и той же строке).

ignore_repeated_source — игнорирование источника ошибок при пропуске повторяющихся сообщений. Если опция включена, то повторяющиеся ошибки не будут выводится вне зависимости от того, в каком файле они произошли.

track_errors — при включении этой директивы текст последней ошибки помещается в переменную $php_errormsg.

Мастер Йода рекомендует:  Как работают Web сервисы ASP.NET

log_errors — включает сохранение ошибок в лог. По умолчанию это журнал ошибок сервера, но назначение можно изменить директивой error_log.

mysql.trace_mode — включает трассировку ошибок MySQL.

Если хочется сохранять лог-ошибок в отдельный файл, то добавьте в .htaccess следующую строку:

Путь к сайту можно узнать, загрузив на сервер php-файл со следующим содержимым и открыв его в браузере.

Конечно, ненужные вам директивы вполне можно исключить. По большей степени, необходимыми для отладки являются только первые три параметра: error_reporting, display_errors и display_startup_errors .

Анализ лог файлов сайта

Анализ лог файлов поможет в процессе оптимизации сайта на этапе поиска программных ошибок, которые мешают продвижению и могут даже стать причиной попадания сайта под фильтр. Лог файлы подразделяются на два типа: документы ошибок и посещений, соответственно error.log и access.log, о которых я сегодня и расскажу.

Для начала анализа надо подключить логи на хостинге, что можно в несколько кликов сделать в панели управления, после чего фиксация посещения сайта и ошибок на нём при визитах посетителей и ботов будет отображаться в лог файлах, расположенных в корне домена. Для их просмотра открываем ftp-соединение с сервером через Total Commander и видим возле папки public_html (на Joomla)файлы логов, открыть которые в свою очередь можно нажав F4 и выбрав текстовой редактор.

Error.log

Этот файл показывает ошибки, возникшие при визите на сайт, и часто помогает найти косяки, которые не видны взгляду простого смертного снаружи сайта. Так в строке ошибок мы видим –

  1. Время возникновения ошибки,
  2. IP-адрес посещения,
  3. Описание ошибки,
  4. Адрес проблемного web-документа.

В основном анализ error.log интересен тем, что позволяет увидеть, какие документы сайта недоступны, что поможет быстро устранить недоработки по программной линии без банального тыканья пальцем в небо. Лично мне анализ лог файлов помог вывести блог из-под АГС (нервных просят не смотреть – не этот), так как там было полно программных ошибок.

Access.log

В этом документе можно посмотреть, что творится на сайте при посещениях ботами и пользователями, то есть какие HTTP-статусы отдаёт сайт при визитах, с какого адреса пришли на какую страницу, с какого адреса IP и какие боты. С помощью access.log можно отследить активность роботов и увидеть, как они читают web-документы, то есть access я бы назвал более широкоформатным дополнением к error.log.

Для тех, кто не в танке предлагаю перед анализом логов ознакомиться с HTTP-статусами, иначе пользы от напряжения ума и глаз не будет, а упростить задачу по анализу поможет бесплатная программа Awstats, которую можно поставить в панели управления практически любого хостинга.

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

Если Вы хотите полностью проверить сайт и узнать его основные характеристики + посмотреть теги ресурса, объём текста, количество обратных ссылок, историю изменения параметров и прочее, то проверить сайт можно на сервисе prlog.ru и это будет отличным дополнением к анализу логов.

Дмитрий здравствуйте! Целый день убила на то, чтобы найти хоть какую-то информацию о Error.log Везде настолько мизерно написано, что ничего не понятно. У вас более менее доходчиво. А вы не могли бы мне помочь расшифровать ошибки? У меня проблемы с сайтом начались и я не знаю, что и где исправляется.

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

4 способа просмотра или мониторинга файлов журнала в режиме реального времени

Как можно увидеть содержимое файла журнала (логов) в режиме реального времени в Linux? Есть много утилит, которые могут помочь пользователю выводить содержимое файла в режиме реального времени. Одной из наиболее известных и широко используемых утилит для таких целей в Linux является команда tail (в режиме реального времени).

1. Команда tail — мониторинг файла журнала (логов) в режиме реального времени

Как сказано, команда tail является наиболее распространенным решением для отображения файла журнала (логов) в режиме реального времени. Однако команда для отображения файла имеет две версии, как показано в приведенных ниже примерах.

В первом примере для tail требуется аргумент -f, чтобы отслеживать содержимое файла.

Вторая версия команды — это команда: tailf. Вам не нужно использовать ключ -f, потому что он встроен в саму утилиту.

Обычно файлы журнала (логов) часто ротируются (архивируются, а через некоторое время удаляются) на сервере Linux с помощью утилиты logrotate. Для просмотра файла журнала (логов), которые ротируются ежедневно, вы можете использовать ключ -F для команды tail.

tail -F будет отслеживать, был ли создан новый файл логов, и начнет следовать за новым файлом вместо старого.

Однако по умолчанию команда tail отобразит только последние 10 строк файла. Например, если вы хотите смотреть в реальном времени только последние две строки файла журнала (логов), используйте файл -n в сочетании с флагом -f, как показано в приведенном ниже примере.

2. Команда multitail — просмотр нескольких файлов журнала (логов)в режиме реального времени

Еще одна интересная команда для отображения файлов журнала (логов) в режиме реального времени — это команда multitail. Название команды подразумевает, что утилита multitail может отслеживать несколько файлов в режиме реального времени. Multitail также позволяет перемещаться вперед и назад в просматриваемом файле.

Для установки утилиты mulitail в системах на базе Debian и RedHat выполните команду приведенную ниже.

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

3. Команда lnav — мониторинг нескольких файлов журнала в режиме реального времени

Еще одна интересная команда, подобная команде multitail, — это команда lnav. Утилита lnav также может просматривать и отслеживать несколько файлов и отображать их содержимое в режиме реального времени.

Чтобы установить утилиту lnav в дистрибутивах Linux на базе Debian и RedHat, выполните следующую команду.

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

4. Команда less — отображение в режиме реальном времени файлов журнала

Наконец, вы можете отображать содержимое файла в режиме реального времени с помощью команды less, если вы нажмете комбинацию клавиш Shift + F.

Как и в случае с утилитой tail, команда less при нажатии Shift + F открывает файл с конца. В качестве альтернативы вы также можете использовать less флагом + F, чтобы войти в режим просмотра файлов в реальном времени.

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

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.

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