Статьи

Начало работы с мониторингом веб-приложений

Эта статья была спонсирована Monitis . Спасибо за поддержку спонсоров, которые делают возможным использование SitePoint.

Хорошо это или плохо, но наша работа как разработчиков не заканчивается последней строкой кода, финальным коммитом или нажатием кнопки «развернуть».

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

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

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

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

Что может пойти не так?

Чтобы знать, как и что мы должны отслеживать, это помогает понять, что может пойти не так. Короткий ответ, вероятно, «ну, много» — и, как таковой, это действительно сложный вопрос, чтобы ответить окончательно. В то же время, однако, есть ряд вещей, которые мы можем ожидать, может пойти не так.

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

  • Нарушение «жестких» ограничений; например, полный диск, превышающий предел физической памяти или достигший максимального количества процессов
  • Проблемы с сетью; например, сайт становится недоступным, большие потери пакетов, обрыв соединения с сервером или сбои DNS
  • Сбои компонентов или услуг; возможно, ваш сервер базы данных вышел из строя, например.
  • Проблемы со сторонними сервисами; ваша корзина S3 недоступна, у вашего почтового провайдера проблемы, или ваш CDN вышел из строя
  • Проблемы с вашими приложениями; ошибки и исключения, несоответствия в ваших данных или даже ошибки в вашем коде
  • Поддержание стороннего кода или компонентов операционной системы в актуальном состоянии; в частности, проверка исправлений безопасности или пакетов обновления
  • Есть даже глупые примеры человеческих ошибок, которые, увы, все же случаются; например, забыв продлить сертификат SSL.

Как только вы поймете, что может пойти не так, вы начнете понимать, что нужно отслеживать.

Важные вещи для рассмотрения

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

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

Они используют настольный компьютер / ноутбук или мобильный телефон?

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

Какое у них сетевое соединение?

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

Где они?

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

Стоит взглянуть на то, где находятся ваши посетители — результаты могут вас удивить. Например, технологические блоги часто пользуются огромной популярностью в Индии — но задумывались ли вы над тем, как, скажем, сервер в США справляется с расстоянием?

Мониторинг, данные и оповещения

Есть два аспекта мониторинга; просмотр данных, будь то исторические данные («Показать среднее время ответа и коды состояния HTTP 4xx за последние 24 часа») или в режиме реального времени, а также оповещения.

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

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

Хороший способ ответить на этот вопрос может заключаться в перекрестной ссылке на различные параметры. Например, отслеживая время отклика и загрузку процессора, вы можете обнаружить, что время отклика становится неприемлемо низким, если нагрузка на ваш процессор превышает 80%.

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

Представляем Monitis

Monitis — это сервис для сбора всех видов данных о состоянии ваших серверов, производительности ваших веб-серверов и серверов баз данных, скорости отклика вашего веб-приложения и о многом другом.

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

Панель приборов Monitis

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

Мониторинг сервера с помощью Monitis Smart Agent

Для мониторинга работоспособности сервера с Monitis нам необходимо установить программное обеспечение агента. Это небольшая программа, которая работает в фоновом режиме как демон, отслеживая общее состояние сервера и сообщая эти данные обратно Monitis, чтобы мы могли их использовать. Обратитесь к документации по Linux или Windows за инструкциями по его установке.

Если вы хотите попробовать это быстро, я бы порекомендовал создать новую каплю Ubuntu с Digital Ocean . Вы должны обнаружить, что он работает «из коробки», со всеми его зависимостями, уже установленными для вас. В качестве альтернативы вы можете проверить эту поваренную книгу шеф-повара .

После того, как программное обеспечение агента установлено и запущено, вам необходимо настроить мониторинг с помощью панели мониторинга Monitis в Интернете. Мы посмотрим на это дальше.

Мониторинг приложений

Monitis также позволяет отслеживать состояние ваших приложений.
Monitis предоставляет SDK для большинства популярных языков — Java, Perl, Python, PHP, Ruby, C # — популярных веб-серверов и серверов приложений, таких как Apache, Nginx, IIS, Tomcat и Node.js, различных серверов баз данных, таких как MySQL, Postgres, MongoDB и SQL Server и многое другое. Вы найдете полный список здесь .

Изучение приборной панели Monitis

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

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

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

Вы также можете создавать новые «страницы» (вкладки), позволяя разделить мониторы по тем критериям, которые наиболее соответствуют вашим потребностям. Например, вы можете настроить вкладку для каждого сервера с ключевыми показателями для всех ваших служб на одной «главной странице» или сводной вкладке.

Другие инструменты для мониторинга

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

Мониторы полной загрузки страницы

Многие системы веб-мониторинга предоставят вам время отклика; например, «сколько времени занимает конкретный запрос GET?». Как бы это ни было полезно, это не дает полной картины.

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

Чтобы лучше понять, как это влияет на работу пользователя, полностраничные мониторы часто предоставляют оценки Apdex (Индекс производительности приложений) . Они меньше касаются жестких чисел — хотя они предоставляют числовые значения от 0 до 1 — но, скорее, качественный показатель качества опыта для реальных пользователей — например, «Удовлетворенный», «Допустимый» или «Разочарованный».

Веб-стресс-тестирование

Веб-стресс-тестеры позволяют имитировать большое и настраиваемое количество запросов в течение определенного периода времени, чтобы увидеть, как ваш веб-сервер справляется. Это может быть полезно для определения того, как ваш сервер может обрабатывать « эффект Slashdot (который вы также можете назвать эффектом Twitter или эффектом Reddit) — другими словами, как ваш веб-сервер может справиться, если вы неожиданно получите большой объем посещений за короткий промежуток времени? Чтобы дать вам представление о том, чего вы можете ожидать, вы найдете образец отчета прямо здесь .

Проверка безопасности сайта

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

Резюме

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

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

Хотите попробовать Монитис? Подпишитесь на их 15-дневную пробную версию сегодня .