Автоматизация нагрузочного тестирования в связке JMeter...

Post on 14-Jan-2017

196 views 0 download

Transcript of Автоматизация нагрузочного тестирования в связке JMeter...

Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana

Иван Останинiostanin@ptsecurity.com

Сергей Тихоновstikhonov@ptsecurity.com

Часть 1.Мониторинг в нагрузочных тестах

Тезисы

• Как было раньше?

• nfluxdb, как хранилище time-series данных

• Мониторинг нагрузочных стендов при помощи Zabbix

• Grafana, как способ превратить графики и дашборды в конфетку

• Что было до автоматизации UI-тестов и стандартные проблемы

• Внедрение автоматизации в процесс нагрузочного тестирования

• Плюсы и минусы в автоматизации

• Выводы

Сбор и отображение данных: ДО

Проблемы

• Отчет и данные хранятся мертвым грузом в артифактории

• Один жесткий шаблон отчета, дорогая доработка

• Отображение данных только после окончания теста

РешениеИспользовать плоды чужих трудов!

InfluxDB

• Создана для хранения временных рядов:

• Метрик производительности

• Аналитик

• Событий

• Умеет на лету агрегировать данные

• SQL-like синтаксис

• Поддерживает регулярные выражения

• Автоматически чистит старые данные

• Масштабируема

• Есть библиотеки для популярных языков

• Легкое развертывание и администрирование. Ничего лишнего.

Пример данных

• Температура машины X типа Y в интервале времени• измерение: temperature• теги: machine, type• поля: internal_temperature, external_temperature• temperature,machine=unit42,type=assembly internal=32,external=1001434055562000000035

• теги – для агрегации и фильтрации• поля – данные для хранения• поля не индексируются• хранится только одно значение для комбинации измерение + тег + timestamp

задается временная точность (с, мс, мкс, нс)• длительность хранения данных задается политикой очистки

Zabbix

Как используется в нагрузочном тестировании:

• Кросс-платформенные агенты на Windows- и Linux-хостах

• Активный сбор данных для закрытых сетей

• Autodiscovery виртуальных машин на хостах с ESXi

Grafana

“An open source, feature rich metrics dashboardand graph editor for Graphite, InfluxDB &

OpenTSDB”grafana.org

Основные особенности Grafana

• Очень гибкий инструмент для отображения

• Удобный построитель запросов для источников данных

• InfluxDB, Zabbix, Elasticsearch среди поддерживаемых источников

• Шаблонизация запросов

• Подписи к графикам

• Поиск по дашбордам

• Плейлисты

• Экспорт/импорт

• Выглядит так, что не заставляет глаза кровоточить (привет, zabbix)

Демонстрация

Примеры графиков в Grafano

Сбор и отображение данных: ПОСЛЕ

Часть 2. Jmeter + TeamCity + Grafano

Jmeter

Для чего он нужен:

• Полная эмуляция работы реальных пользователей с системой

(В данном случаем эмуляция всех запросов между серверов и

браузером)

• Получение статистических данных по работе сервера:

• Время обработки входящих запросов (Время отклика на действия пользователя)

• Обработка приходящих ответов

• Отправка результатов работы в InfuxDB

и Grafano

Какие проблемы необходимо решить

• Простой механизм разворачивания инструмента на серверах

• Легкий процесс запуска и проведения нагрузочного тестирования

• Простая интеграция результатов тестирования в существующую

систему “Grafano”

• Онлайн мониторинг за проведением нагрузочного тестирования

Что было сделано

• Разработан нагрузочный скрипт который покрывает до 80% всех

пользовательских операций

• Внедрен механизм запуска тестирования через TeamCity

• Отображение онлайн статистики по работе MaxPatrol UI

• Простое обновление скриптов через GIT

Внедрение Jmeter в TeamCity

Внедрение Jmeter в Grafano

Jmeter имеет уже существующий плагин (Backend Listener) для отправки данных в InfluxDB

Текущее положение дел

• Процесс нагрузочного тестирования на текущий момент представляет

запуск задачи в TeamCity (необходимо только выбрать нужные

параметры при старте)

• Статистические данные по работе UI отображаются сразу в виде

готовых интерактивных графиков

• Обновленные скрипты автоматически подтягиваются через GIT в

TeamCity

Ссылки

• InfluxDB: https://influxdata.com

• Grafana: https://grafana.org

• Live demo: https://play.grafana.org • Zabbix datasource demo: http://play.grafana-zabbix.org

• Zabbix:https://zabbix.org

• Мониторинг ВМ: https://www.zabbix.com/documentation/3.0/manual/vm_monitoring • Zabbix + iostat: http://virtuallyhyper.com/2013/06/monitor-disk-io-stats-with-zabbix/

•  Jmeter http://jmeter.apache.org/• TeamCity http://www.jetbrains.com/teamcity/

Спасибо!Вопросы?

Иван Останинiostanin@ptsecurity.com

Сергей Тихоновstikhonov@ptsecurity.com