Как настроить поступление данных из jmeter в influxdb?
Тест запускается из jenkins в нескольких экземплярах
1) TAG_AGENT
Если агенты запускаются, как отдельные агенты, без мастер-слейв,
то важно разделить данные с помощью тегов.
Добавить тег с именем агента в результаты, чтобы они не перемешивались.
https://jmeter.apache.org/usermanual/component_reference.html#Backend_Listener
TAG_WhatEverYouWant
You can add as many custom tags as you want. For each of them, create a new line and prefix its name by "
TAG_"
Например
TAG_AGENT
Значение - можно такое
${__machineName}
https://jmeter.apache.org/usermanual/functions.html#__machineName
2) TAG_BUILD_ID
И нужен идентификатор запуска из
jenkins, чтобы не перемешивать все запуски между собой
https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
BUILD_ID
The current build ID, identical to BUILD_NUMBER for builds created in Jenkins versions 1.597+
Например такой тег, тоже добавляется новой строкой в BackendListener:
TAG_BUILD_ID
Значение
${__P(BUILD_ID)}
BUILD_ID прокидывается из переменных окружения в тест
JMeter, как
property.
3) Параметры Backend Listener
По накоплению метрик перед записью есть пара настроек, они в
jmeter.properties
Суть такая - сохранять метрики каждую секунду теста не стоит, будет много метрик.
Оптимально сохранять метрики раз в минуту или раз в 30 сек.
Описал настройки для Backend Listener тут
https://polarnik.github.io/influxdb-bench/#44
https://polarnik.github.io/influxdb-bench/#45
Например тест делает 50 запросов в сек.
Мы хотим отправлять метрики раз в 60 сек.
Значит надо хранить примерно 3000 метрик в очереди
QUEUE_SIZE = 5000
(по умолчанию) - такое значение нас устраивает его хватает
backend_metrics_window_mode=timed
backend_influxdb.send_interval=60 # было 5
backend_metrics_large_window=5000 # это устраивает нас > 3000
А вот тест делает (с одного агента) уже 200 запросов в сек и мы настраиваем отправку раз в 60 сек.
Значит надо хранить примерно 12000 метрик в очереди перед отправкой.
QUEUE_SIZE = 12000 (увеличиваем)
backend_metrics_window_mode=timed
backend_influxdb.send_interval=60 # было 5
backend_metrics_large_window=12000 # было 5000
4) Сумма по BUILD_ID = сумма сумм по AGENT
Когда метрики записаны с нескольких одновременно работающих агентов, их надо визуализировать.
Тут только есть тонкость, как суммарные метрики считать:
- суммарная интенсивность работы со всех агентов
- суммарное количество ошибок со всех агентов
- их отношение (суммарный процент ошибок за весь тест)
- суммарное количество потоков
Сначала надо посчитать сумму с группировкой по AGENT, a потом по BUILD_ID.
Считать сумму сразу по BUILD_ID не получится в InfluxDB.
То есть все запросы на сумму будут с подзапросами.
Это третий вариант суммирования, описанный в статье
https://habr.com/ru/company/raiffeisenbank/blog/490764/