07 октября 2019
Великолепная пятерка: популярные системы мониторинга сайтов
В идеальном мире компания заказывает сайт, а потом живет долго-счастливо и купается в море заявок. Но все мы знаем закон Мерфи: если что-то может пойти не так, оно пойдет. Поговорим о подушках безопасности на этот случай — о системах мониторинга.
Система мониторинга — это то, что следит за работоспособностью и производительностью сайта, пока его владелец занимается своими делами. Другими словами, вы загораете на пляже на Бали или уехали в командировку, а специальная программа анализирует ресурс и сообщает вам, если возникли какие-то неполадки.
Зачем нужно мониторить?
Мониторинг одним махом позволяет решить много разношерстных задач. Если кратко, обнаружить проблему до того, как ее заметили ваши пользователи и клиенты.
- Не допустить снижения доходов. Допустим, сайт внезапно перестал работать, и пользователи видят только обидную страницу 403 (Forbidden). Здесь все просто: чем раньше мы узнаем об ошибке, тем быстрее мы ее исправим, и тем меньше сервис будет находиться «вне зоны доступа». А ведь всего несколько часов простоя могут обернуться для него серьезными последствиями. Особенно если вы, например, интернет-магазин — есть риск потерять в выручке.
- Не лишиться трафика. Даже необязательно, чтобы произошло что-то из ряда вон, — сервисом банально может быть неудобно пользоваться. Такие вещи тоже нужно регулярно проверять, улучшать внутреннюю перелинковку, технические параметры и контент страниц, и тогда клиенты задержатся на сайте, а не будут в спешке сбегать.
- Не опуститься в поисковой выдаче. Алгоритмы наших горячо любимых поисковиков обновляются примерно раз в секунду. Стоит только немного замешкаться, как «Яндекс» или Google в очередной раз что-то придумали, и сайт в выдаче упал с первой на десятую строчку. Мониторинг поможет отследить видимость ресурса, выявить дублированный контент, битые ссылки и проблемы с метатегами. Используя эту информацию, вы выясните, как ваш сайт индексируется поисковиками, и оперативно подстроитесь под их требования.
- Не потратить лишнего. Это уже больше про стратегию. Благодаря мониторингу вы сможете зафиксировать долгосрочные тенденции, определить время наибольшей активности на сайте и в соответствии с этим делать какие-то шаги для развития бизнеса и самого ресурса. Например, организовывать акции или провести работы по расширению пропускной способности канала.
Что можно мониторить?
Все. Буквально. Выбирать показатели для мониторинга нужно исходя из задач, которые вы планируете решать.
Конечно, раз в полгода стоит делать и глобальную проверку сайта и разбирать его «по косточкам». Но в обычные дни можно ограничиться несколькими параметрами, от которых напрямую зависит, как он функционирует и выглядит в глазах пользователей.
Доступность
Главный параметр, который нужно проверять как можно чаще. Причины для этого очевидны. Если сайт недоступен, значит, его не видят ни посетители, ни поисковики. По сути, его нет. Нет сайта — нет трафика — нет продаж.
И это не байки из склепа, тезис подтверждают цифры. По данным Equation Research, около 88% пользователей заявили, что не хотят возвращаться на сайт, который у них не получилось открыть. Представьте, сколько потенциальных клиентов вы можете лишиться из-за банальной перегрузки сервера, если вовремя не примете меры.
Скорость
Похожая история и со скоростью загрузки. Мир стал слишком быстрым — того же и вполне справедливо требуют и от сайтов, особенно когда заходят со смартфонов или планшетов (тоже тренд). Никто не будет ждать полчаса, когда он наконец соизволит загрузиться и отобразит нужные страницы. Максимум — только три секунды. Да и то не всегда.
Поэтому этот параметр нужно тщательно отслеживать.
Безопасность
Никто не застрахован от действий злоумышленников или DDOS-атак, например, http-флуда, когда хакер генерирует много одновременных запросов к сайту. Сюда же относятся «заражения» вирусами и другими вредоносными программами. Они, само собой, влияют на производительность, не в лучшую сторону.
Думаем, объяснения, почему следует «чекать» сайт на предмет уязвимостей, излишни. Вы же не хотите, чтобы на вашей площадке хозяйничали чужаки, правда?
Ошибки на разных уровнях приложения
На хостинг надейся, а сам не плошай. Не пренебрегайте мониторить сайт на самом высоком уровне — уровне приложений, именно там можно обнаружить наиболее распространенные баги: неисправности на сервере, каскадные переадресации, неоптимизированные скрипты и прочее.
Например, если упала сеть между базой данных и приложением — об этом сразу станет понятно, когда мониторинг выявит ошибку соединения с СУБД. Так вы сразу узнаете о проблеме и предпримите меры.
Загруженность
Много посетителей — то, к чему стремится любой владелец сайта. Но что хорошо для нас, не всегда хорошо для сетей и серверов, которые из-за больших нагрузок или слишком медленно работают, или вовсе «отваливаются».
Как следствие, снова отток трафика.
Измеряйте посещаемость и свою производительность — так вы лучше рассчитаете свои силы и подготовитесь к возможным наплывам.
Новый функционал
Мониторинг открывает новые возможности для улучшения юзабилити сайта.
Проводите A/B-тестирование нового функционала (кнопки, виджеты, баннеры, навигация) на определенной части аудитории — и решить, что внедрять, а от чего отказаться, не составит труда.
Виды мониторинга
Всю систему мониторинга можно поделить на несколько уровней.
Уровень приложения
Мониторинг показывает, когда и как люди пользуются сайтом, и помогает выявить его слабые места.
- Мониторинг бизнес-логики приложения. Проверяем сам факт того, что сайт работает. Оцениваем бизнес-показатели: количество просмотров страниц, количество заказов, частоту регистраций, сумму покупок и так далее
- Мониторинг health-метрики сервисов. Проверяем жизнеспособность сервисов и всех ресурсов, требуемых для их стабильной работы
- Интеграционный мониторинг подразумевает проверку синхронной и асинхронной коммуникации между критическими для бизнеса системами.
Снова уровень приложения, но уже как инженерного продукта
Этот вид мониторинга отражает ключевые моменты, от которых напрямую зависит доступность и производительность сайта.
- Сбор и наблюдение журналов приложения. Агрегируем логи. Если по какой-то причине еще не делаете этого, самое время начать.
- APM (Application Performance Monitoring). Оцениваем поведение сайта, но только тут в фокусе — ошибки в коде и то, как они влияют на производительность. Проверяем состояние физического оборудования и виртуальной машины, контейнера и самого приложения, вспомогательной инфраструктуры, кеша.
- Трассировка (Tracing) позволяет отслеживать и повышать скорость транзакций серверов в распределенной архитектуре вашего приложения, когда вы, например, открываете сайт в браузере. С помощью нее можно определить, почему он медленно загружается.
Уровень инфраструктуры
Целый отдельный процесс, который подразумевает проверку абсолютно всех систем, серверов и служб.
- Мониторинг уровня оркестрации — то, насколько работоспособны контейнеры, кластеры и системы управления.
- Мониторинг системного ПО — то, насколько хорошо функционирует операционная система и ее компоненты.
- Мониторинг уровня «железа» — диагностика аппаратной части: процессора, материнской платы, жестких дисков и оптических накопителей.
Алертинг
Настройка оповещений для системы мониторинга, включающая в себя:
- Организацию единой системы рассылки оповещения. Оповещения должны быть понятными (например, откуда они пришли). Контролируем, что они вообще доходят.
- Организацию системы дежурств. Алерты не должны приходить всем. Потому что в этом случае вас ждут два варианта развития событий — или все будут реагировать толпой, или не будет реагировать никто (скорее второе). Определяем зоны ответственности, прописываем четкую инструкцию, где указываем, кто в какие дни за сайт отвечает.
- Организацию «базы знаний» и workflow обработки инцидентов. По каждому серьезному инциденту или ошибке на сайте планируем «разбор полетов». Действия, которые решают проблемы, фиксируем в чек-листах, а повторяющиеся алерты фиксим в коде.
Системы мониторинга: сравнительный анализ
Конечно, никто не запрещает проверять сайт вручную. Просто открывать его с утра в стартовой странице браузера, радоваться, что работает, и закрывать. Но это неудобно и совсем не эффективно, и не спасет вас в экстренных ситуациях, которые, как правило, случаются непредсказуемо.
Плюс вы не сможете следить за сайтом круглосуточно, придется отвлекаться на мирские заботы. А специальная автоматизированная система сможет. Да еще и будет присылать вам уведомления о состоянии вашего ресурса.
Есть много платных и бесплатных программ мониторинга сайтов: как веб-сервисов, так и софта для ПК. Рассказываем о самых популярных решениях.
Blackfire
Blackfire — это PHP-инструмент, который показывает, как код ведет себя и как он потребляет ресурсы. Основываясь на этих измерениях, Blackfire позволяет разработчикам писать тесты и управлять производительностью сайта еще до его запуска.
Разработчики предлагают использовать софт на всех стадиях жизненного цикла продукта: разработка, тестирование, выложенное на продакшн-сервер ПО.
Плюсы
- Позволяет автоматизировать сценарии и настраивать регрессионные тесты, используя свои собственные метрики.
- Собирает данные профилирования о времени, ожидании ввода-вывода, памяти, сетевых вызовах, HTTP- и SQL-запросах.
- Интегрируется со многими сторонними сервисами и приложениями.
- Поддерживает широкий спектр стандартных библиотек PHP.
- Поддерживает все основные платформы (Linux, MacOS, Windows).
- Полученные показатели производительности можно зафиксировать в визуальных графах.
Минусы
- Сложно настраивать.
- Не готовое решение — для запуска профилирования нужна утилита CLI и расширение Chrome.
- Дополнительный код. В PHP измерение производительности влияет на производительность. Чтобы понять, сколько ресурсов потребляет ваш собственный код, вам потребуется еще код, и не одна строчка.
- Фреймворк-зависимый: подходит не ко всем средам.
New Relic
New Relic — это аналитическая SaaS-платформа, которая в режиме реального времени отслеживает мобильные и веб-приложения, развернутые в облачных сервисах и дата-центрах. И это отличное дополнение к Blackfire.
Плюсы
- Гибкие и несложные настройки.
- Поддерживает приложения, написанные на Ruby, Java, .NET, Python, PHP, Node.js.
- Легко масштабируется.
Минусы
- Мониторинг только из облака (агенты при этом устанавливаются на целевые серверы).
- Не предусмотрено резервное копирование в нескольких местах.
- Работает по проприетарным протоколам.
- Отсутствует поддержка OpenTracing.
- Поддержка Kubernetes пока имеет экспериментальный статус.
Интеграция Blackfire и New Relic
Эти два инструмента лучше действуют в «связке»:
- New Relic обрабатывает запросы всех конечных пользователей. Таким образом он требует дополнительного времени для конечных пользователей. Чтобы ограничить это время, New Relic не собирает слишком много информации о производительности кода.
- Blackfire не учитывает запросы конечных пользователей. Он автоматически обрабатывает только те запросы, которые запускает разработчик.
Каждый раз, когда New Relic обнаруживает медленную страницу, он запускает Blackfire, чтобы проанализировать и устранить обнаруженные проблемы.
Blackfire поддерживает встроенную интеграцию с New Relic: вы можете автоматизировать сценарии тестирования Blackfire для заданных событий из New Relic. Любое оповещение, которое вы настроите в New Relic для сайта, позволит Blackfire запускать тесты по заранее установленному сценарию.
Prometheus + Grafana
Prometheus — CNCF-проект с открытым исходных кодом, с помощью которого можно мониторить серверы, базы данных, отдельные виртуальные машины. Он покажет графики практически по любому сочетанию параметров, но сами графики не очень удобные, поэтому Prometheus используют вместе с Grafana (которая не очень подходит для мониторинга систем, зато хорошо визуализирует данные).
В минимальную конфигурацию системы мониторинга Prometheus входит сервер Prometheus и отслеживаемое приложение. Нужно только указать, по какому адресу вы собираетесь запрашивать метрики.
Плюсы
- Можно в любой момент посмотреть динамику изменения метрики в текстовом формате или в виде графика, не покидая главной страницы веб-интерфейса.
- Отличается высокой производительностью: способен собирать данные с тысячи серверов с интервалом в десять секунд.
- Хранит данные в оперативной памяти и потом загружает их на диск.
- Удобный язык запросов.
- Предусмотрена возможность масштабирования.
- Простой и понятный интерфейс.
- Поддерживает много пакетов, снимающих метрики с разных сервисов.
Минусы
- Нельзя сохранить сформированный запрос непосредственно через веб-интерфейс.
- Любой, кто знает нужный адрес и порт, может получить данные по вашим метрикам.
Zabbix
Еще одна система мониторинга с открытым исходным кодом. Zabbix позволяет мониторить сети, сервера, приложения в режиме реального времени. В случае ошибки вы получите уведомление, также система защищает данные на всех уровнях и может проверять тысячи устройств одновременно.
Очень информативная система, имеет большое количество триггеров, указывающих на состояние сайта. Бэкенд системы написан на PHP.
Плюсы
- Бесплатная.
- Единая точка доступа для всех пользователей.
- Минимальный интервал между проверками равен секунде.
- Доступ к данным и к конфигурации разграничен.
- Поддерживает все основные платформы (Linux, MacOS, Windows).
- В качестве базы данных для хранения метрик можно использовать MySQL, PostgreSQL, SQLite или Oracle.
- Широкие возможности мониторинга.
Минусы
- Сложная настройка (новичкам не подойдет).
- Сложно и долго масштабируется.
- Много требований к аппаратной части.
- Все данные мониторинга хранятся в базе (нужны дополнительные вычислительные мощности).
- Не обеспечивает отказоустойчивость.
- Мониторинг происходит через агент, который работает постоянно и устанавливается на каждом сервере.
Nagios
Nagios — программа с открытым кодом для мониторинга всех критически важных компонентов инфраструктуры: приложения, сервисы, операционные системы, сетевые протоколы, системные метрики. Кроме бесплатной версии Nagios Core есть Nagios XI с дополнительными возможностями и более удобным интерфейсом.
По сути, это аналог Zabbix, только мониторинг происходит посредством плагинов.
Плюсы
- Бесплатный.
- Легкая настройка.
- Простой формат файла, который можно редактировать с помощью утилит.
- Много плагинов от сторонних производителей.
- Можно оставлять комментарии с меткой времени.
Минусы
- Не умеет анализировать производительность.
- Нет встроенной визуализации (кроме карты сети).
- Нет возможности конфигурирования через интерфейс. Чтобы внести какое-либо изменение, нужно поправить файл и полностью перезапустить систему (10-15 минут).
- Много процессов (на каждый плагин — отдельный процесс).
- Слишком большой интервал между проверками и измерением параметров.
Мониторинг тоже может ломаться. Поэтому очень важно отслеживать работоспособность самой системы мониторинга. Для этого стоит сделать отдельный скрипт, который запускается по cron, или любую другую проверку. Но самое главное — не забывайте проверять, что мониторинг доступен, работает, отправляет уведомления, проверяет значения и так далее. Иначе в один прекрасный день вы можете обнаружить, что вроде бы графики рисуются, показатели отображаются, а сервис лежит уже третий день.
Какую систему выбрать?
Системы мониторинга делают акцент на разных уровнях информационной системы. Так что их лучше комбинировать.
Современный стек представляет собой набор из:
- Prometheus, Zabbix — сбор данных, helth-метрик и система оповещений.
- ELK — хранение и агрегация логов.
- NewRelic, BlackFire (в случае PHP-бэкенда) — анализ метрик производительности.
- Grafana — визуализация данных.
Мониторинг — это не просто утилиты, а большая система, неразрывно связанная с продуктом. Поэтому разработка системы мониторинга должна идти параллельно с разработкой самого сайта. После релиза качественно внедрить его уже будет нельзя.
Но жалеть на это времени точно не стоит. Потратите несколько дней, зато потом будете спать спокойно, в полной уверенности, что сайт работает как часы, а конверсия растет.
Мы отправляем полезные материалы, которые помогут вам в работе
Популярные статьи в категории Менеджмент
-
08 апреля 2019
1 664
19
-
16 мая 2017
1 404
22
-
27 октября 2017
3 176
151