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

23
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana Иван Останин iostanin@ptsecurity. com Сергей Тихонов stikhonov@ptsecurity .com

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

Page 1: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Иван Останин[email protected]

Сергей Тихонов[email protected]

Page 2: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Page 3: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

Тезисы

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

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

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

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

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

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

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

• Выводы

Page 4: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Page 5: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

Проблемы

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

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

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

Page 6: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Page 7: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

InfluxDB

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

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

• Аналитик

• Событий

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

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

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

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

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

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

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

Page 8: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

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

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

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

Page 9: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

Zabbix

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

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

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

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

Page 10: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

Grafana

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

OpenTSDB”grafana.org

Page 11: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

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

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

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

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

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

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

• Плейлисты

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

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

Page 12: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Page 13: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Page 14: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Page 15: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Page 16: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

Jmeter

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

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

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

браузером)

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

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

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

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

и Grafano

Page 17: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

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

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

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

систему “Grafano”

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

Page 18: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

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

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

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

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

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

Page 19: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Page 20: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

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

Page 21: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

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

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

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

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

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

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

TeamCity

Page 22: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

Ссылки

• 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/

Page 23: Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana | Иван Останин, Сергей Тихонов

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

Иван Останин[email protected]

Сергей Тихонов[email protected]