{"id":13651807,"url":"https://github.com/kirillyu/jmeterReports","last_synced_at":"2025-04-22T22:32:22.896Z","repository":{"id":48607298,"uuid":"283991217","full_name":"kirillyu/jmeterReports","owner":"kirillyu","description":"Jmeter autogenerater reports after test to Confluence, using grafana custom dushboards.","archived":false,"fork":false,"pushed_at":"2021-12-13T09:15:15.000Z","size":15516,"stargazers_count":27,"open_issues_count":2,"forks_count":8,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-01-24T06:40:50.664Z","etag":null,"topics":["autogenerate","confluence","grafana","grafana-api","jmeter","reporting","reports","test-metrics"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kirillyu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-31T09:05:53.000Z","updated_at":"2024-01-24T06:40:50.665Z","dependencies_parsed_at":"2022-09-11T02:51:26.183Z","dependency_job_id":null,"html_url":"https://github.com/kirillyu/jmeterReports","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillyu%2FjmeterReports","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillyu%2FjmeterReports/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillyu%2FjmeterReports/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillyu%2FjmeterReports/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kirillyu","download_url":"https://codeload.github.com/kirillyu/jmeterReports/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223906417,"owners_count":17223045,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autogenerate","confluence","grafana","grafana-api","jmeter","reporting","reports","test-metrics"],"created_at":"2024-08-02T02:00:52.529Z","updated_at":"2024-11-10T02:31:37.561Z","avatar_url":"https://github.com/kirillyu.png","language":null,"funding_links":[],"categories":["Results Processing"],"sub_categories":["Reporting \u0026 Visualization"],"readme":"# Описание репозитория\nПоявилась новая версия основанная на InfluxDb 2 с языком flux и разворачиваемая через docker-compose - https://github.com/kirillyu/jmeterReports2\n\nДанный репозиторий содержит в себе темплейт для ApacheJmeter, который позволяет генерировать и заливать отчет в Confluence. К темплейту прилагается нужное окружение для ApacheJmeter, в которое входит папка lib из корня - в ней содержатся все используемые плагины. Там же расположен chromedriver.exe, необходимый для работы темплейта. Репозиторий, помимо этого, включает в себя все необходимые для рендера графиков и анализа результатов дашборды Grafana, которые полностью интегрированы с данным темплейтом. \n## Требования к среде использования\n0. JDK, желательно 1.8+ (Java)\n1. ApacheJmeter 5.3\n2. InfluxDB 1.8\n3. Grafana 7.0.0 + Grafana Image Renderer Plugin\n4. Установленный Google Chrome на машине, где будет генерироваться отчет\n5. Confluence (не Cloud версия)\n## Grafana\nНа выходе вы получите несколько Grafana дашбордов:\n\n**1. Test Trends**\n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89025122-f32d2580-d32e-11ea-88d4-de8cc93ce4ba.png\" width=\"100%\"\u003e\u003c/img\u003e \n\nДашборд позволяет переключаться между проектами и смотреть суммарные метрики по каждому из них.\n\n* Левая верхняя таблица - показывает тренд изменений среднего времени отклика и процента ошибок в длительных тестах (Stability). \n* Правая верхняя - аналогична левой, но показывает результаты для коротких тестов (Stress).\n* Нижняя левая - содержит лог запусков по этому проекту (показывает только запуски, длительность которых превышает 3 часа - это значение настраиваемое). Также имеются ссылки на подробные метрики выбранного запуска. При нажатии на ссылку попадаем в дашборд №2 - [Test Metrics](#metrics).\n* Нижняя правая - содержит все запуски по всем проектам с фильтром, аналогично левой таблице.\n\n\u003ca name=\"metrics\"/\u003e**2. Test Metrics**\n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89027755-c6c7d800-d333-11ea-97b4-3cec54facd4c.png\" width=\"100%\"\u003e\u003c/img\u003e \n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89029561-68045d80-d337-11ea-8120-4d95a5427635.PNG\" width=\"100%\"\u003e\u003c/img\u003e \n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89029704-aa2d9f00-d337-11ea-95c3-7f9e222786b8.PNG\" width=\"100%\"\u003e\u003c/img\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89030566-676cc680-d339-11ea-904f-0d97978a48d1.png\" width=\"100%\"\u003e\u003c/img\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89030707-b155ac80-d339-11ea-9e2f-832b9b9e22b4.PNG\" width=\"100%\"\u003e\u003c/img\u003e\n\n\nНа этом дашборде собрана полная информация по выбранному тесту. Вручную можно выбрать:\n* Проект\n* Количество отображаемых запусков\n* Нужный запуск\n* Конкретную операцию этого запуска. По ней появятся детальные метрики в конце дашборда\nЭтот дашборд используется для осмотра результатов и их анализа.\n\n**3. Render Dash**\n\nДанный дашборд аналогичен дашборду №2 - [Test Metrics](#metrics), но он содержит определенные фильтры и настройки, которые снижают наглядность результатов, но необходимы для рендеринга. К примеру, на нем отключена пагинация в таблицах и графики содержат топ 5 операций, остальные вынесены в \"Other\".\n\n\u003ca name=\"#jmeter\"/\u003e\u003ch1\u003eJmeter\u003c/h1\u003e \u003c/a\u003e\n\nВ самом ApacheJMeter для использования темплейта, после его [установки](#install), достаточно просто нажать на вкладку File, выбрать Templates..., кликнуть в выпадающем списке на \"Add autogenerated reports...\" и нажать на Merge. Мержить можно к уже готовым скриптам, после чего оформить нужные Thread Groups аналогично Main.\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89032614-b583c900-d33d-11ea-8b84-b8d00d7fb20a.png\" width=\"100%\"\u003e\u003c/img\u003e\nПосле добавления получится такой тест-план:\n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89038166-7f981200-d348-11ea-83fd-45921fd38171.png\" width=\"100%\"\u003e\u003c/img\u003e\n\n\u003ca name=\"install\"/\u003e\u003ch1\u003e Установка и настройка\u003c/h1\u003e \u003c/a\u003e\n\n* Первоначально необходимо поставить сам Apache Jmeter, получить актуальную версию можно по \u003ca href=\"https://jmeter.apache.org/download_jmeter.cgi\"\u003eссылке\u003c/a\u003e.\n* Далее нужны \u003ca href=\"https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0_windows_amd64.zip\"\u003eInfluxDB\u003c/a\u003e и \u003ca href=\"https://dl.grafana.com/oss/release/grafana-7.0.0.windows-amd64.msi\"\u003eGrafana\u003c/a\u003e - ссылка для Windows\n* Настраивать ничего не нужно на данном этапе. Из папки с InfluxDB запускаем файл influxd.exe - по дефолту Influx будет на порту 8086, кастомизация происходит в файле influxdb.conf, \n* Для запуска Grafana достаточно стартануть файл grafana-server - она запустится на порту 3000, конфигурационный файл defaults.ini\n* Confluence - корпоративная система, подразумевается, что он уже развернут в вашей компании. Если это не так - можно взять его \u003ca href=\"https://www.atlassian.com/ru/software/confluence/download\"\u003eотсюда\u003c/a\u003e, но настройки потребуется провести самостоятельно. Никаких кастомных настроек не требуется, просто наличие рабочего SPACE и пользователя, который имеет **доступ к API**\n* Устанавливаем \u003ca href=\"https://www.google.com/intl/ru_ru/chrome/\"\u003eChrome\u003c/a\u003e на машину, с которой будет генерироваться отчет\n\nЖелательно, чтобы машина, с которой будет подаваться нагрузка была минимально обременена сервисами, особенно Grafana, а тем более Confluence - иначе велик риск нехватки ресурсов для проведения нагрузки.\n\nПосле того как инструментарий развернут, можно переходить к его интеграции с данным репозиторием. Это делается в несколько довольно простых шагов:\n\n1. Скачиваем репозиторий\n2. Содержимое папки JmeterUpdate переносим с заменой в папку apache-jmeter-..., то есть корень вашего Apache Jmeter. Важно, что в папке /bin находится chromedriver.exe для Windows, с ним бывают некоторые проблемы. Если они возникнут или используется другая операционная система необходимо попробовать \u003ca href=\"https://chromedriver.chromium.org/downloads\"\u003eдругие версии драйвера\u003c/a\u003e.\n3. Создаём новую базу в InfluxDB (например, jmeter). \u003ca href=\"https://docs.influxdata.com/influxdb/v1.8/introduction/get-started/#creating-a-database\"\u003eИнструкция по созданию\u003c/a\u003e\n4. Первичная настройка Grafana заключается в подключении нужного Data Source. Configuration -\u003e Data Sources -\u003e Add Data Source -\u003e InfluxDB -\u003e вводим параметры подключения с указанием машины, на которую поставлен InfluxDB и порта (по дефолту 8086). Database вводим название базы, созданной в п.3. После этого нажимаем Save \u0026 Test.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89129564-f2e78280-d506-11ea-92b7-ee3cff6bade9.png\" width=\"100%\"\u003e\u003c/img\u003e\n\n5. Импортируем все дашборды из репозитория в Grafana. Правильно делается это так: в интерфейсе Grafana слева есть вкладка Dashboards, в ней нужно выбрать Manage. Далее на открывшейся странице выбираем Import, после чего нажать на Upload.json, туда по очереди загрузить 3 .json файла из репозитория, в каждом из которых необходимо указать Data Source из пункта 3.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89063549-06f97b80-d371-11ea-9184-bbd72ea94e02.png\" width=\"100%\"\u003e\u003c/img\u003e\n\n6. Чтобы в Grafana заработали перекрестные ссылки между дашбордами, в случае если она развернута не на localhost, необходимо прописать хост Grafana в переменных двух дашбордов: Test Trends и Test Metrics. \n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89130169-71462380-d50b-11ea-9563-3d67b745bccf.png\" width=\"100%\"\u003e\u003c/img\u003e\n\n7. Также нам понадобится от Grafana ключ API, который необходимо сгенерировать.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89258206-62a55c80-d630-11ea-89ea-7889b3d4a34f.png\" width=\"100%\"\u003e\u003c/img\u003e\n\n8. Последним этапом настройки Grafana будет установка плагина рендера графиков. Его можно взять \u003ca href=\"https://grafana.com/grafana/plugins/grafana-image-renderer/installation\"\u003eтут\u003c/a\u003e. Там же описана его установка. После нее нужно перезапустить Grafana (необъяснимо, но факт - иногда этот плагин не требуется).\n\n9. Теперь к Confluence. Для его использования нам нужно создать страницу-папку. В любом месте нашего пространства и с любой степенью вложенности. В эту папку, как дочерние элементы будут создаваться страницы с отчетами. Всё создается простым нажатием кнопки \"Создать\" вверху интерфейса.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89263547-1f4feb80-d63a-11ea-87b4-debfba1fc886.png\" width=\"100%\"\u003e\u003c/img\u003e\n\n10. Далее, внутри этой папки создаем еще одну страницу - она должна быть дочерней по отношению к странице в п.8, это будет шаблон нашего отчета, которым сейчас необходимо минимально наполнить. Я подготовил черновой вариант, который вы можете попробовать у себя и изменить его как вам будет удобно. Ключевым моментом являются названия картинок графиков - они должны заранее совпадать с названиями файлов, выгружаемых при рендере из Grafana в блоке Jmeter Metrics - по дефолту это так. Добавляется черновик следующим образом:\n* Переходим на страницу шаблона и нажимаем редактировать\n* В верхней панели редактора нажимаем \"+\" (\"Вставить прочий контент\") или просто нажимаем ctrl + shift + d.\n* В открывшееся окно вставляем разметку типа \"Confluence wiki\":\n\u003e`VERSION_NUM`\n\u003e\n\u003e`Дата формирования отчета: RELEASE_DATE`\n\u003e\n\u003e`Информация о проекте:`\n\u003e\n\u003e`***`\n\u003e\n\u003e`***`\n\u003e\n\u003e`Сводная таблица:`\n\u003e\n\u003e`ALL_TABLE`\n\u003e\n\u003e`Ошибки:`\n\u003e\n\u003e`ERROR_TABLE`\n\u003e\n\u003e`Тест проходил с TIME_FROM до RELEASE_DATE`\n\u003e\n\u003e`Метрики теста:`\n\u003e\n\u003e`!VUsers.png!`\n\u003e\n\u003e`!ErrorPerSec.png!`\n\u003e\n\u003e`!TotalTransactions.png!`\n\u003e\n\u003e`!EachOperation.png!`\n\u003e\n\u003e`!90.png!`\n\u003e\n\u003e`!95.png!`\n\u003e\n\u003e`!99.png!`\n\u003e\n\u003e`!TransactionsResponseTime.png!`\n\n После добавления черновик шаблона будет выглядеть вот так:\n \n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89263550-20811880-d63a-11ea-9c29-52794881da72.png\" width=\"100%\"\u003e\u003c/img\u003e\n\n Такой шаблон после теста будет сформирован в вот такую страницу:\n \n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89263553-20811880-d63a-11ea-8052-457d7a2ed8e2.png\" width=\"100%\"\u003e\u003c/img\u003e\n\n\n11. Осталось настроить только JMeter. После того как в тест [добавляется Template](#jmeter) необходимо заполнить только User Defined Variables\n\n\u003cimg src=\"https://user-images.githubusercontent.com/9977326/89268616-74dbc680-d641-11ea-8089-e90c4522bc09.PNG\" width=\"100%\"\u003e\u003c/img\u003e\n\n\nВсе переменные, кроме project_name, host, version_get_path, conf_folger и conf_templ, чаще всего, выставляют 1 раз. После их установки можно пересохранить темплейт (аналогично сохранению любого .jmx, но сделать это нужно по пути %jmeter_home%/bin/templates/Influx_Confluence.jmx с заменой), тогда при добавлении темплейта в любой скрипт, эти данные будут уже установлены верно. \n\n* project_name - Название текущего проекта, его для каждого приложения стоит выставлять свое. Требуется добавлять в DateAndVarSet запросе в switch case данные каждого проекта, чтобы использовался свой шаблон. По этому полю осуществляется группировка и фильтрация в Grafana\n* custom_duration - Поле используется для удобства и выводиться в теге запуска в графане. Поле обязательно, но в данной реализации кроме как на отображение ни на что не влияет. Можно использовать как переменную, для установки длительности теста\n* influx_host - Хост InfluxDb\n* test_name - Обязательный параметр, в дальнейшем будет использоваться для фильтрации в дашборде Test Trends\n* host - Хост вашего приложения, участвует в формировании названия отчета, которое в свою очередь получается из метки времени и текущей версии приложения. Версия получается по запросу host + /version_get_path.\n* version_get_path - Запрос к API для получения текущей версии приложения. Если не планируете её использовать отключите запрос GetVersion и закомментируйте 19 строку в DateAndVarSet\n* conf_folder - id родительской страницы (папки), в которую будут добавляться отчеты в Confluence - id можно получить из адресной строки, после входа в режим редактирования страницы.\n* conf_templ - id страницы с шаблоном отчетом, которая должна быть дочерней по отношению к conf_folder\n* conf_host - ссылка на ваш Confluence\n* chromedriver_path - путь до chromedriver, который будет использоваться. По дефолту находится в %jmeter_home%/bin и конструкция, указанная в параметрах ведет к нему\n* space - ваше рабочее пространство (область) в confluence. Можно получить из тела ответа, сделав запрос ${conf_host}/rest/api/content/АЙДИ_ЛЮБОЙ_СТРАНИЦЫ?expand=body.storage \n* grafana_data_source - он был сформирован на п.4. Переменная чувствительна к регистру\n* grafana_api_key - это то, что мы получили в п.7.\n* grafana_login - логин любого пользователя, у которого есть права типа Viewer и выше\n* grafana_pass - пароль того же пользователя\n* grafana_host - хост, на котором развернута Grafana\n* grafana_port - порт, на котором развернута Grafana\n* confl_user - логин пользователя confluence, который имеет доступ к Rest API\n* confl_pass - пароль того же пользователя\n\nПосле всех этих шагов, настройка завершена. Можно запускать любые тесты и наслаждаться отчетами и графиками. Темплейт буду обновлять в зависимости от найденных багов и неудобств. Если возникают вопросы и предложения - смело пишите в телеграмм @login40k - буду рад помочь.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkirillyu%2FjmeterReports","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkirillyu%2FjmeterReports","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkirillyu%2FjmeterReports/lists"}