Компания ХостТрекер является одним из лидеров рынка по предоставлению услуг мониторинга сайтов и различных веб сервисов. Она располагает множеством разнообразных инструментов, которые постоянно совершенствуются с учетом тенденций времени. Как появилась компания? Почему возникает потребность в мониторинге? Как он может помочь при разработке и тестировании сайтов и серверов? Этот обзор раскроет суть вопросов, а также покажет, как простое желание оптимизировать свою работу может трансформироваться в полезный для других продукт, а также как не утратить дух стартаперства и всегда шагать в ногу со своими клиентами.



Вступление, или история стартапа


Каждому, причастному к сфере ИТ, знакомо чувство, когда вроде бы идеально настроенный сервер (сайт, база, программа, сеть) вдруг перестают работать так, как надо. Поиск проблемы может занять долгое время, в течении которого, конечно же, это безобразие будет продолжаться. Или регулярно происходить. Или не будет происходить – но от этого только хуже: ибо когда же это непонятное нечто вылезет в другой раз? А если именно в момент передачи проекта клиенту? Где-то из таких размышлений и появился ХостТрекер. Его отец-основатель добивался хорошей работы от объектов своей основной деятельности, и решил автоматизировать процесс мониторинга. Если бы на тот момент (суровое начало нулевых) имелись надежно работающие сервисы мониторинга – вполне возможно, ХостТрекер никогда бы не появился. А так пришлось писать простенький скрипт для проверок своего зоопарка сайтов. Да вот беда – у простенького скрипта случались те же проблемы, что были упомянуты в начале этого абзаца. Он не всегда работал, и не всегда – правильно. Пришлось скрипт немного оптимизировать и сделать более надежным, в том числе путем дублирования и распределения на нескольких машинах. После череды оптимизаций пришла мысль, что это может быть полезным кому-то еще, и ХостТрекер стал публичным. А после появления множества клиентов – появилась идея монетизировать потраченные усилия. То есть появился наш сервис для решения сугубо личных задач, но в процессе развития стал доступен другим, чтобы помочь им решить те же проблемы, которые в свое время стояли перед нами. Не у всех же есть время написать простенький скрипт. А потом еще чуть-чуть дописать. А потом немного оптимизировать.

Мониторинг: суть


Эта часть обзора поведает о наиболее популярной функции – регулярная проверка для немедленного выявления возникающих проблем с сайтом или другой сущностью, доступной из сети. Эти проверки могут работать по разным протоколам: http(s), icmp (он же пинг), port (проверка любого порта по протоколу TCP) и некоторые другие. Для начала отметим, что есть разные подходы к мониторингу. Существует мониторинг внутренний — когда состояние сайта оценивается за счет ПО, размещенного на этом же сервере. Условно сюда можно отнести также такие инструменты, как Яндекс.Метрика — встраиваемый в код страницы скрипт отсылает информацию о клиентах, которые зашли на сайт, и может делать косвенные выводы о работоспособности сайта. Другой же тип мониторинга — внешний, или, как выражаются юристы, «мониторинг третьим лицом». Он состоит в имитировании захода на сайт реальными пользователями с реальных адресов, и делает выводы по настоящим ответам сервера на посылаемые запросы. Именно об этом методе далее и пойдет речь.

Инфраструктура, или как это устроено




Наиболее просто ее можно разделить на две составляющие: «внутреннюю» и «внешнюю». Первая размещена в облаке и состоит из вычислительных серверов, баз данных, файловых хранилищ и других компонентов. Все это принадлежит и управляется непосредственно сотрудниками компании ХостТрекер. Вторая составляющая – это ноды, или агенты, которые размещены по всему миру и выполняют роль независимых проверяющих серверов, наподобие «тайного покупателя» в магазинах. Они производят проверки сайтов и других проверяемых объектов путем создания стандартных для проверяемого протокола запросов. Если это проверка веб-сайта, то создаются обычные http запросы, которые ничем не отличаются от запросов реальных посетителей сайта. Эти сервера являются полностью независимыми друг от друга и от внутренней составляющей системы. Все, что они делают – это получают от центрального сервера список сайтов для проверки, и отдают ему результат проверок. Часть этих серверов арендуется ХостТрекером, но большинство же принадлежит партнерам, которые предоставляют их на бесплатной основе или же со значительной скидкой, взамен на обратные ссылки или скидки на наши услуги. Или просто по дружбе.

