Для чего нужен мониторинг? Обзор сервиса ХостТрекер
Вступление, или история стартапа
Каждому, причастному к сфере ИТ, знакомо чувство, когда вроде бы идеально настроенный сервер (сайт, база, программа, сеть) вдруг перестают работать так, как надо. Поиск проблемы может занять долгое время, в течении которого, конечно же, это безобразие будет продолжаться. Или регулярно происходить. Или не будет происходить –, но от этого только хуже: ибо когда же это непонятное нечто вылезет в другой раз? А если именно в момент передачи проекта клиенту? Где-то из таких размышлений и появился ХостТрекер. Его отец-основатель добивался хорошей работы от объектов своей основной деятельности, и решил автоматизировать процесс мониторинга. Если бы на тот момент (суровое начало нулевых) имелись надежно работающие сервисы мониторинга — вполне возможно, ХостТрекер никогда бы не появился. А так пришлось писать простенький скрипт для проверок своего зоопарка сайтов. Да вот беда — у простенького скрипта случались те же проблемы, что были упомянуты в начале этого абзаца. Он не всегда работал, и не всегда — правильно. Пришлось скрипт немного оптимизировать и сделать более надежным, в том числе путем дублирования и распределения на нескольких машинах. После череды оптимизаций пришла мысль, что это может быть полезным кому-то еще, и ХостТрекер стал публичным. А после появления множества клиентов — появилась идея монетизировать потраченные усилия. То есть появился наш сервис для решения сугубо личных задач, но в процессе развития стал доступен другим, чтобы помочь им решить те же проблемы, которые в свое время стояли перед нами. Не у всех же есть время написать простенький скрипт. А потом еще чуть-чуть дописать. А потом немного оптимизировать.
Мониторинг: суть
Эта часть обзора поведает о наиболее популярной функции — регулярная проверка для немедленного выявления возникающих проблем с сайтом или другой сущностью, доступной из сети. Эти проверки могут работать по разным протоколам: http (s), icmp (он же пинг), port (проверка любого порта по протоколу TCP) и некоторые другие. Для начала отметим, что есть разные подходы к мониторингу. Существует мониторинг внутренний — когда состояние сайта оценивается за счет ПО, размещенного на этом же сервере. Условно сюда можно отнести также такие инструменты, как Яндекс.Метрика — встраиваемый в код страницы скрипт отсылает информацию о клиентах, которые зашли на сайт, и может делать косвенные выводы о работоспособности сайта. Другой же тип мониторинга — внешний, или, как выражаются юристы, «мониторинг третьим лицом». Он состоит в имитировании захода на сайт реальными пользователями с реальных адресов, и делает выводы по настоящим ответам сервера на посылаемые запросы. Именно об этом методе далее и пойдет речь.
Инфраструктура, или как это устроено
Наиболее просто ее можно разделить на две составляющие: «внутреннюю» и «внешнюю». Первая размещена в облаке и состоит из вычислительных серверов, баз данных, файловых хранилищ и других компонентов. Все это принадлежит и управляется непосредственно сотрудниками компании ХостТрекер. Вторая составляющая — это ноды, или агенты, которые размещены по всему миру и выполняют роль независимых проверяющих серверов, наподобие «тайного покупателя» в магазинах. Они производят проверки сайтов и других проверяемых объектов путем создания стандартных для проверяемого протокола запросов. Если это проверка веб-сайта, то создаются обычные http запросы, которые ничем не отличаются от запросов реальных посетителей сайта. Эти сервера являются полностью независимыми друг от друга и от внутренней составляющей системы. Все, что они делают — это получают от центрального сервера список сайтов для проверки, и отдают ему результат проверок. Часть этих серверов арендуется ХостТрекером, но большинство же принадлежит партнерам, которые предоставляют их на бесплатной основе или же со значительной скидкой, взамен на обратные ссылки или скидки на наши услуги. Или просто по дружбе.
Такое распределение инфраструктуры обусловлено алгоритмом работы сервиса мониторинга.
Алгоритм работы сервиса
Регулярные проверки происходят с предопределенным клиентом интервалом, начиная от 1 минуты. Когда подходит время проверки, сервер посылает задание на один, случайно определенный, агент — часть внешней сети ХостТрекера. Он производит проверку по заданному протоколу и присылает назад ответ проверяемого сервера. Эти результаты обрабатываются уже на внутренней стороне. Если ответ положительный — ничего не происходит, просто появляется запись в базе (клиенту она доступна в виде лога проверок). Если же вдруг замечена ошибка — тогда немедленно создаются задания по проверке этого же сайта еще несколькими, опять же, случайно выбранными, серверами из общей сети. Тогда уже анализируется ответ всех этих серверов. Если ошибка не подтверждена большинством серверов — то это остается в логе, но сохраняется спокойствие. Всяко бывает: лаг сети, перегрузка запросами, хабраэффект, в конце концов. Если же большинство или все агенты подтверждают ошибку — тогда делается предположение, что беда наступила и проблема серьезнее — скорее всего, в этот момент много людей не могут попасть на сайт. А почти для всех коммерческих сайтов это уже прямая потеря денег.
Обработка ошибок и оповещение клиентов
В зависимости от настроек, после выявления проблемы может происходить множество разных вещей. Сразу же происходит первичная диагностика проблемы: записывается код ошибки, если есть, или ответ протокола. По этим данным часто можно строить догадки о причинах ошибки: сбой сети, ошибка сервера или что-либо еще. Но в первую очередь, как правило, клиент заинтересован в том, чтобы узнать о проблеме. Для этого существует возможность зарегистрировать свой телефон, электронную почту или другой канал коммуникации для получения оповещений от ХостТрекера. Они могут быть высланы разным людям, на разные контакты и в разное время. И здесь есть много интересных особенностей. Конечно, сообщение может быть отправлено немедленно, что чаще всего и делается. Но требовательного клиента этим трудно удовлетворить. Во-первых, оказывается, есть «неважные» сайты, по причине краткосрочного простоя которых некрасиво будить уважаемого админа. Во-вторых, есть «важные» люди, которых некрасиво беспокоить из-за каждого чиха. Поэтому ХостТрекер предлагает функцию эскалации оповещений — высылать оповещение на конкретный адрес только через некоторое время после падения сайта, если он к тому времени не самовосстановился. Также, для каждого контакта есть возможность создавать «рабочий график» — задавать временной интервал, в течении которого на него можно слать оповещения. В другое время ХостТрекер тревожить этого человека не будет. Это тоже оказалось удобным для некоторых клиентов. Например, данная конфигурация обеспечит оповещение этого человека с 8 до 19 часов в рабочие дни в тех случаях, когда сайт «лежит» час и более:
В дальнейших публикациях мы опишем множество функций сервиса, которые накопились на текущий момент. Параллельно будут упомянуты истории их появления и разработки, примеры использования и множество других вещей из нашего скромного опыта. Сейчас же позволю себе отметить, что одной из отличительных особенностей сервиса является ориентация на клиента. Множество функций сервиса были разработаны по запросу клиентов, друзей и партнеров, что позволило им решить специфические технические задачи, решение которых своими силами требовало бы намного больших ресурсов. Поэтому мы всегда рады обратной связи и вашим предложениям!
Комментарии (9)
10 августа 2016 в 10:57
+2↑
↓
Можно ли отслеживать отдачу страницы по http? То есть проверять, что страница сформировалась.10 августа 2016 в 11:31
+1↑
↓
Можно, функция называется «проверка контента». О ней будет рассказано в дальнейших частях обзора. Или вот из предыдущего есть на эту тему: https://habrahabr.ru/company/host-tracker/blog/260973/
10 августа 2016 в 12:04
+2↑
↓
Извините, а разве яндекс.метрика не тем же самым занимается (практически тем же самым, но разница, имхо, в доп. функциях, а не в основной — чек сайта на доступность и оповещение)?Причем, делает это БЕСПЛАТНО.
Порадовала картинка с смс-оповещениями. В 2016 году, как мне кажется, сложно найти в России место, где будет приём смс, но не будет инета. Т.е. пуш-оповещение придёт также быстро, как и смс. Кому нужно смс-оповещение? :)
10 августа 2016 в 12:20
0↑
↓
Разница с Яндекс.Метрикой в том, что она судит о доступности сайта по работе скрипта, вмонтированного в сам сайт. Это упускает определенные типы ошибок. Кроме того, точность зависит от посещаемости (а для большинства сайтов она колеблется в течении суток — то есть и точность непостоянная). Я не говорю, что мы — однозначно лучше. Для некоторых задач вполне подходит Метрика, для других же лучше воспользоваться специальным сервисом мониторинга.
По СМС — это всего лишь пример. Есть несколько других типов оповещений, о них детальнее будет написано в следующих частях. Но по поводу интернета это не совсем справедливо. Люди часто бывают в роуминге. По нашим данным, СМС сейчас является самым надежным и самым популярным (после емейла) способом оповещения для наших клиентов. Правда, у меня сейчас нет статистики отдельно по РФ — я сужу по глобальным показателям.10 августа 2016 в 12:35 (комментарий был изменён)
0↑
↓
Можно узнать, какие именно типы ошибок?
А то у меня помимо метрики есть физическая пинговалка по крону, небольшой баш-скрипт, который куда нужно долбится потихонечку и емейлы шлёт, если что.Если от этого скромного скрипта приходит оповещение, то это сигнал, что надо бросить всё и бежать к компу. Т.к. это не просто один сайт отвалился, это сервер в ауте (или коннект к нему, что одно и то же).
Скрипт лежит на четырех впсках, расположенных в разных странах.***
СМС самым популярным? А голубями оповещения нет?***
Кстати говоря, «вмонтированность метрики в сайт» отвечает на вопрос самого первого комментария. Если метрика сработала, значит, страничка точно загрузилась.
10 августа 2016 в 12:13
0↑
↓
Мониторингов сейчас куча.
, но вот что-то никто не может сделать мониторинг доступности RDP-сервера, находящегося за NAT или port-mapping
Не-не, телнетом на порт коннектиться не «пойдёт» — это не показатель, нужно именно знать что сервер принимает RDP-подключения (требует имя и пароль).10 августа 2016 в 12:21
0↑
↓
Примем к сведению на будущее. Если очень горит — напишите в поддержку ht2support@host-tracker.com, всегда можно договориться.10 августа 2016 в 12:47
0↑
↓
С одной стороны да, с другой — у меня для этого есть агенты системцентра, нагиоса и оповещение изнутри сети
10 августа 2016 в 12:43
0↑
↓
Вопрос всем кто мониторит сам или пользуется сервисами.
Возьмём ситуацию:
В течение 10 минут 4 раза пропало и появилось питание на маршрутизаторе (в промежутке между выключениями он успевает загрузиться и сервер становится доступен)
Мне придёт 8 смс? Какие есть настройки для таких случаев?