После покупки виртуального и/или выделенного сервера важно вовремя получать информацию о недоступности сервиса, то есть проводить мониторинг основных подсистем веб-сайта.
Надежный веб-сайт должен быть легкодоступен для пользователей 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.
Полезные статьи со обзорами сервисов мониторинга:
Комментарии (17)
Redaicd
26.06.2017 17:15Статья больше напоминает — «Как себе найти работу на выходных», Ни слова про системы мониторинга(Nagios, Zabbix, Cacti...), разово настроенные экономят кучу времени.
Chamellion
26.06.2017 17:17-2Спасибо за дополнительно указанные системы мониторинга.
Увы, лично с ними не работала, посему их нет в обзоре.Redaicd
26.06.2017 18:08-1И очень зря, все, что вы делаете вручную можно автоматизировать и только получать отчёты о проблемах. Развернуть можно на самом дешевом ВПС
Chamellion
26.06.2017 19:40Да, я в курсе, что мониторинг можно автоматизировать.
В рамках одной статьи крайне сложно охватить все подряд. Данная статья носит обзорный характер.
TaHKucT
26.06.2017 19:05+4Вам из отдела продаж за повинность сослали тех. статьи на хабр писать? Или как можно писать про мониторинг не о работав с системами мониторинга?
TaHKucT
26.06.2017 19:08Вас*, извиняюсь за автоисправление. Не нашел в мобильной версии сайта как исправить комментарий.
Chamellion
26.06.2017 19:39Я не работала именно с вышеперечисленными системами: «Nagios, Zabbix, Cacti».
grossws
26.06.2017 20:46Меня куда больше удивило количество плюсов, поставленных столь бестолковой статье.
Chamellion
27.06.2017 10:44Что бестолкового в статье с вашей точки зрения? Я буду благодарна за конструктивную критику, дабы в дальнейшем не допускать подобных ошибок.
grossws
27.06.2017 13:16Почти всё, к сожалению.
С заголовка: описанное в «статье» — это не мониторинг. В лучшем случае это может быть ручным мониторингом, если вы делаете проверки по расписанию и наказываете себя при несделанной проверке. Т.е. с некоторой натяжкой можно сказать, что описаны ручные проверки доступности простого сайта. Кроме того, если говорить про мониторинг, то он должен осуществляться 24х7, а не только в выходные как намекает нам заголовок.
Далее, большая часть текста — вода и общие слова. Но их разбирать мне уже несколько лень.
Большая часть упражнений с openssl x509 заменяется на
openssl x509 -noout -text
.
Если вы говорите о мониторинге (в контексте linux-серверов, как минимум), но ни разу не слышали про nagios или zabbix, то вы ничего не знаете, и не стоит переводить бумагу и чужое время.
Мой совет — не пишите статьи. Сначала почитайте чужие, вместе с комментариями.
LonFas
27.06.2017 10:42+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
Считаю это одно и тоже.
ALexhha
27.06.2017 12:13> Я не работала именно с вышеперечисленными системами: «Nagios, Zabbix, Cacti»
извиняюсь за нескромный вопрос — а с чем же вы тогда работали?
P.S.
то, что описано в статье подойдет разве что для мониторинга за домашним сайтом, имхоChamellion
27.06.2017 12:25Да, я работала только с маленькими, зачастую не приносящими прибыли, сайтами. Для отслеживания проблем с собственным сайтом мне было достаточно вышеописанных технологий. Для больших систем, несомненно, используются другие методы.
kelevra
Плюсанул за динозаврика, а что что-то давно его не было.