Такое распределение инфраструктуры обусловлено алгоритмом работы сервиса мониторинга.

Алгоритм работы сервиса


Регулярные проверки происходят с предопределенным клиентом интервалом, начиная от 1 минуты. Когда подходит время проверки, сервер посылает задание на один, случайно определенный, агент – часть внешней сети ХостТрекера. Он производит проверку по заданному протоколу и присылает назад ответ проверяемого сервера. Эти результаты обрабатываются уже на внутренней стороне. Если ответ положительный – ничего не происходит, просто появляется запись в базе (клиенту она доступна в виде лога проверок). Если же вдруг замечена ошибка – тогда немедленно создаются задания по проверке этого же сайта еще несколькими, опять же, случайно выбранными, серверами из общей сети. Тогда уже анализируется ответ всех этих серверов. Если ошибка не подтверждена большинством серверов – то это остается в логе, но сохраняется спокойствие. Всяко бывает: лаг сети, перегрузка запросами, хабраэффект, в конце концов. Если же большинство или все агенты подтверждают ошибку – тогда делается предположение, что беда наступила и проблема серьезнее – скорее всего, в этот момент много людей не могут попасть на сайт. А почти для всех коммерческих сайтов это уже прямая потеря денег.



Обработка ошибок и оповещение клиентов


В зависимости от настроек, после выявления проблемы может происходить множество разных вещей. Сразу же происходит первичная диагностика проблемы: записывается код ошибки, если есть, или ответ протокола. По этим данным часто можно строить догадки о причинах ошибки: сбой сети, ошибка сервера или что-либо еще. Но в первую очередь, как правило, клиент заинтересован в том, чтобы узнать о проблеме. Для этого существует возможность зарегистрировать свой телефон, электронную почту или другой канал коммуникации для получения оповещений от ХостТрекера. Они могут быть высланы разным людям, на разные контакты и в разное время. И здесь есть много интересных особенностей. Конечно, сообщение может быть отправлено немедленно, что чаще всего и делается. Но требовательного клиента этим трудно удовлетворить. Во-первых, оказывается, есть «неважные» сайты, по причине краткосрочного простоя которых некрасиво будить уважаемого админа. Во-вторых, есть «важные» люди, которых некрасиво беспокоить из-за каждого чиха. Поэтому ХостТрекер предлагает функцию эскалации оповещений – высылать оповещение на конкретный адрес только через некоторое время после падения сайта, если он к тому времени не самовосстановился. Также, для каждого контакта есть возможность создавать «рабочий график» — задавать временной интервал, в течении которого на него можно слать оповещения. В другое время ХостТрекер тревожить этого человека не будет. Это тоже оказалось удобным для некоторых клиентов. Например, данная конфигурация обеспечит оповещение этого человека с 8 до 19 часов в рабочие дни в тех случаях, когда сайт «лежит» час и более:


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

