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

monitoring

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

Надежный веб-сайт должен быть легкодоступен для пользователей 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-атак

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

Для страховки рисков недоступности сайта можно воспользоваться услугой Защита от 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 -dates
notBefore=Mar 18 10:55:00 2017 GMT
notAfter=Jun 16 10:55:00 2017 GMT

Показать всю перечисленную выше информацию об 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
***

Доступность сайта из географически распределенных точек

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

Подробнее о доступных типах проверок читайте в нашей базе знаний.

Заключение

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

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