Разберем, как при помощи Python и коленки работать с серверными логами, разбитыми на множество файлов, обрабатывать большие файлы с логами, выявлять фейковых "ботов поисковиков", визуализировать полученные данные.
2. Логи - журнал, в который записывается информация о работе программы. Цели у
логирования могут быть разные, но чаще всего они нужны для контроля корректности
работы этой программы и поиска ошибок.
На вашем сервере могут храниться разные типы логов (логи БД, логи ошибок, почтовые
логи и т.д.), но нас интересуют access logs.
access.log - файл, в который пишется информация обращений к вашему сайту в
хронологическом порядке.
В error.log, соответственно, пишутся ошибки.
При этом на сервере может быть отключено логирование или ограничено какими-то
конкретными событиями или периодами времени (привет любителям дешевых Shared
хостингов).
Коротенечко про серверные логи
3. Где искать файл логов, его структура
access.log обычно можно найти на сервере в папке /logs/:
в корневой директории пользователя, в директории /var/ или /home/, в корне директории самого
сайта.
Типичная строка в access.log выглядит следующим образом:
1 - IP, с которого пришел запрос. 2 - дата и время запроса. 3 - тип запроса (link). 4 - URL запроса.
5 - код состояния HTTP (он же код ответа сервера). 6 - количество отданных сервером байт.
7 - Referrer (источник, инициатор) запроса. 8 - User-Agent
4. Что не так с логами и причем тут Python?
Логи содержат много мусора.
Чаще всего они разбиты на
несколько файлов по дням в .gz
архивах.
По сути это текстовый файл, где 1
строка = 1 запрос к серверу. Таких
строк на может быть много млн.
В логах содержатся сырые данные,
работа с которыми может исказить
наши выводы.
Python помогает
1. собрать все разрозненные данные в 1
файл;
2. извлечь из логов только нужную нам
информацию;
3. откинуть мусор в виде некорректно
записанных строк (да, и такое бывает)
или ложных запросов;
4. классифицировать, кластеризовать,
изменить или дополнить данными из
других источников;
5. визуализировать полученные данные
для получения ответов на наши вопросы.
5. Алгоритм работы с логами на Python
1. Собираем логи в один файл
2. Чистим от мусора или ненужных
данных, преобразуем и
запихиваем .csv файл.
3. Проводим дополнительную
кластеризацию (например, URL
по маске).
4. Получаем недостающие данные.
5. Анализируем доступными
инструментами.
6. Можно! Но в большинстве случаев это будет стоить 💰
● Tableau($)
● Kibana($) от Elastic или ее SaaS аналог - logz.io ($)
● JetOctopus ($)
● Screaming Frog SEO Log File Analyser($)
● PowerBI, Google Data Studio, Excel
● и еще огромное количество древнего и не очень софта
Большинство софта создано для визуализации данных (любых). И нам все еще нужно сделать
препроцессинг этих данных перед загрузкой.
➕ ВСЕГДА стороннее решение не сможет в полной мере соответствовать вашим хотелкам, если
“ваши вкусы очень специфичны, мистер Грей”
А можно не на Python?
7. Для работы нам понадобятся:
1. Python 3.7.x и старше (рекомендую сборку Anaconda). При установке прожимаем
галочку возле “abracadabra PATH”.
2. Сторонние библиотеки: pandas, matplotlib, ipaddress, shutil. Пишем в консоли:
pip install pandas, matplotlib, socket, ipaddress
Если выберете Anaconda, то большинство этих библиотек уже будет в сборке.
3. Редактор кода (Notepad++, Atom) или IDE (PyCharm) или Jupyter Notebook.
4. Датасет, он же файл(ы) серверных логов.
5. Руки или их аналоги, расположенные желательно не ниже талии.
Перед стартом
9. 1. Серверные логи - это не страшно и полезно
2. Python - это добро
3. Сырые данные - нужно готовить
4. Эмпирические исследования - наше все!
…
print(‘Hello world!’)
...
5. А еще:
- Googlebot не всегда Googlebot
- В логах можно найти URL, о которых не знает ваш краулер, но знает бот
ПС
- URL с кодом 200 не всегда URL с кодом 200 :)
Выводы
10. Виктор Дюбуа aka Drkwng Dck
Люблю работать с данными, пишу в TG
Спасибо за внимание!
https://www.facebook.com/victorduboisme/
https://t.me/drkwng
https://github.com/drkwng
iamdrkwng@gmail.com