Комментарии (20)


  1. azsx
    10.08.2016 10:57
    +2

    Можно ли отслеживать отдачу страницы по http? То есть проверять, что страница сформировалась.


    1. smiHT
      10.08.2016 11:31
      +2

      Можно, функция называется «проверка контента». О ней будет рассказано в дальнейших частях обзора. Или вот из предыдущего есть на эту тему: https://habrahabr.ru/company/host-tracker/blog/260973/


  1. rockin
    10.08.2016 12:04
    +1

    Извините, а разве яндекс.метрика не тем же самым занимается (практически тем же самым, но разница, имхо, в доп. функциях, а не в основной — чек сайта на доступность и оповещение)?

    Причем, делает это БЕСПЛАТНО.

    Порадовала картинка с смс-оповещениями. В 2016 году, как мне кажется, сложно найти в России место, где будет приём смс, но не будет инета. Т.е. пуш-оповещение придёт также быстро, как и смс. Кому нужно смс-оповещение? :)


    1. smiHT
      10.08.2016 12:20

      Разница с Яндекс.Метрикой в том, что она судит о доступности сайта по работе скрипта, вмонтированного в сам сайт. Это упускает определенные типы ошибок. Кроме того, точность зависит от посещаемости (а для большинства сайтов она колеблется в течении суток — то есть и точность непостоянная). Я не говорю, что мы — однозначно лучше. Для некоторых задач вполне подходит Метрика, для других же лучше воспользоваться специальным сервисом мониторинга.
      По СМС — это всего лишь пример. Есть несколько других типов оповещений, о них детальнее будет написано в следующих частях. Но по поводу интернета это не совсем справедливо. Люди часто бывают в роуминге. По нашим данным, СМС сейчас является самым надежным и самым популярным (после емейла) способом оповещения для наших клиентов. Правда, у меня сейчас нет статистики отдельно по РФ — я сужу по глобальным показателям.


      1. rockin
        10.08.2016 12:35
        -1

        Можно узнать, какие именно типы ошибок?
        А то у меня помимо метрики есть физическая пинговалка по крону, небольшой баш-скрипт, который куда нужно долбится потихонечку и емейлы шлёт, если что.

        Если от этого скромного скрипта приходит оповещение, то это сигнал, что надо бросить всё и бежать к компу. Т.к. это не просто один сайт отвалился, это сервер в ауте (или коннект к нему, что одно и то же).
        Скрипт лежит на четырех впсках, расположенных в разных странах.

        ***
        СМС самым популярным? А голубями оповещения нет?

        ***
        Кстати говоря, «вмонтированность метрики в сайт» отвечает на вопрос самого первого комментария. Если метрика сработала, значит, страничка точно загрузилась.


        1. foxmuldercp
          10.08.2016 12:49

          Отсутствие метрики может подразумевать как отключение js на стороне броузера так и то, что отдаваться было нечему — скрипты метрики не подгрузились, страничка не загрузилась, cloudflare сказал клиенту «ты бот, пошёл вон отсюда»…


        1. smiHT
          10.08.2016 13:50

          Да, ваш сценарий вполне оправдывает себя. Где-то таким же образом и начинался ХостТрекер :) Но не у всех есть желание/возможность иметь 4 ВПСки в разных странах и не все хотят заморачиваться с написанием подобных скриптов. Это у нас во втором абзаце описано.

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

          Если метрика сработала — это не значит, что страница загрузилась полностью. А если не сработала — то может быть отключен javascript, например. Есть множество сценариев, и даже довольно маловероятные на практике периодически встречаются, по нашему опыту.


    1. Alexufo
      10.08.2016 23:47
      +2

      самый большой минус метрики проверка раз в пол часа, когда вас скорее через канальные отверстия достанут, uptimerobot меня пару лет практически в течение минуты сообщает о недоступности сайта.


  1. mihmig
    10.08.2016 12:13

    Мониторингов сейчас куча.
    но вот что-то никто не может сделать мониторинг доступности RDP-сервера, находящегося за NAT или port-mapping
    Не-не, телнетом на порт коннектиться не «пойдёт» — это не показатель, нужно именно знать что сервер принимает RDP-подключения (требует имя и пароль).


    1. smiHT
      10.08.2016 12:21

      Примем к сведению на будущее. Если очень горит — напишите в поддержку ht2support@host-tracker.com, всегда можно договориться.


    1. foxmuldercp
      10.08.2016 12:47

      С одной стороны да, с другой — у меня для этого есть агенты системцентра, нагиоса и оповещение изнутри сети


    1. simpleadmin
      10.08.2016 13:39
      +4

      сделайте сами, а-ля

      $ hydra -l USER -p PASSWORD -t 2 111.111.111.111 rdp | grep -F 'USER' || echo "alarm rdp" | mail -s "alarm rdp" alarm@example.com
      

      или я чего-то не понял в задаче?


  1. mihmig
    10.08.2016 12:43

    Вопрос всем кто мониторит сам или пользуется сервисами.
    Возьмём ситуацию:
    В течение 10 минут 4 раза пропало и появилось питание на маршрутизаторе (в промежутке между выключениями он успевает загрузиться и сервер становится доступен)
    Мне придёт 8 смс? Какие есть настройки для таких случаев?


    1. smiHT
      10.08.2016 13:53
      +1

      Могу сказать про наш сервис. Если настроены мгновенные оповещения — то действительно, придет 8 СМС, при интервале мониторинга 1 минута. Но если воспользоваться функцией эскалации оповещений — например, слать только если сайт лежит 5 минут и более — то может не прийти вовсе. Но в логах и статистике все будет, вы это. Если же интервал мониторинг больше — 2, 3 или 10 минут — то скорее всего, это также не будет замечено.


  1. maintlab
    10.08.2016 13:54

    и чем это все отличается от того же nagios, которым я давно мониторю сайты и сервера?


    1. smiHT
      10.08.2016 13:55

      Главное отличие — не нужно ставить ПО на свои сервера. Это облачный сервис.


      1. maintlab
        10.08.2016 14:15

        это получается не главное, а просто отличие. Nagios то же достаточно один на серваке, что на своем, что в дата-центре


        1. smiHT
          10.08.2016 14:22

          Но все-таки на сервере. А здесь полная независимость. Кроме того, есть люди, которые используют виртуальный хостинг для своих сайтов. Плюс наш сервис доступен даже далеким от ИТ людям.
          Если кратко — то на каждую проблему свой инструмент.


          1. simpleadmin
            10.08.2016 16:04
            +3

            Плюс наш сервис доступен даже далеким от ИТ людям.

            Это и есть «главное отличие»
            В остальном функционал вполне реализумый однострочниками закинутыми в крон.
            ping:
            $ ping -c 1 -t 10 ya.ru || echo "ALARM PING" | mail -s "alarm" alarm@example.com
            

            http (код ответа):
            $ curl -sI https://ya.ru | grep 'HTTP/1.1 200 Ok' || echo "STATUS" | mail -s "alarm" alarm@example.com
            

            http (ключевое слово):
            $ curl -s https://ya.ru | grep -F 'morda-logo' || echo "KEYWORD" | mail -s "alarm" alarm@example.com
            

            открытые порты:
            $ nmap -p 80 ya.ru | grep -F '80/tcp open  http' || echo "PORT" | mail -s "alarm" alarm@example.com
            
            уже вышеупомянутый rdp (которого нет на сайте, т.е. мы уже превзошли возможности сайта):
            $ hydra -l USER -p PASSWORD -t 2 111.111.111.111 rdp | grep -F 'USER' || echo "alarm rdp" | mail -s "alarm rdp" alarm@example.com
            

            и т.д. и т.п.

            Доавьте немного фантазии и 5-10 строчек кода и получите свой гибко/легко-конфигурируемый комбайн/велосипед не зависящий от неизвестно как работающего стороннего сервиса.

            Но, реальный плюс данных сервисов всё-таки есть — возможность сделать look со множества направлений. Но как по мне — это единственный плюс.


            1. dady_KK
              10.08.2016 23:00

              Мы что-то подобное с курлом организовали, только выполняется следующим образом, если ошибка — запускается цикл с заранее известным количеством итераций и с указанным заранее тайм-аутом проходят проверки, если до конца цикла коннект-таки происходит и ошибка исчезает, то ничего собственно и не выдаётся и это только по логам узнать можно, а если ошибка остаётся, то посылается уведомление — да свой велосипед, но мне кажется что такие вот моменты у многих компаний или просто вебмастеров/админов есть, хотя раньше платили денежку за подобный сервис