Access-логи сайта для seo: автоматический анализ и отправка отчетов в Telegram
В данной статье описан пошаговый мануал по скачиванию логов с сервера, их объединении и парсинге с помощью Python, а также формирование необходимых отчетов с последующей отправкой в Telegram. Подробные комментарии приведены в коде соответствующих скриптов.
В предыдущей статье “Набор Python-скриптов для автоматизации seo задач” я уже затрагивал тему анализа access-логов сайта в целях seo-оптимизации. В данной статье не будет подробного описания, что такое логи и для чего их анализировать. В качестве теории приведу несколько ссылок на ресурсы, которые встречал за последнее время:
- Анализ логов сайта с помощью Power BI: пошаговая инструкция
- подборка статей Log Analyzer на сайте https://jetoctopus.com
- Анализ логов сервера
Данный подход будет полезен для изучения логов больших сайтов (от 1 млн. строк). Преимущества подхода: делаем свой бесплатный инструмент с кастомными отчетами.
Работа над логами будет проходить в несколько этапов:
- Скачивание отчетов и их разархивирование
- Обработка log-файлов, формирование csv для последующего анализа. Построение отчетов
- Настройка cron
- Отправка отчетов в Telegram (Отправка по команде. Отправка по расписанию)
Каждый этап вынесен в отдельный скрипт, который отрабатывает в установленное время на выделенном сервере по cron.
Ссылка на проект https://github.com/zilista/access_logs_analitics.git
Скачивание отчетов и их разархивирование
Логи анализируемого сайта в моем случае хранятся на выделенном сервере в виде gz архивов.
Подход по скачиванию файлов, представленный в данной части, индивидуален, и предназначен для работы конкретного анализируемого сайта. Однако, часть рассмотренных подходов поможет вам настроить получение файлов для вашего сайте.
Задача данного скрипта каждый день в 23:55 скачивать с сервера и разархивировать логи за последние 7 дней.
Ссылка на скрипт – download_unzip_logs.py
Обработка log-файлов, формирование csv для последующего анализа. Построение отчетов.
Следующим шагом будет предобработка получившихся лог-файлов, построение и сохранение отчетов. Предобработка файлов заключается в их склейке, парсинге нужных полей и сохранении в csv.
Важно отметить, что большая часть отчетов, например, отчет по посещаемым разделам, также формируется для конкретного сайта, поэтому не забываем перестроить отчет под анализируемый проект.
В результате работы данного скрипта получаем csv файл с распарсенными логами (в моем случае анализируемый файл получился 644 MB) и набор сохраненных отчетов, которые будем использовать в дальнейшем для отправки.
Примеры отчетов
Посещение всего сайта по дням YandexBot
Посещение страниц определенного раздела со статус-кодом 200 по дням YandexBot
Общее распределение статус кодов по выбранному списку ботов
Распределение статус кодов 4xx-5xx YandexBot за весь период
Ссылка на скрипт – create_log_files.py
Настройка cron
Для ежедневного обновления файлов и отчетов настраиваем работу скриптов по cron. Настройки cron для 2-х предыдущих скриптов:
На данном этапе важно задать PATH вашего виртуального окружения и правильно определить время, в которое будут отрабатывать скрипты. Предварительно необходимо сделать скрипты исполняемыми.
P.S:
- Советую обратить внимание на настройки часового пояса сервера, который вы используете.
- В случае если ваши скрипты не отработали, ошибки можно посмотреть в файлах куда был перенаправлен вывод (в примере выше /tmp/out_log).
Отправка отчетов в Telegram
Для отправки отчетов будем использовать библиотеку pyTelegramBotAPI. Для работы будет достаточно примеров из документации. Ниже указаны два варианта отправки сформированных отчетов:
- Отправка по команде
- Отправка по расписанию
Предварительно для работы потребуется создать telegram бота и получить токен. Для этого используем BotFather и команду «/newbot».
Материалы по теме:
Отправка по команде
В скрипте бот слушает текстовые команды в бесконечном цикле и в ответ отправляет отчеты в чат по id. Чтобы узнать id чата, после запуска скрипта и отправки стартового сообщения, выведите ответ командой:
Для работы бота будем использовать обработчик текстовых сообщений. Внутри функции get_text_messages пропишем if-else условия для обработки необходимых команд.
В финале запустим скрипт на сервере в фоновом режиме:
Ссылка на скрипт – send_telegram.py
Отправка по расписанию
В дополнение к отправке отчета по требованию можно настроить отправку важных отчетов по расписанию. Для этого будем использовать библиотеку schedule. Для отправки воспользуемся командой:
Скрипт также запускаем в фоне.
Ссылка на скрипт – schedule_send_telegram.py
Варианты расширения функционала
Во всех скриптах, рассмотренных выше, приведены примеры наиболее универсальных отчетов, которые помогут построить нужный отчет.
Также можно расширить функционал скрипта следующими возможностями:
1. Добавление информации о визитах с помощью API-метрики. Чтобы скачать данные из метрики полностью, можно воспользоваться скриптом.
Примеры отчетов:
- Визиты ботов на трафиковые/не трафиковые страницы
- Распределение количества визитов в зависимости от трафика.
2. Установка на сервере консольной версии Screaming Frog SEO Spider и парсинг сайта по расписанию/разово. Аналогично п.1 добавляем информацию к имеющимся данным, строим интересующие отчеты о:
- Не посещаемых страницах ботом
- Посещаемых ботами страницах, но не найденных в структуре
3. Проверка поисковых ботов обратным DNS запросом.
А чтобы добавили вы?
Владислав , зачем это ?
Ведь есть джетоктопус.
Также в статье лучше рассказать как использовать полученные данные , а не то, как их получить
Согласен, инструменты есть, особенно платные. Но в данном случае интересно было решить задачу своими силами.