Upload
positive-hack-days
View
206
Download
0
Embed Size (px)
Citation preview
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana
Иван Останин[email protected]
Сергей Тихонов[email protected]
Часть 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/