Мониторинг облачной инфраструктуры веб-приложения
Мониторинг
облачной инфраструктуры веб-приложения
Чинков Михаил Юрьевич
Россия,
г. Пенза
В статье рассматривается проблема
управления инфраструктуры веб-приложения с микросервисной архитектурой, в
котором используются облачные технологии, а также предлагается один из путей
решения данной проблемы, реализованный на практике.
На сегодняшний день существует явная
тенденция к созданию веб-приложений в разработке программного обеспечения.
Веб-приложения являются наиболее доступным видом информационного сервиса в
современном мире. Для доступа к сервису пользователю нужен лишь доступ в
Интернет и веб-бразуер вне зависимости от устройства, операционной системы и
программного окружения, которым он пользуется.
Отдельно в разработке веб-приложений
просматриваются два ключевых направления, связанных друг с другом. Первым
направлением является архитектура микросервисов, где приложение вместо одной
машины используется несколько серверов, на каждой из которых работает отдельный
сервис, имеющий узкую специализацию в обработке запросов. В свою очередь
сервисы слабо связаны между собой. Это дает преимущество в отказоустойчивости и
в масштабируемости сервиса. Вторым трендом является реализация инфраструктуры
веб-приложения на базе провайдера облачных технологий. Это дает возможность
использовать множество внешних сервисов в работе приложения, а также
способствует быстрому старту проекта и минимизации первоначальных вложений в
проект.
Однако данный подход в
проектировании приложений несет в себе дополнительные сложности. Создавая
несколько сервисов, гораздо сложнее управлять их состоянием, следить за
поведением при увеличении/уменьшении нагрузки. Также необходимо следить за
метриками подключаемых облачных сервисов, сравнивать с ожиданиями, строить дальнейшие
планы на развитие программного продукта. Наиболее популярные облачные
провайдеры представляют собственный интерфейс мониторинга, отслеживания метрик.
Однако данный интерфейс не является гибким в настройке и едва ли подходит
персональным нуждам инфраструктуры веб-приложения. Также необходимо регулярно
проводить оценку качества работы сервиса, его техническую производительность и
финансовую рентабельность.
Решением данной проблемы является
проектирование полноценной системы мониторинга на базе открытого программного
обеспечения. Данная система при обработке событий, происходящих в окружении
сервисов, разбивается на несколько частей: запуск, измерения, обработка метрик,
сбор метрик в единое хранилище и визуализация данных. Данная система является
одним из решений мониторинга инфраструктуры. Полноценный контроль событий,
реализуемый системой, помогает улучшить качество управления инфраструктурой.
Также пропадает необходимость в приобретении программного обеспечения, так как
все используемые компоненты являются open-source продуктами с открытым исходным
кодом.
Данная система мониторинга была
спроектирована в ходе практической деятельности, связанной с эксплуатацией
облачной инфраструктуры, на которой работает веб-приложение. Целевой веб-сервис
имеет трехзвенную архитектуру: балансировщик, осуществляющий обработку запросов
и управлением уровнем нагрузок, сервер приложений, где сосредоточено управление
основным интерфейсом и бизнес логикой, и сервер базы данных, в котором
персистентно хранятся пользовательские данные, обрабатываемые и запрашиваемые
основным приложением. Перед началом реализации перед системой стоял следующий
перечень задач:
1) Мониторинг
утилизации ресурсов (ЦПУ, ОЗУ, сетевой траффик, диски);
2) Отслеживание
работы веб-приложения (измерение времени ответов на HTTP запросы);
3) Мониторинг
работы базы данных;
4) Мониторинг
работы облачных сервисов (в данном случае это были продукты Amazon Web Services
- CDN, транскодер, балансировщик и т.д.);
5) Мониторинг
работы внешних сервисов (например, сервис почтовой рассылки Sendgrid или сервис
SMS-рассылки Twilio).
Данный перечень задач можно
применить к большинству современных веб-приложений с поправкой на язык
программирования, на котором реализовано приложение, а также на круг
используемых внешних сервисов.
Спроектированная система мониторинга
состоит из нескольких компонентов. На рисунке 1 показана архитектура системы
мониторинга.
Рисунок
1. Архитектура спроектированной системы мониторинга
Ниже приведено описание компонентов
архитектуры, работающей на серверах с операционной системой Ubuntu 16.04
(Linux-дистрибутив).
1. Источники
данных. Источником данных в инфраструктуре веб-приложения является либо база
данных, либо журнальные файлы веб-приложения, либо API-интерфейс к внешним
сервисам. Основной задачей компонента является предоставление достоверной
информации о состоянии сервиса и его окружения.
3. Планировщик
операционной системы. Роль планировщика играет утилита cron, встроенная во все
дистрибутивы Linux. Cron запускает по настроенному расписанию программные
скрипты, устанавливая необходимый временной интервал для генерирования метрик.
4. Файловая
система метрик. Файловая система является простым способом временного хранения
сгенерированных метрик на каждом из серверов инфраструктуры. На вход компонента
принимаются метрики, полученные из выполнения скриптов. На выходе появляется
процесс считывания информации для записи в общее хранилище метрик.
5. Zabbix-агенты.
Zabbix - клиент-серверная система мониторинга, отвечающая за сбор и
визуализацию данных инфраструктуры сервиса. Данным компонентом являются агенты
Zabbix, работающие на каждом сервере и собирающие данные по сконфигурированным
метрикам с файловой системы путем выполнения команды cat, встроенной в систему.
6. Zabbix-сервер.
Сервер системы Zabbix является конечной точкой в архитектуре системы
мониторинга. На сервере осуществляется запись метрик, собранных с агентов, в
общее хранилище - базу данных MySQL, а также визуализацию данных посредством
веб-интерфейса, доступного на любом клиентском веб-браузере. Именно на этом
этапе происходит анализ состояния инфраструктуры и производительности
веб-приложения.
Наиболее важным результатом
реализации мониторинга инфраструктуры является отображение ключевых метрик
сервиса, на основании которых можно оценить его работу и стадию развития.
Реализовав данную систему мониторинга, мы фактически обеспечиваем контроль над
качеством услуг сервиса. На рисунке 2 представлены результаты визуализации
ключевых показателей эффективности сервиса, собранные из спроектированной
системы мониторинга в единую панель.
Рисунок
2. Отображение ключевых метрик инфраструктуры веб-сервиса
программный
мониторинг архитектура сервис
Таким образом, в рамках данного
научного исследования были рассмотрены такие темы, как архитектура
веб-приложения как популярного вектора развития информационных технологий,
проблемы управления инфраструктурой сервиса и решение этих проблем посредством
внедрения системы мониторинга, основанной на открытом программном обеспечении.
Список литературы
1. Limoncelli T.
The Practice of Cloud System Administration: Designing and Operating Large
Distributed Systems, Volume 2 [Текст] // - 2015. - С. 331-365.
2. Немет Э., Снайдер Г., Хейн Т.Р., Уэйли Б. Unix и Linux. Руководство системного администратора [Текст] // Вильямс. - 2012.
- С. 1157-1180.
3. Лутц М. Изучаем
Python (5-е издание) [Текст] // Символ-Плюс. - 2011.