Оказывается, у VMware есть интересная утилита с открытым исходным кодом - Weathervane. Это бенчмаркинг-тул, предназначенный для запуска тестов производительности в виртуальных средах VMware vSphere (как онпремизных, так и облачных), с учетом симуляции реальной нагрузки различных приложений. Утилита доступна в открытом репозитории на GitHub.
Weathervane позволяет, например, снять метрики с двух различных окружений или его конфигураций, что позволит выбрать наиболее производительную конфигурацию виртуального окружения и выставить самые эффективные настройки виртуальной среды. Также с помощью Weathervane компания VMware сама делает различные тесты, к примеру, вот документ о производительности контейнеров Docker в виртуальной среде VMware vSphere - "Performance of enterprise web applications in Docker containers on VMware vSphere 6.5".
Weathervane имеет возможности по развертыванию нескольких независимых экземпляров приложения и его отдельных сервисов в контейнерах Docker, запуску различных нагрузок и конфигурации параметров их исполнения для измерения необходимых метрик производительности. То есть, это утилита для бенчмаркинга производительности именно на уровне приложений.
Weathervane состоит из трех основных компонентов:
Приложение (Auction application), которое развертывается в среде тестирования.
Драйвер рабочей нагрузки (Workload driver), который выдает реалистичную нагрузку для приложения с учетом заданных параметров тестирования.
Компонент исполнения (Run harness), который автоматизирует процесс исполнения тестовых запусков приложения и собирает результаты, логи и, собственно, данные о производительности.
Также в составе Weathervane есть Supporting tools, которые включают в себя скрипты для настройки экземпляра операционной системы со всем необходимым для запуска утилиты, создания образов Docker и подготовки приложения для запуска в среде тестирования.
При проведении тестирования вы можете изменять следующие параметры:
Число экземпляров на уровне каждого сервиса. Например, может быть любое число балансировщиков нагрузки, серверов приложений или узлов веб-серверов. Это позволяет создавать конфигурации любого масштаба.
Число ярусов целевой архитектуры. Например, вы можете не использовать некоторые компоненты, такие как балансировщики и веб-сервера, если вам нужно протестировать небольшую по объему среду.
Вариант развертывания среды. Например, Weathervane сейчас поддерживает PostgreSQL и MySQL в качестве транзакционной БД, а также Apache Httpd и Nginx в качестве веб-серверов. Ну и надо помнить, что это open source проект, а значит вы сами можете расширять его.
Конфигурацию сервисов. В настроечном файле можно изменять параметры для каждого из ярусов, которые будут применяться компонентом run harness перед началом каждого прогона бенчмарка.
Для больших инфраструктур и тестовых сред Enterprise-приложений Weathervane предоставляет следующие средства:
Вы можете запускать экземпляры приложения напрямую в ОС, неважно в физической или виртуальной машине, а также в контейнерах Docker (это позволит сравнить эти варианты развертывания между собой по производительности). Как мы писали выше, Weathervane содержит скрипты для создания образов Docker для всех сервисов приложений.
Вы можете задать пользовательскую нагрузку для экземпляров приложения, которая позволит оценить поведение приложения при критических нагрузках, циклических паттернах нагрузки и поведение сервиса в плане эластичности.
Поддерживается изменение числа экземпляров приложения прямо во время исполнения теста, что позволит снять метрики, относящиеся к эластичности сервиса (то есть его способности динамически выделять и освобождать ресурсы при изменении нагрузки). В будущем будет также добавлен мониторинг поведения среды в реальном времени, чтобы оперативно оценивать эластичность и инертность сервиса по отношению к нагрузке.