Поддерживаю один проект на bitrix, коробочное решение Интернет магазин + CRM. В один «прекрасный» момент вдруг заметили менеджеры, что уже несколько часов нет ни одного заказа. Проверил — так и есть, при открытии корзины где рассчитываются все доставки и оформляется заказ, страница открывается по 1-2 МИНУТЫ!!! Естественно клиенты не дожидаются и уходят. Виновник был быстро найден (один из модулей расчета стоимости доставки) и отключен. Он заработал снова, и мы его включили потом. Но это не дело-же, надо хотя бы мониторить. Все эти модули обычно написаны разными людьми / компаниями и при расчете обращаются к сторонним серверам, и если сервер лежит а в модуле не предусмотрели отлуп по таймауту — то ложится вся страница.
Начал искать, есть куча сервисов по мониторингу сайта, скорости загрузки страниц, но к сожалению, ни один из них не работает с полной отработкой javascript, ajax. Перерыл кучу старых библиотек под php, питон и кучу всего (мне надо было именно чтобы работало с linux. Потом нашел в сети несколько онлайн сервисов, которые умеют делать скриншоты сайтов. Думал уже сделать через них, но оказалось это не бесплатно да и зависеть от сторонних сервисов не хотелось. Решил тоже научится делать скрин сайта. Снова перелопатил кучу старых библиотек. Да, они работали, и обычные страницы сайта нормально скринились. Но вот корзина с добавленным в нее товаром — не отрабатывалась.
Потом нашел решение через гугл хром из командной строки. В общем вот простенькая инструкция чтобы не потерялось ну или кому будет интересно тоже.
Ставим гугл хом:
ubuntu
sudo apt-get install google-chrome-stable
centos7
wget https://dl.google.com/linux/direct/google-chrome-stable_curr...
sudo yum localinstall google-chrome-stable_current_x86_64.rpm
centos8
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
wget https://dl.google.com/linux/direct/google-chrome-stable_curr...
sudo yum localinstall google-chrome-stable_current_x86_64.rpm
Делаем скрин:
google-chrome-stable --allow-running-insecure-content --ignore-certificate-errors --ignore-urlfetcher-cert-requests --reduce-security-for-testing --no-sandbox --headless --disable-gpu --hide-scrollbars -screenshot="y1.png" --window-size=1200,2400 "https://yandex.ru/search/?text=test"
И соответственно через bash скрипт я уже использую эту команду для вычисления скорости ответ и полной загрузки страницы, затем уже через телеграм бота делаю аларм если что-то не так.
Одно я не смог победить. Не знаю, какой по умолчанию у гугл хрома срок ожидания ответа страницы для генерации скрина. В дополнительных ключах для его запуска этого тоже не нашел (чтобы поставить например ждать ответа не более 30 секунд).
PS: Кто надумает использовать это решение для того-же самого, не забудьте положить товар в корзину интернет магазина, и лишь затем уже дергать страницу оформления заказа.