На данной странице приведена инструкция по быстрому развертыванию базовой инфраструктуры для нагрузочного тестирования с использованием таких приложений как JMeter, Influx2, grafana.
Дисклеймер: в данном примере я умышленно не использую docker контейнеры и выполняю настройку окружения на чистой ВМ, т.к, по моему мнению, только такой вариант установки дает полную картину взаимодействия сервисов, что в свою очередь полезно для новичков.
Для начала нам понадобится InfluxDB, который содержит свой графический интерфейс, но для построения дашбордов мы будем использовать Grafana.
# Скачиваем установщик:
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.1-amd64.deb
# Устанавливаем и запускаем InfluxDB
sudo dpkg -i influxdb2-2.7.1-amd64.deb
sudo service influxdb start
# Проверяем правильность установки:
sudo service influxdb status
Если в терминале появилось "Active: active (running)", значит мы все сделали правильно!
Далее, для того чтоб JMeter мог подключиться к нашей базе, необходимо создать данные для подключения:
- Переходим в консоль управления influx в бразузере по адресу http://127.0.0.1:8086
где 127.0.0.1 - адрес сервера, на котором располагается наша InfluxDB - Логин и пароль по умолчанию admin
- При первом входе система предложит поменять пароль и создать организацию/бакет - делаем это, названия можно придумать самостоятельно
- Переходим в Api Tokens
- Создаем новый токен с доступом к ранее созданному бакету на чтение и запись
На этом настройка БД завершена.
Нам потребуется плагин jmeter-influxdb2-listener-plugin для работы с данными из JMeter, cкачиваем файл по ссылке и кладем его в папку с JMeter >/lib/ext Далее добавляем Backend Listener в наш проект
где 127.0.0.1 - адрес сервера, на котором располагается наша InfluxDB
Для красивого отображения записанных в Influx данных нам потребуется Grafana.
# Устанавливаем зависимости
sudo apt install -y adduser libfontconfig1 musl
# Скачиваем Grafana загрузка недоступна из России, но мы то знаем что делать :)
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.1.4_amd64.deb
# Установка и запуск
sudo dpkg -i grafana-enterprise_10.1.4_amd64.deb
sudo systemctl start grafana-server
После успешного старта можно открывать в браузере http://127.0.0.1:3000 , где 127.0.0.1 - адрес хоста, на котором установлена Grafana. Первый вход осуществляется с логином и паролем admin, после входа система попросит ввести новый пароль админа. Подключаем InfluxDB в качестве источника данных на странице: http://127.0.0.1:3000/datasources
В графана импортируем дашборд из JSON, который можно скачать на (странице по ссылке](https://grafana.com/grafana/dashboards/13644-jmeter-load-test-org-md-jmeter-influxdb2-visualizer-influxdb-v2-0-flux/).
Для прогона тестов я использую одновременно несколько тестовых машин, однако при таком подходе встает вопрос как быстро настроить окружение, особенно с учетом частой смены этих машин. Я решил вопрос написанием Pipeline скрипта для Jenkins, скрипт по умолчанию расчитан на 4 ноды, однако легко модернизируется под большее количество, а для отключения ноды укажите OFF в качестве адреса сервера. Для работы вам потребуется несколько тестовых машин, на которых предварительно требуется установить Java
# Устанавливаем Java
sudo apt install default-jre default-jdk
Ссылка на Pipeline скрипт для Jenkins: parallel_pipeline.groovy При настройке джобы в Jenkins требуется включить опцию "Это - параметризированная сборка" и добавить String параметр с именем "PERF_TEST".