♒ Скрипты для анализа логов веб сервера
- Что такое, как расшифровывается, что хранится в логах веб сервера апача
- На что смотреть, что анализировать из логов веб сервера
- Записки и систематизация скриптов анализа и обработки лог- файлов.
Анализ логов - краеугольный наш к увеличению и скорости работы сайта, уменьшение количества ошибок. Ведь исправив пиковые элементы мы решим главные задачи - 20% времени занимают 80 процентов эффекта.
Я перерыл кучу информации в интернете в поисках программ веб-анализатора, к сожалению, что ли достойное или удобное не представилось возможным, там где что-то было интересное требование как минимум 40 $, и выше, при все рано часть вещей оставалась не освещена. Плюс при этом функционале как правило не может что то отличное от веб-аналитики, и не решает задач реальных нагрузок.
Цитаты объясняющие сложность проблемы:
Когда один пользователь заходит на сайт, процессы же не только на PHP. Помимо этого загружаются CSS, JavaScript, графика и т.д. И если их очень много, при большом количестве пользователей кол-во процессов может быть большим.
Картинки, стили и скрипты - это «статическое содержимое». Оно не изменяется с течением времени, и на такое обращение нужно меньше всего ресурсов (процессорное время практически не используется, память нужно минимальное количество).
Динамическое содержимое - это лишние запросы к БД и затраты процессорного времени на выполнение.
Основные причины, по которому сайт сильно нагружает хостинг:
- вывод комментариев (обычно ставят на отображение 10 последних = 10 запросов к БД),
- вывод последних новостей в блоке,
- вывод самых комментируемых новостей,
- другие супер интересные виджеты - плагины,
- множественные лишние запросы в самом шаблоне, которые можно заменить на статическое содержимое, необходимо найти «плохой» плагин или модуль, и обновить, починить, заменить или даже отключить его.
- львиную долю задач можно и нужно решать напрямую - редактируя шаблон.
Теория - при обработке статических файлов apache использует около 2-3 Мб на процесс, для динамических файлов (php, cgi) - от 16 до 32 Мб.
Процесс PHP есть 2 Мб - не бывает такого, любая копия скрипта будет забирать как минимум 4-6 Мб, причем даже состоящего всего из пару - тройки строк кода.
Если скрипт тяжелый, и тем более с ошибками то ему одному не хватит ОЗУ, если только статика на сервере - без проблем пара сотен пользователей в день.
При небольшой посещаемости не будет заметной разницы между apache2 и nginx, однако nginx - меньше потребляет той же производительности.
memory_limit в php - например, 256 Мб делим на 10 проектов по 2 Мбайта, получается по 12,8 человек на каждом сайте одновременно или 128-онлайн на 1.
На VPS все ресурсы "наши": сервер, интерпретатор и панель управления - забирают у вас вашу оплаченную память. При нехватке памяти VPS (оперативный + своп) сервер не виснит, а сразу - 500 ошибка - отказ обслуживания для клиента.
ап ..
Рекомендация: периодически сохраняйте логи вашего сервера у себя, хотя бы раз в месяц, часто позволяет отследить многие тенденции, так как правило логи у хостера хранятся всего 7 дней, максимум что я видел 1 месяц.
Виды логов access_ssl_log, разница access_ssl_log access_ssl_log.processed access_log.processed
♳ I) ПРО ЛОГИ
1) access_log - лог досупа (данные за час)
- access_log
- access_ssl_log
Пример:
217.27.154.74 - - [30 / Октябрь / 2015: 13: 38: 31 +0300] "GET /images/stories/b/1/Hard-Disk.jpg HTTP / 1.0" 200 286 "http: //www.web .ru / информация / kak.html "" Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 45.0.2454.93 Safari / 537.36 OPR / 32.0.1948.69 "
78.25.64.74 - - [30 / Октябрь / 2015: 13: 38: 36 +0300] "GET /informatsiya/zamena-na-plate.html HTTP / 1.0" 200 56996 "-" "Mozilla / 5.0 (Linux; U; Android 2.3.6; ru- ru; GT-S5660 Build / GINGERBREAD) AppleWebKit / 533.1 (KHTML, как Gecko) Версия / 4.0 Mobile Safari / 533.1 "
✎ Расшифровка: С IP-адреса 78.25.64.74 30 октября 2015 в 13-38 дня по московскому времени запросили по протоколу HTTP / 1.0, методом GET страницу сайта "/informatsiya/zamena-na-plate.html". Успешно, о чем свидетельствует 200. Ответ занял 56996 байта. В скобках браузера и ОС: Mobile Safari - Android 2.3.6
2) _processing - транзакции обрабатываются (в основном в нем хранятся интересные нам данные - в основном архив)
- access_ssl_log.processed
- access_log.processed
- access_log.processed.1.gz
2.92.86.203 - - [06 / Aug / 2015: 21: 09: 18 +0300] "GET /media/system/js/mootools.js HTTP / 1.1" 200 20296 "http://www.web.ru/acpi /cpu.html "" Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, например Gecko) Chrome / 44.0.2403.125 Safari / 537.36 "
2.93.56.15 - - [06 августа 2015: 18: 57: 16 +0300] "GET /images/stories/informatsiya/Kak/uznat.jpg HTTP / 1.1" 200 34075 "http: // www. Web.ru/informatsiya/kak.html" "Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 44.0.2403.107 Safari / 537.36 OPR / 31.0.1889.99 "
3) error_log - лог ошибок
- журнал ошибок
[Пт, 06 ноя, 18:06:33 2015] [ошибка] [клиент 31.173.84.230] Файл не существует: /var/www/vhosts/u7.hosting.ru/ web.ru /apple-touch-icon.png
[ Пт, 6 ноября, 18:11:52 2015] [предупреждение] [клиент 207.46.13.140] mod_fcgid: невозможно применить слот процесса для
[Пт, 06 ноя, 21:55:15 2015] [ошибка] [клиент 109.188.125.10] ModSecurity: Предупреждение. Соответствующая фраза "/109.188.125.10/" в TX: ip_boundary. [файл "/etc/httpd/modsecurity.d/activated_rules/modsecurity_slr_10_ip_reputation.conf"] [строка «17»] [идентификатор «2200000»] [сообщение «SLR: IP-адрес клиента в черном списке.»] [тег «REPUTATION / MALICIOUS» ] [имя хоста "www.veb.ru"] ...
(проблема с недостатком слотов - ошибки в скриптах в их выполнении)
менее интересно
4) proxy_access_log - фиксирует то что использует ресурсы с нашим сайтом отдельного запроса - как например:
- proxy_access_ssl_log - тоже самое только по протоколу SSL
- proxy_error_log - с кривыми запросами
a) что используется - берется доп запросом, пример:
93.81.145.180 - - [30 / Oct / 2015: 12: 16: 27 +0300] "GET / images / thumbnail / images / stories / informatsiya-o / reductor / reductor2015- 485x183.jpg HTTP / 1.1 "200 17461" http://dmitry-anapa.ru/ "" Opera / 9.80 (Windows NT 5.2; U; YB / 5.0.3; ru) Presto / 2.2.15 Версия / 10.10 "
б) кто берет
c) может брать не только внешние ресурсы- сайты ну и "сами у себя" (для нас это как правило менее интересно)
95.82.202.246 - - [30 / Окт / 2015: 12: 55: 35 +0300] "GET /components/com_jcomments/images/smiles/wink.gif HTTP / 1.1" 200 738 "http://www.test.ru /informatsiya/kak-obnovit.html "" Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, например Gecko) Chrome / 46.0.2490.80 Safari / 537.36 "
5) access_log.webstat, access_ssl_log.webstat - нет доступа - используется скриптом статистики, нам мало интересен.
6) не интересен - xferlog_regular.processed - записи о всех изменениях, внесенных с помощью FTP, xferlog_regular.processed - это журнал FTP-доступа к серверу.
6) mail.log - лог работы сервера по оправке почты - писем /
mail () на [/var/www/vhosts/u5.hosting.ru/veb.net/libraries/phpmailer/phpmailer.php:755]: Кому: alice@nm.ru - Заголовки: Дата: Чт, 5 ноября 2015 12:37:26 +0300 Return-Path: support@veb.net From: =? Utf-8? B? 0KHQutCw0LfQutC4INC00LvRjyDQtNC10YLQtdC5? = <Support @ veb.net> Ответить-To: =? Utf-8? B? 0KHQutCw0JDLfQutQut ? = < support@veb.net > Идентификатор сообщения: < d9d4e654a1f49b9dd7c5d1440750eba1@veb.net > X-Priority: 3 X-Mailer: PHPMailer 5.2.1 (http://code.google.com/a/apache-extras. org / p / phpmailer /) Версия MIME: 1.0 Кодировка передачи содержимого: 8 бит Тип содержимого: текст / html; charset = "utf-8"
SSL-сертификат (модуль поддержки SSL в Apache)
SSL (англ. Уровень защищенных сокетов) - криптографический протокол, подразумевает более безопасную связь. Он использует асимметричную криптографию для аутентификации ключей обмена, симметричное шифрование для сохранения данных, коды аутентификации сообщений для целостности сообщений.
Протокол SSL обеспечивает защищенный обмен данных за счет двух следующих элементов:
- Аутентификация
- Шифрование
SSL использует асимметричную криптографию для аутентификации ключей передачи, симметричный шифр для сохранения сообщений, коды аутентификации сообщений для целостности сообщений.
Протокол SSL предоставляет "безопасный канал", который имеет три основных свойства:
- Канал является частным . Шифрование используется для всех сообщений после простого диалога, который служит для определения секретного ключа.
- Канал аутентифицирован . Серверная сторона диалога всегда аутентифицируется, а клиентская делает это опционно.
- Канал надежен . Транспортировка сообщений включает в себя Проверка целостности.
Независимый протокол SSL является независимым от прикладного протокола. Протоколы приложений (HTTP, FTP, TELNET и т.д.) могут работать поверх протокола SSL совершенно прозрачно, т.е. SSL может согласовывать алгоритм шифрования и ключ сеанса, а также аутентифицировать сервер до того, как приложение примет или передаст первый байт сообщения.
____________________________
♴ II. Основы синтаксиса и командная консоль шелл (очень похожа на MS DOC, lunix):
Для анализа нужно скачать на официальном сайте шелловский бесплатный крошечный клиент putty.exe, заходим на сервер под основным логином - паролем аккаунта
✦ dir - листинг, просмотр текущего каталога
Примечание:
1. Что бы не набирать команду или тем более последовательность из командной длинной в целую страницу - их можно просто копировать со сайта, выделяешь строку команд, жмешь CTRL + C , а в черном командном интерфейсе шелл - клиент просто щелкаем Правой кнопкой мышки ( CTRL + V - здесь не работает) - строка сама вставляется, остается подправить вид-название лог-файла, его расположение (например, обрабатывать и во всех подпаках - "* /", и просто нажать ENTER .
2. Для повтора введенной команды стоя в интерфейсе клиента - можно стрелочками "вверх" - "вниз" перебрать вводимые ранее команды.
✦ cd .. - переход в предыдущий каталог;
✦ cd -переносит вас в ваш домашний каталог
✦ Кнопка на клавиатуре Print Screen - для остановки вывода листингов строк, " q " и " c " - для выхода- остановки
журналы компакт-диска
Скрипты
Вне зависимости где находимся:
- по всем доменам - под папкам кот * / access_log
- по всему коту * (- всем логам сразу - большая нагрузка - и долго)
- по всем логам * журнал *
-Топ пользователей по количеству процессов:
ps auxwww | awk '{print ($ 1)}' | сортировать | uniq -c | sort -n | хвост
Сколько чего запрашивается из ресурсов
ps auxwww | awk '{print ($ 11)}' | сортировать | uniq -c | sort -n | хвост
✦ - вверх .. по ссылке ниже ..
✦ Команда cat (сокращенно от «concatenate») является одной из наиболее часто используемых командой в Linux Unix-подобных систем. Команда cat позволяет создать один или несколько файлов, просмотреть содержание файлов, объединить файлы и перенаправить вывод в терминал или файлы.
✦ uniq - утилита Unix, с помощью которой можно вывести или отфильтровать повторяющиеся строки
Опции программы имеют следующие значения:
-u Выводить только те строки, которые не повторяются на входе.
-d Выводить только те строки, которые повторяются на входе.
-c Перед каждой строкой выводить число повторений этой строки на входе и один пробел.
✦ tail - утилита в UNIX, выводящая несколько (по умолчанию 10) последних строк из.
Ключ -n <количество строк> (или просто - <количество строк> ) позволяет изменить количество выводимых строк
✦ sort - UNIX ‐ утилита, выводящая сортировка
-n , --numeric-sort сравнивать численные значения строк
-r, --reverse сравнить результаты сравнения
✦ AWK - язык построчного разбора и обработки входного потока (например, текстового файла) - рассматривает входной поток как список записей. Каждая запись делится на поля.По умолчанию разделителем записей является символ новой строки. Разделителем полей - символ пробела или табуляции. Запись поочерёдно сравнивается со всеми шаблонами, и каждый раз, когда она соответствует шаблону, выполняется указанное действие.
________________
♵ III. Все логи
По размеру отсортированы - по мере важности - объема данных в них:
- access_log.processed
- access_log
- proxy_access_log
(в 10 раз меньше по размеру)