company_banner

Ручной мониторинг доступности сайта (обзор простых инструментов)



    После покупки виртуального и/или выделенного сервера важно вовремя получать информацию о недоступности сервиса, то есть проводить мониторинг основных подсистем веб-сайта.

    Надежный веб-сайт должен быть легкодоступен для пользователей 7 дней в неделю, поэтому его надо постоянно проверять как на предмет доступности, так и на предмет работоспособности:

    • регулярная самостоятельная проверка работоспособности веб-сайта с помощью бесплатных инструментов;
    • постоянный мониторинг доступности сайта, оптимальным для которого является часовой интервал: большинство пользователей попытаются вернуться на сайт в течение 1-2 часов, более частые проверки не гарантируют более оперативного исправления проблем быстрее, чем в течение часа;
    • мониторинг компонентов проекта и анализ метрик приложений: скорости ответа, ошибок компонентов, сервисов, скорость ответов базы данных, мониторинг запросов без индексов или медленных запросов;
    • мониторинг производительности веб-сайта: медленная загрузка страниц может стоить потери клиентов, в то время как в результате мониторинга приходит своевременное уведомление о проблемах, позволяющее оперативно их устранять и минимизировать последствия;
    • мониторинг проблем заключается в отслеживании нескольких параметров сайта с частотой не менее раза в минуту из нескольких географических точек, для того чтобы максимально покрыть минутный интервал проверками и отследить возможные проблемы, связанные с географией пользователей.

    Среди возможных критериев проверки можно выделить следующие проблемы:

    • с DNS-сервером (когда в определенные интервалы времени адрес сайта не может быть определен, хотя сам сайт физически доступен);
    • с большим временем ответа (при обновлении кэша, например, или при выполнении «тяжелых» задач на стороне сервера);
    • с плановым выполнением задач (в результате которых сайт будет не доступен только в определенные моменты времени);
    • с большим времени ожидания статических файлов (например, из-за сетевой инфраструктуры или проблем с физическим носителем);
    • с подключением к базе данных.

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

    Работа сайта в выходные/сезон отпусков


    Есть задача: веб-сайт/сервер/сервис должен работать непрерывно несколько дней без человеческого вмешательства. Что может пойти не так?

    Обычные сбои время от времени случаются сами по себе. Только вот ночной сбой со вторника на среду решается перезаливом с бэкапа в среду утром. А на выходных нередки сбои «с пятницы на понедельник». Сколько в таком случае может лежать сайт во время праздников, зависит от длительности отпуска ответственных сотрудников.

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

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

    Кроме обычных проблем, сайты во время длительного отсутствия бдительных стражей любят также подхватить и другие недуги. Например, может закончиться срок действия домена или сертификата. Или надумает растолстеть база данных. Или он может угодить в списки DNSBL или Роскомнадзора.

    Черные списки DNSBL


    Важной функцией является проверка доменов в черных списках DNSBL (DNS blacklist или DNS blocklist) — списки хостов, хранимые с использованием системы архитектуры DNS. Обычно используются для борьбы со спамом.

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

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

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

    Онлайновые черные списки DNSBL, например, antispamsniper.com или syslab.ru, позволяют фильтровать спам, используя DNS для доступа к базам спамерских IP адресов.

    Для проверки наличия заданного IP адреса в черных списках введите IP адрес (ваш текущий IP адрес указывается по умолчанию) и нажмите кнопку Проверить.

    Защита от DDoS-атак


    Если от доступности веб-сайта зависит прибыль, то следует подготовить его к возрастающим нагрузкам (например, во время сезонных распродаж или Черной пятницы) и возможным атакам конкурентов и/или злоумышленников, которые рассчитывают на увеличение времени отклика веб-сайта на входящие запросы или на частичную/полную недоступность.

    Планирование технических работ


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

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

    Рекомендуется проводить плановые работы во время заметного уменьшения (редуцирования) клиентского трафика, а также во время отсутствия пиковой загрузки полосы пропускания.

    Мониторинг срока действия домена и SSL-сертификата


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

    Проверка срока действия домена


    Проверить домен бесплатно можно с помощью сервиса nic.ru.

    Проверить время действия домена  бесплатно можно с помощью сервиса Whois Service.

    Проверка срока действия SSL-сертификата


    Выполните следующую команду из командной строки в Linux, чтобы узнать срок действия SSL сертификата, с помощью openssl:
    $ echo | openssl s_client -servername ИМЯ -connect ХОСТ:ПОРТ 2>/dev/null | openssl x509 -noout -dates
    

    Помимо срока действия, SSL сертификат содержит много интересной информации. Каждый SSL сертификат содержит информацию о том, кем он был выдан, кому он выдан, его срок действия и прочее.

    Все эти данные могут быть извлечены из SSL сертификата сайта с помощью программы openssl из командной строки в Linux.

    Проверить кто выдал SSL сертификат:
    $ echo | openssl s_client -servername site.com -connect site.com:443 2>/dev/null | openssl x509 -noout -issuer
    issuer= /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
    

    Проверить кому выдан SSL сертификат:
    $ echo | openssl s_client -servername site.com -connect site.com:443 2>/dev/null | openssl x509 -noout -subject
    subject= /CN=www.site.com
    

    Показать всю перечисленную выше информацию об SSL сертификате одной командой:
    $ echo | openssl s_client -servername site.com -connect site.com:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates
    issuer= /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
    subject= /CN=www.site.com
    notBefore=Mar 18 10:55:00 2017 GMT
    notAfter=Jun 16 10:55:00 2017 GMT
    

    Мониторинг доступности сайта


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

    Вы легко можете проверить доступность сайта из командной строки в Linux и получить от сервера код со статусом HTTP, с помощью таких команд как TELNET или CURL.

    Доступность сайта с помощью CURL


    Выполните следующую команду для проверки доступности сайта и получения сообщения со статусом от сервера:

    $ curl -Is http://www.site.com | head -1
    HTTP/1.1 200 OK
    

    Статус код ‘200 OK’ означает что запрос был успешно выполнен и сайт доступен.

    Вот еще один пример, который показывает как curl отображает разные ответы сервера:

    $ curl -Is http://site.com | head -n 1
    HTTP/1.1 301 Moved Permanently
    

    Также с помощью curl можно проверить доступность отдельной страницы на сайте, например:

    $ curl -Is http://www.site.com/en/Bash-Colors | head -n 1
    HTTP/1.1 200 OK
    

    Доступность сайта с помощью TELNET


    Вы также можете проверить доступность сайта и получить сообщения со статусом от сервера с помощью команды telnet:

    $ telnet www.site.com 80
    Trying 91.206.200.119...
    Connected to www.site.com.
    Escape character is '^]'.
    HEAD / HTTP/1.0
    HOST: www.site.com
    <НАЖМИТЕ ENTER>
    <НАЖМИТЕ ENTER>
    

    Вывод, означающий, что сайт доступен, будет выглядеть следующим образом:

    HTTP/1.1 200 OK
    Server: nginx/1.1.10
    Date: Sun, 26 May 2017 19:29:46 GMT
    ***
    

    В заключении хочется отметить, что всегда есть вариант написать свой скрипт для проверки аптайма на PHP или Perl, или можно создать телеграм-бота для рассылки уведомлений, но подсчитав дневной доход с веб-сайтов и соотнеся его со стоимостью мониторинга, чаще дешевле использовать платные сервисы типа PagerDuty.

    Полезные статьи со обзорами сервисов мониторинга:

    Selectel
    ИТ-инфраструктура для бизнеса

    Похожие публикации

    Комментарии 17

      +1
      Плюсанул за динозаврика, а что что-то давно его не было.
        0
        Статья больше напоминает — «Как себе найти работу на выходных», Ни слова про системы мониторинга(Nagios, Zabbix, Cacti...), разово настроенные экономят кучу времени.
          –2
          Спасибо за дополнительно указанные системы мониторинга.

          Увы, лично с ними не работала, посему их нет в обзоре.
            –1
            И очень зря, все, что вы делаете вручную можно автоматизировать и только получать отчёты о проблемах. Развернуть можно на самом дешевом ВПС
              0
              Да, я в курсе, что мониторинг можно автоматизировать.
              В рамках одной статьи крайне сложно охватить все подряд. Данная статья носит обзорный характер.
              +4

              Вам из отдела продаж за повинность сослали тех. статьи на хабр писать? Или как можно писать про мониторинг не о работав с системами мониторинга?

                0

                Вас*, извиняюсь за автоисправление. Не нашел в мобильной версии сайта как исправить комментарий.

                  0
                  Я не работала именно с вышеперечисленными системами: «Nagios, Zabbix, Cacti».
                  0

                  Меня куда больше удивило количество плюсов, поставленных столь бестолковой статье.

                    0
                    Что бестолкового в статье с вашей точки зрения? Я буду благодарна за конструктивную критику, дабы в дальнейшем не допускать подобных ошибок.
                      0

                      Почти всё, к сожалению.


                      С заголовка: описанное в «статье» — это не мониторинг. В лучшем случае это может быть ручным мониторингом, если вы делаете проверки по расписанию и наказываете себя при несделанной проверке. Т.е. с некоторой натяжкой можно сказать, что описаны ручные проверки доступности простого сайта. Кроме того, если говорить про мониторинг, то он должен осуществляться 24х7, а не только в выходные как намекает нам заголовок.


                      Далее, большая часть текста — вода и общие слова. Но их разбирать мне уже несколько лень.


                      Большая часть упражнений с openssl x509 заменяется на openssl x509 -noout -text.


                      Если вы говорите о мониторинге (в контексте linux-серверов, как минимум), но ни разу не слышали про nagios или zabbix, то вы ничего не знаете, и не стоит переводить бумагу и чужое время.


                      Мой совет — не пишите статьи. Сначала почитайте чужие, вместе с комментариями.

                        0
                        Спасибо! Да, вероятно, с заголовком я дала маху. Исправила.

                        Буду учиться.
              –1
              Хабр уже не торт (С)
                +1
                чтобы узнать срок действия SSL
                echo | openssl s_client -servername ИМЯ -connect ХОСТ: ПОРТ 2>/dev/null | openssl x509 -noout -dates


                Проверить срок годности SSL сертификата
                echo | openssl s_client -servername site.com -connect site.com:443 2>/dev/null | openssl x509 -noout -dates


                Считаю это одно и тоже.
                  0
                  Спасибо! Исправлю.
                  0
                  > Я не работала именно с вышеперечисленными системами: «Nagios, Zabbix, Cacti»
                  извиняюсь за нескромный вопрос — а с чем же вы тогда работали?

                  P.S.
                  то, что описано в статье подойдет разве что для мониторинга за домашним сайтом, имхо
                    0
                    Да, я работала только с маленькими, зачастую не приносящими прибыли, сайтами. Для отслеживания проблем с собственным сайтом мне было достаточно вышеописанных технологий. Для больших систем, несомненно, используются другие методы.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое