Мониторим сайты со смартфона 24/7

Небольшая предыстория.

Началась эта история наверное с месяц назад, а ее предыстория еще раньше =). Я ехал в электричке домой и листал страницы хабра, а может и 4pda, точно сейчас не вспомню. И вот мне на глаза попалась простенькая, но довольно занятная софтинка, все то она умеет делать это выводить на экран смартфона с android 2.3+ виджет, а данные для виджета принимать в json формате от удаленного скрипта.

— интересно!
— надо брать!

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

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

Но даже не это подтолкнуло меня на написание мини программки которую я упомянул в заголовке поста. Пинок под зад дал наш старший менеджер Лилия, сказав всего одну фразу — «А ведущий программист мог бы и мониторить топовые сайты...».

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

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

Версия 1.0

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

Вроде все просто и понятно, первую версию монитора я набросал на коленке уже через пару дней.

В версии 1.0 виджет просто обращался к.php скрипту, расположенному на моем хосте. В скрипт были вшиты адреса сайтов которые нужно мониторить, сама проверка осуществлялась достаточно просто, скрипт обращался к заданным сайтам и проверял статус который отдает сервер. Если приходил 200 ОК, то все тип-топ, сайт работает и можно спать спокойно.

Версия 2.0

Я рассказал о скрипте нашему тех диру и тут стало ясно что в таком виде монитор и гроша не стоит. Во первых статус 200 ОК можно получить и в том случаи если сайта нет, его там физически может не быть, но страница прогрузится, допустим сервер отдаст обычную.html заглушку. Во вторых сайт может работать на кеше (а это уже бывало), надо заметить что в этом случае нам и метрика не поможет т. к. ее код тоже прогрузится и яндекс будет считать что все окей.

Чтобы на 100% определить работоспособность сайта, в нашем случае базирующегося на 1 °C-Bitrix, нужно пройти http авторизацию, только это может ответить на вопрос — «работает ли сайт в полной мере?».

Ну что же, вызов принят, нужно сделать версию 2.0!

Так получилось что в четверг я рано вернулся домой, делать было особо нечего и я решил заняться скриптом. Первым делом я разобрал вопрос http авторизации, я точно помнил что 1С-УТ при синхронизации с сайтом проходит такую авторизацию, следовательно метод можно было подсмотреть именно там. Почитав доки и порыскав в интернете я нашел практически рабочий вариант запроса, протестировал его, немного видоизменил и добавил в свой скрипт мониторинга.

Ну что же, теперь мы можем авторизоваться на сайте просто через _GET запрос, отлично!

Отправляем запрос, ловим 200 ОК + еще один заголовок, писать его не стану, но он говорит о том что пользователь успешно авторизовался в системе. Следовательно если авторизация не удалась, скрипт вернет false! Также я предусмотрел вариант проверки и без введения логина/пароля, но в этом случаи сайт считается статичным, а скрипт проверяет статус запроса к файлу robots.txt, роботс я выбрал потому что он по умолчанию есть, или должен быть у каждого сайта =).

Что дальше? Дальше я подумал что вывода предупреждения на экран мобильника мало и добавил функцию отправки писем с тревожными сообщениями.

User friendly.

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

Первый скрин — настройки виджета.

В поле url нужно поместить строку вида [адрес скрыт из соображений безопасности].php?mail=ВАШ_EMAIL&site1=ИМЯ_САЙТА|URL_САЙТА|ЛОГИН|ПАРОЛЬ

Все по порядку.

В параметре [mail] передается email на который нужно отправлять сообщения о проблемах с сайтом.

В параметре [site_n] передаются настройки для мониторинга конкретного сайта.

Первый параметр (обязательный) — имя сайта, его будет видно в виджете (левая колонка).
Второй параметр (обязательный) — url сайта, можно указывать с http:// или без.
Третий параметр (необязательный) — логин для авторизации на сайте.
Четвертый параметр (необязательный) — пароль для авторизации на сайте.

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

Второй скрин — сам виджет.

Эпилог

Особой практической надобности в данном скрипте сейчас нету, не так давно в 1С-БУС встроили собственный мониторинг, он висит в облаке и присматривает за сайтом, а в случаи неполадок отправляет тревожные мессенджи администраторам ресурса. Но во первых я получил опыт, во вторых лишних систем предупреждения не бывает, а в третьих у меня теперь есть виждет)).

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