Home
%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFor%20example%2C%20to%20execute%20the%20simple%20test%20script%20that%E2%80%99s%20provided%3A%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E.%2Fstarttest.sh%20simple.jmx%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EThe%20example%20output%20shows%20that%20the%20test%20plan%20is%20distributed%20to%20a%20single%20node%20(as%20this%20default%20implementation%20uses%20only%20one%20slave%20node).%3C%2FP%3E%0A%3CP%3E%3CCODE%20lang%3D%22markup%22%3E%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image010.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173734iDE25A453C8BE10DC%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image010.png%22%20alt%3D%22image010.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20you%20navigate%20to%20the%20Grafana%20dashboard%2C%20you%20can%20see%20output%20data%20like%20the%20following%2C%20which%20shows%20a%20different%20time%20range%20and%20application%20name%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image011.png%22%20style%3D%22width%3A%20625px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173735i501D05D1372A1A9F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image011.png%22%20alt%3D%22image011.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1312290431%22%20id%3D%22toc-hId-1312291204%22%20id%3D%22toc-hId--1407942276%22%20id%3D%22toc-hId--1407942276%22%20id%3D%22toc-hId--1407942276%22%20id%3D%22toc-hId--1407942276%22%20id%3D%22toc-hId--1407942276%22%3EWrite%20your%20own%20JMeter%20test%20plan%3C%2FH2%3E%0A%3CP%3ETo%20set%20up%20your%20own%20JMeter%20test%20plan%2C%20refer%20to%20the%20%3CA%20href%3D%22http%3A%2F%2Fjmeter.apache.org%2Fusermanual%2Fbuild-test-plan.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3EApache%20JMeter%3C%2FA%3E%20documentation.%20The%20key%20element%20to%20include%20in%20your%20test%20plan%20is%20a%20backend%20listener.%20To%20get%20real-time%20metrics%2C%20you%20must%20configure%20the%20JMeter%20backend%20listener%20to%20send%20data%20to%20InfluxDB.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ETo%20configure%20the%20backend%20listener%20in%20JMeter%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EOn%20the%20%3CSTRONG%3EBackend%20Listener%3C%2FSTRONG%3E%20screen%2C%20set%20the%20%3CSTRONG%3EBackend%20Listener%20Implementation%3C%2FSTRONG%3E%20to%20the%20%3CSTRONG%3Einfluxdb%3C%2FSTRONG%3E%20listener.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3EinfluxDb%20URL%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ehttp%3A%2F%2Fjmeter-influxdb%3A8086%2Fwrite%3Fdb%3Djmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Eapplication%3C%2FSTRONG%3E%20parameter%20to%20the%20name%20you%20want%20to%20use%20to%20filter%20results%20in%20the%20Grafana%20dashboard%2C%20such%20as%20%3CSTRONG%3Etest%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Emeasurement%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ejmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22image012.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173736i13A956134F59F83B%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image012.png%22%20alt%3D%22image012.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--495164032%22%20id%3D%22toc-hId--495163259%22%20id%3D%22toc-hId-1079570557%22%20id%3D%22toc-hId-1079570557%22%20id%3D%22toc-hId-1079570557%22%20id%3D%22toc-hId-1079570557%22%20id%3D%22toc-hId-1079570557%22%3ERun%20your%20own%20test%20plan%3C%2FH2%3E%0A%3CP%3EAfter%20creating%20your%20test%20plan%20using%20a%20local%20JMeter%20GUI%20instance%2C%20save%20a%20copy%20of%20the%20test%20plan%20to%20the%20%3CSTRONG%3Edeploy%3C%2FSTRONG%3E%20directory.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ERun%20the%20test%20plan%20with%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%20.%2Fstarttest.sh%20%7Btestplan.jmx%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--628848756%22%20id%3D%22toc-hId--628847983%22%20id%3D%22toc-hId--727883906%22%20id%3D%22toc-hId--727883906%22%20id%3D%22toc-hId--727883906%22%20id%3D%22toc-hId--727883906%22%20id%3D%22toc-hId--727883906%22%3EScale%20the%20test%20framework%3C%2FH2%3E%0A%3CP%3EThis%20test%20framework%20is%20deployed%20with%20a%20single%20JMeter%20slave%20node%2C%20but%20you%20can%20scale%20out%20the%20deployment.%20To%20run%20a%20larger%20test%20with%20more%20slaves%2C%20use%20the%20following%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20scale%20deployments%20jmeter-slaves%20--replicas%3D%7Bnumber%20required%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20command%20scales%20the%20number%20of%20slaves%20to%20the%20number%20specified.%20Note%20that%20the%20configuration%20is%20set%20to%20autoscale%20the%20cluster%2C%20and%20you%20must%20wait%20for%20the%20cluster%20to%20scale%20out.%20To%20check%20the%20status%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20deployments%20-w%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1858664077%22%20id%3D%22toc-hId-1858664850%22%20id%3D%22toc-hId-1759628927%22%20id%3D%22toc-hId-1759628927%22%20id%3D%22toc-hId-1759628927%22%20id%3D%22toc-hId-1759628927%22%20id%3D%22toc-hId-1759628927%22%3ETroubleshooting%20notes%3C%2FH2%3E%0A%3CP%3E%3CSTRONG%3ERemote%20slave%20does%20not%20start%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3ESometimes%20the%20remote%20slave%20cannot%20be%20contacted%20by%20the%20master%20node%20at%20test%20start.%20In%20this%20case%2C%20the%20IP%20address%20of%20the%20pod%20is%20the%20last%20one%20listed%20in%20the%20remote%20server%20list.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EUse%20the%20IP%20address%20of%20the%20remote%20slave%20to%20find%20the%20pod%20as%20follows%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20pods%20-o%20wide%20%7Cgrep%20%7Bip%20address%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFor%20example%2C%20to%20execute%20the%20simple%20test%20script%20that%E2%80%99s%20provided%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E.%2Fstarttest.sh%20simple.jmx%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20example%20output%20shows%20that%20the%20test%20plan%20is%20distributed%20to%20a%20single%20node%20(as%20this%20default%20implementation%20uses%20only%20one%20slave%20node).%3C%2FP%3E%0A%3CP%3E%3CCODE%20lang%3D%22markup%22%3E%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image010.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173734iDE25A453C8BE10DC%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image010.png%22%20alt%3D%22image010.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20you%20navigate%20to%20the%20Grafana%20dashboard%2C%20you%20can%20see%20output%20data%20like%20the%20following%2C%20which%20shows%20a%20different%20time%20range%20and%20application%20name%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image011.png%22%20style%3D%22width%3A%20625px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173735i501D05D1372A1A9F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image011.png%22%20alt%3D%22image011.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1312291204%22%20id%3D%22toc-hId-51210387%22%20id%3D%22toc-hId--47825536%22%20id%3D%22toc-hId--47825536%22%20id%3D%22toc-hId--47825536%22%20id%3D%22toc-hId--47825536%22%3EWrite%20your%20own%20JMeter%20test%20plan%3C%2FH2%3E%0A%3CP%3ETo%20set%20up%20your%20own%20JMeter%20test%20plan%2C%20refer%20to%20the%20%3CA%20href%3D%22http%3A%2F%2Fjmeter.apache.org%2Fusermanual%2Fbuild-test-plan.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3EApache%20JMeter%3C%2FA%3E%20documentation.%20The%20key%20element%20to%20include%20in%20your%20test%20plan%20is%20a%20backend%20listener.%20To%20get%20real-time%20metrics%2C%20you%20must%20configure%20the%20JMeter%20backend%20listener%20to%20send%20data%20to%20InfluxDB.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ETo%20configure%20the%20backend%20listener%20in%20JMeter%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EOn%20the%20%3CSTRONG%3EBackend%20Listener%3C%2FSTRONG%3E%20screen%2C%20set%20the%20%3CSTRONG%3EBackend%20Listener%20Implementation%3C%2FSTRONG%3E%20to%20the%20%3CSTRONG%3Einfluxdb%3C%2FSTRONG%3E%20listener.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3EinfluxDb%20URL%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ehttp%3A%2F%2Fjmeter-influxdb%3A8086%2Fwrite%3Fdb%3Djmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Eapplication%3C%2FSTRONG%3E%20parameter%20to%20the%20name%20you%20want%20to%20use%20to%20filter%20results%20in%20the%20Grafana%20dashboard%2C%20such%20as%20%3CSTRONG%3Etest%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Emeasurement%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ejmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22image012.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173736i13A956134F59F83B%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image012.png%22%20alt%3D%22image012.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--495163259%22%20id%3D%22toc-hId--1756244076%22%20id%3D%22toc-hId--1855279999%22%20id%3D%22toc-hId--1855279999%22%20id%3D%22toc-hId--1855279999%22%20id%3D%22toc-hId--1855279999%22%3ERun%20your%20own%20test%20plan%3C%2FH2%3E%0A%3CP%3EAfter%20creating%20your%20test%20plan%20using%20a%20local%20JMeter%20GUI%20instance%2C%20save%20a%20copy%20of%20the%20test%20plan%20to%20the%20%3CSTRONG%3Edeploy%3C%2FSTRONG%3E%20directory.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ERun%20the%20test%20plan%20with%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%20.%2Fstarttest.sh%20%7Btestplan.jmx%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--628847983%22%20id%3D%22toc-hId-731268757%22%20id%3D%22toc-hId-632232834%22%20id%3D%22toc-hId-632232834%22%20id%3D%22toc-hId-632232834%22%20id%3D%22toc-hId-632232834%22%3EScale%20the%20test%20framework%3C%2FH2%3E%0A%3CP%3EThis%20test%20framework%20is%20deployed%20with%20a%20single%20JMeter%20slave%20node%2C%20but%20you%20can%20scale%20out%20the%20deployment.%20To%20run%20a%20larger%20test%20with%20more%20slaves%2C%20use%20the%20following%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20scale%20deployments%20jmeter-slaves%20--replicas%3D%7Bnumber%20required%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20command%20scales%20the%20number%20of%20slaves%20to%20the%20number%20specified.%20Note%20that%20the%20configuration%20is%20set%20to%20autoscale%20the%20cluster%2C%20and%20you%20must%20wait%20for%20the%20cluster%20to%20scale%20out.%20To%20check%20the%20status%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20deployments%20-w%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1858664850%22%20id%3D%22toc-hId--1076185706%22%20id%3D%22toc-hId--1175221629%22%20id%3D%22toc-hId--1175221629%22%20id%3D%22toc-hId--1175221629%22%20id%3D%22toc-hId--1175221629%22%3ETroubleshooting%20notes%3C%2FH2%3E%0A%3CP%3E%3CSTRONG%3ERemote%20slave%20does%20not%20start%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3ESometimes%20the%20remote%20slave%20cannot%20be%20contacted%20by%20the%20master%20node%20at%20test%20start.%20In%20this%20case%2C%20the%20IP%20address%20of%20the%20pod%20is%20the%20last%20one%20listed%20in%20the%20remote%20server%20list.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EUse%20the%20IP%20address%20of%20the%20remote%20slave%20to%20find%20the%20pod%20as%20follows%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20pods%20-o%20wide%20%7Cgrep%20%7Bip%20address%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFor%20example%2C%20to%20execute%20the%20simple%20test%20script%20that%E2%80%99s%20provided%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E.%2Fstarttest.sh%20simple.jmx%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20example%20output%20shows%20that%20the%20test%20plan%20is%20distributed%20to%20a%20single%20node%20(as%20this%20default%20implementation%20uses%20only%20one%20slave%20node).%3C%2FP%3E%0A%3CP%3E%3CCODE%20lang%3D%22markup%22%3E%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image010.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173734iDE25A453C8BE10DC%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image010.png%22%20alt%3D%22image010.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20you%20navigate%20to%20the%20Grafana%20dashboard%2C%20you%20can%20see%20output%20data%20like%20the%20following%2C%20which%20shows%20a%20different%20time%20range%20and%20application%20name%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image011.png%22%20style%3D%22width%3A%20625px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173735i501D05D1372A1A9F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image011.png%22%20alt%3D%22image011.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1312291204%22%20id%3D%22toc-hId-1411327127%22%20id%3D%22toc-hId-1312291204%22%20id%3D%22toc-hId-1312291204%22%20id%3D%22toc-hId-1312291204%22%3EWrite%20your%20own%20JMeter%20test%20plan%3C%2FH2%3E%0A%3CP%3ETo%20set%20up%20your%20own%20JMeter%20test%20plan%2C%20refer%20to%20the%20%3CA%20href%3D%22http%3A%2F%2Fjmeter.apache.org%2Fusermanual%2Fbuild-test-plan.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3EApache%20JMeter%3C%2FA%3E%20documentation.%20The%20key%20element%20to%20include%20in%20your%20test%20plan%20is%20a%20backend%20listener.%20To%20get%20real-time%20metrics%2C%20you%20must%20configure%20the%20JMeter%20backend%20listener%20to%20send%20data%20to%20InfluxDB.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ETo%20configure%20the%20backend%20listener%20in%20JMeter%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EOn%20the%20%3CSTRONG%3EBackend%20Listener%3C%2FSTRONG%3E%20screen%2C%20set%20the%20%3CSTRONG%3EBackend%20Listener%20Implementation%3C%2FSTRONG%3E%20to%20the%20%3CSTRONG%3Einfluxdb%3C%2FSTRONG%3E%20listener.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3EinfluxDb%20URL%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ehttp%3A%2F%2Fjmeter-influxdb%3A8086%2Fwrite%3Fdb%3Djmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Eapplication%3C%2FSTRONG%3E%20parameter%20to%20the%20name%20you%20want%20to%20use%20to%20filter%20results%20in%20the%20Grafana%20dashboard%2C%20such%20as%20%3CSTRONG%3Etest%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Emeasurement%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ejmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22image012.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173736i13A956134F59F83B%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image012.png%22%20alt%3D%22image012.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--495163259%22%20id%3D%22toc-hId--396127336%22%20id%3D%22toc-hId--495163259%22%20id%3D%22toc-hId--495163259%22%20id%3D%22toc-hId--495163259%22%3ERun%20your%20own%20test%20plan%3C%2FH2%3E%0A%3CP%3EAfter%20creating%20your%20test%20plan%20using%20a%20local%20JMeter%20GUI%20instance%2C%20save%20a%20copy%20of%20the%20test%20plan%20to%20the%20%3CSTRONG%3Edeploy%3C%2FSTRONG%3E%20directory.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ERun%20the%20test%20plan%20with%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%20.%2Fstarttest.sh%20%7Btestplan.jmx%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--628847983%22%20id%3D%22toc-hId-2091385497%22%20id%3D%22toc-hId--628847983%22%20id%3D%22toc-hId--628847983%22%20id%3D%22toc-hId--628847983%22%3EScale%20the%20test%20framework%3C%2FH2%3E%0A%3CP%3EThis%20test%20framework%20is%20deployed%20with%20a%20single%20JMeter%20slave%20node%2C%20but%20you%20can%20scale%20out%20the%20deployment.%20To%20run%20a%20larger%20test%20with%20more%20slaves%2C%20use%20the%20following%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20scale%20deployments%20jmeter-slaves%20--replicas%3D%7Bnumber%20required%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20command%20scales%20the%20number%20of%20slaves%20to%20the%20number%20specified.%20Note%20that%20the%20configuration%20is%20set%20to%20autoscale%20the%20cluster%2C%20and%20you%20must%20wait%20for%20the%20cluster%20to%20scale%20out.%20To%20check%20the%20status%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20deployments%20-w%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1858664850%22%20id%3D%22toc-hId-283931034%22%20id%3D%22toc-hId-1858664850%22%20id%3D%22toc-hId-1858664850%22%20id%3D%22toc-hId-1858664850%22%3ETroubleshooting%20notes%3C%2FH2%3E%0A%3CP%3E%3CSTRONG%3ERemote%20slave%20does%20not%20start%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3ESometimes%20the%20remote%20slave%20cannot%20be%20contacted%20by%20the%20master%20node%20at%20test%20start.%20In%20this%20case%2C%20the%20IP%20address%20of%20the%20pod%20is%20the%20last%20one%20listed%20in%20the%20remote%20server%20list.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EUse%20the%20IP%20address%20of%20the%20remote%20slave%20to%20find%20the%20pod%20as%20follows%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20pods%20-o%20wide%20%7Cgrep%20%7Bip%20address%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFor%20example%2C%20to%20execute%20the%20simple%20test%20script%20that%E2%80%99s%20provided%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E.%2Fstarttest.sh%20simple.jmx%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20example%20output%20shows%20that%20the%20test%20plan%20is%20distributed%20to%20a%20single%20node%20(as%20this%20default%20implementation%20uses%20only%20one%20slave%20node).%3C%2FP%3E%0A%3CP%3E%3CCODE%20lang%3D%22markup%22%3E%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image010.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173734iDE25A453C8BE10DC%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image010.png%22%20alt%3D%22image010.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20you%20navigate%20to%20the%20Grafana%20dashboard%2C%20you%20can%20see%20output%20data%20like%20the%20following%2C%20which%20shows%20a%20different%20time%20range%20and%20application%20name%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image011.png%22%20style%3D%22width%3A%20625px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173735i501D05D1372A1A9F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image011.png%22%20alt%3D%22image011.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1312291204%22%20id%3D%22toc-hId--825361488%22%20id%3D%22toc-hId-51210387%22%20id%3D%22toc-hId-51210387%22%3EWrite%20your%20own%20JMeter%20test%20plan%3C%2FH2%3E%0A%3CP%3ETo%20set%20up%20your%20own%20JMeter%20test%20plan%2C%20refer%20to%20the%20%3CA%20href%3D%22http%3A%2F%2Fjmeter.apache.org%2Fusermanual%2Fbuild-test-plan.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3EApache%20JMeter%3C%2FA%3E%20documentation.%20The%20key%20element%20to%20include%20in%20your%20test%20plan%20is%20a%20backend%20listener.%20To%20get%20real-time%20metrics%2C%20you%20must%20configure%20the%20JMeter%20backend%20listener%20to%20send%20data%20to%20InfluxDB.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ETo%20configure%20the%20backend%20listener%20in%20JMeter%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EOn%20the%20%3CSTRONG%3EBackend%20Listener%3C%2FSTRONG%3E%20screen%2C%20set%20the%20%3CSTRONG%3EBackend%20Listener%20Implementation%3C%2FSTRONG%3E%20to%20the%20%3CSTRONG%3Einfluxdb%3C%2FSTRONG%3E%20listener.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3EinfluxDb%20URL%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ehttp%3A%2F%2Fjmeter-influxdb%3A8086%2Fwrite%3Fdb%3Djmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Eapplication%3C%2FSTRONG%3E%20parameter%20to%20the%20name%20you%20want%20to%20use%20to%20filter%20results%20in%20the%20Grafana%20dashboard%2C%20such%20as%20%3CSTRONG%3Etest%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Emeasurement%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ejmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22image012.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173736i13A956134F59F83B%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image012.png%22%20alt%3D%22image012.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EYou%20can%20also%20send%20your%20result%20data%20to%20log%20analytics%20using%20the%20Azure%20backend%20listener%20as%20described%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazurecat%2Fsend-your-jmeter-test-results-to-azure-application-insights%2Fba-p%2F1195320%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3Ehere%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--495163259%22%20id%3D%22toc-hId-1662151345%22%20id%3D%22toc-hId--1756244076%22%20id%3D%22toc-hId--1756244076%22%3ERun%20your%20own%20test%20plan%3C%2FH2%3E%0A%3CP%3EAfter%20creating%20your%20test%20plan%20using%20a%20local%20JMeter%20GUI%20instance%2C%20save%20a%20copy%20of%20the%20test%20plan%20to%20the%20%3CSTRONG%3Edeploy%3C%2FSTRONG%3E%20directory.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ERun%20the%20test%20plan%20with%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%20.%2Fstarttest.sh%20%7Btestplan.jmx%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--628847983%22%20id%3D%22toc-hId--145303118%22%20id%3D%22toc-hId-731268757%22%20id%3D%22toc-hId-731268757%22%3EScale%20the%20test%20framework%3C%2FH2%3E%0A%3CP%3EThis%20test%20framework%20is%20deployed%20with%20a%20single%20JMeter%20slave%20node%2C%20but%20you%20can%20scale%20out%20the%20deployment.%20To%20run%20a%20larger%20test%20with%20more%20slaves%2C%20use%20the%20following%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20scale%20deployments%20jmeter-slaves%20--replicas%3D%7Bnumber%20required%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20command%20scales%20the%20number%20of%20slaves%20to%20the%20number%20specified.%20Note%20that%20the%20configuration%20is%20set%20to%20autoscale%20the%20cluster%2C%20and%20you%20must%20wait%20for%20the%20cluster%20to%20scale%20out.%20To%20check%20the%20status%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20deployments%20-w%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1858664850%22%20id%3D%22toc-hId--1952757581%22%20id%3D%22toc-hId--1076185706%22%20id%3D%22toc-hId--1076185706%22%3ETroubleshooting%20notes%3C%2FH2%3E%0A%3CP%3E%3CSTRONG%3ERemote%20slave%20does%20not%20start%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3ESometimes%20the%20remote%20slave%20cannot%20be%20contacted%20by%20the%20master%20node%20at%20test%20start.%20In%20this%20case%2C%20the%20IP%20address%20of%20the%20pod%20is%20the%20last%20one%20listed%20in%20the%20remote%20server%20list.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EUse%20the%20IP%20address%20of%20the%20remote%20slave%20to%20find%20the%20pod%20as%20follows%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20pods%20-o%20wide%20%7Cgrep%20%7Bip%20address%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFor%20example%2C%20to%20execute%20the%20simple%20test%20script%20that%E2%80%99s%20provided%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E.%2Fstarttest.sh%20simple.jmx%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20example%20output%20shows%20that%20the%20test%20plan%20is%20distributed%20to%20a%20single%20node%20(as%20this%20default%20implementation%20uses%20only%20one%20slave%20node).%3C%2FP%3E%0A%3CP%3E%3CCODE%20lang%3D%22markup%22%3E%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image010.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173734iDE25A453C8BE10DC%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image010.png%22%20alt%3D%22image010.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20you%20navigate%20to%20the%20Grafana%20dashboard%2C%20you%20can%20see%20output%20data%20like%20the%20following%2C%20which%20shows%20a%20different%20time%20range%20and%20application%20name%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image011.png%22%20style%3D%22width%3A%20625px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173735i501D05D1372A1A9F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image011.png%22%20alt%3D%22image011.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1312291204%22%20id%3D%22toc-hId-534755252%22%20id%3D%22toc-hId-1411327127%22%3EWrite%20your%20own%20JMeter%20test%20plan%3C%2FH2%3E%0A%3CP%3ETo%20set%20up%20your%20own%20JMeter%20test%20plan%2C%20refer%20to%20the%20%3CA%20href%3D%22http%3A%2F%2Fjmeter.apache.org%2Fusermanual%2Fbuild-test-plan.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3EApache%20JMeter%3C%2FA%3E%20documentation.%20The%20key%20element%20to%20include%20in%20your%20test%20plan%20is%20a%20backend%20listener.%20To%20get%20real-time%20metrics%2C%20you%20must%20configure%20the%20JMeter%20backend%20listener%20to%20send%20data%20to%20InfluxDB.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ETo%20configure%20the%20backend%20listener%20in%20JMeter%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EOn%20the%20%3CSTRONG%3EBackend%20Listener%3C%2FSTRONG%3E%20screen%2C%20set%20the%20%3CSTRONG%3EBackend%20Listener%20Implementation%3C%2FSTRONG%3E%20to%20the%20%3CSTRONG%3Einfluxdb%3C%2FSTRONG%3E%20listener.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3EinfluxDb%20URL%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ehttp%3A%2F%2Fjmeter-influxdb%3A8086%2Fwrite%3Fdb%3Djmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Eapplication%3C%2FSTRONG%3E%20parameter%20to%20the%20name%20you%20want%20to%20use%20to%20filter%20results%20in%20the%20Grafana%20dashboard%2C%20such%20as%20%3CSTRONG%3Etest%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Emeasurement%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ejmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22image012.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173736i13A956134F59F83B%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image012.png%22%20alt%3D%22image012.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EYou%20can%20also%20send%20your%20result%20data%20to%20log%20analytics%20using%20the%20Azure%20backend%20listener%20as%20described%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazurecat%2Fsend-your-jmeter-test-results-to-azure-application-insights%2Fba-p%2F1195320%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3Ehere%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--495163259%22%20id%3D%22toc-hId--1272699211%22%20id%3D%22toc-hId--396127336%22%3ERun%20your%20own%20test%20plan%3C%2FH2%3E%0A%3CP%3EAfter%20creating%20your%20test%20plan%20using%20a%20local%20JMeter%20GUI%20instance%2C%20save%20a%20copy%20of%20the%20test%20plan%20to%20the%20%3CSTRONG%3Edeploy%3C%2FSTRONG%3E%20directory.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ERun%20the%20test%20plan%20with%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%20.%2Fstarttest.sh%20%7Btestplan.jmx%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--628847983%22%20id%3D%22toc-hId-1214813622%22%20id%3D%22toc-hId-2091385497%22%3EScale%20the%20test%20framework%3C%2FH2%3E%0A%3CP%3EThis%20test%20framework%20is%20deployed%20with%20a%20single%20JMeter%20slave%20node%2C%20but%20you%20can%20scale%20out%20the%20deployment.%20To%20run%20a%20larger%20test%20with%20more%20slaves%2C%20use%20the%20following%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20scale%20deployments%20jmeter-slaves%20--replicas%3D%7Bnumber%20required%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20command%20scales%20the%20number%20of%20slaves%20to%20the%20number%20specified.%20Note%20that%20the%20configuration%20is%20set%20to%20autoscale%20the%20cluster%2C%20and%20you%20must%20wait%20for%20the%20cluster%20to%20scale%20out.%20To%20check%20the%20status%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20deployments%20-w%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1858664850%22%20id%3D%22toc-hId--592640841%22%20id%3D%22toc-hId-283931034%22%3ETroubleshooting%20notes%3C%2FH2%3E%0A%3CP%3E%3CSTRONG%3ERemote%20slave%20does%20not%20start%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3ESometimes%20the%20remote%20slave%20cannot%20be%20contacted%20by%20the%20master%20node%20at%20test%20start.%20In%20this%20case%2C%20the%20IP%20address%20of%20the%20pod%20is%20the%20last%20one%20listed%20in%20the%20remote%20server%20list.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EUse%20the%20IP%20address%20of%20the%20remote%20slave%20to%20find%20the%20pod%20as%20follows%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20pods%20-o%20wide%20%7Cgrep%20%7Bip%20address%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1197379%22%20slang%3D%22en-US%22%3EScalable%20Apache%20JMeter%20Test%20Framework%20using%20Azure%20Kubernetes%20Service%20and%20Grafana%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1197379%22%20slang%3D%22en-US%22%3E%3CP%3EThis%20testing%20framework%20provides%20a%20scalable%20test%20harness%20that%20you%20can%20use%20for%20load%20testing%20applications%20using%20Apache%20JMeter%20test%20scripts.%20The%20framework%20uses%20Azure%20Kubernetes%20Service%20(AKS)%20in%20a%20distributed%20architecture%20that%20can%20carry%20out%20an%20intensive%20load%20test%2C%20simulating%20hundreds%20and%20thousands%20of%20simultaneous%20users.%20The%20results%20of%20the%20load%20testing%20are%20sent%20to%20InfluxDB%20using%20the%20built-in%20backend%20listener%20available%20in%20JMeter.%20Grafana%20is%20used%20to%20render%20this%20data%20in%20an%20easily%20consumable%20dashboard.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20testing%20framework%20utilizes%20a%20master%20JMeter%20node%2C%20and%20one%20or%20more%20slave%20nodes%20are%20used%20to%20run%20the%20tests.%20This%20implementation%20deploys%20a%20single%20JMeter%20slave%20pod%2C%20but%20you%20can%20scale%20it%20as%20needed%20to%20support%20the%20required%20number%20of%20client%20threads.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ETo%20use%20this%20framework%2C%20you%20must%20have%20a%20JMeter%20test%20plan%20in%20the%20form%20of%20a%20.jmx%20file%20configured%20with%20a%20backend%20listener.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--1407942276%22%20id%3D%22toc-hId--825361488%22%3EArchitecture%3C%2FH2%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22image001.jpg%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173737i288A9D2D99E44F7D%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image001.jpg%22%20alt%3D%22JMeter%20architecture%20on%20Azure%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EJMeter%20architecture%20on%20Azure%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EThe%20framework%20uses%20a%20Kubernetes-based%20deployment%20of%20Apache%20JMeter%2C%20InfluxDB%2C%20and%20Grafana.%20AKS%20is%20a%20managed%20platform%20that%20makes%20it%20easy%20to%20set%20up%20a%20distributed%20architecture%20on%20Azure.%20The%20framework%20builds%20on%20Apache%20JMeter's%20%3CA%20href%3D%22https%3A%2F%2Fjmeter.apache.org%2Fusermanual%2Fjmeter_distributed_testing_step_by_step.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3Edistributed%20load%20testing%20model%3C%2FA%3E%20whereby%20tests%20are%20initiated%20from%20one%20JMeter%20master%20node%2C%20which%20then%20distributes%20the%20test%20script%20to%20the%20slaves%20(JMeter%20instances).%20The%20slaves%20are%20pods%20that%20carry%20out%20the%20load%20testing.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3ENote%3A%3C%2FSTRONG%3E%20The%20test%20plan%20is%20replicated%20to%20all%20slaves%2C%20so%20you%20must%20consider%20the%20overall%20client%20load.%20For%20example%2C%20a%20test%20plan%20with%20100%20client%20threads%20distributed%20to%20five%20JMeter%20slaves%20results%20in%20500%20active%20clients.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1079570557%22%20id%3D%22toc-hId-1662151345%22%3EInstall%3C%2FH2%3E%0A%3CP%3ETo%20get%20started%2C%20set%20up%20the%20environment%20and%20prerequisites%20as%20follows%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EMake%20sure%20you%20have%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fcli%2Fazure%2Finstall-azure-cli%3Fview%3Dazure-cli-latest%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAzure%20CLI%3C%2FA%3E%20version%202.0.80%20or%20above%20(assumes%20use%20of%20a%20Linux%20client%2C%20not%20PowerShell).%3C%2FLI%3E%0A%3CLI%3EInstall%20%3CA%20href%3D%22https%3A%2F%2Fkubernetes.io%2Fdocs%2Ftasks%2Ftools%2Finstall-kubectl%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ekubectl%3C%2FA%3E.%3C%2FLI%3E%0A%3CLI%3EClone%20the%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fpetegrimsdale%2Faks_testing_fwk%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EGitHub%20repo%3C%2FA%3E.%3C%2FLI%3E%0A%3CLI%3ENavigate%20to%20the%20%3CSTRONG%3Einstalls%3C%2FSTRONG%3E%20directory.%3C%2FLI%3E%0A%3CLI%3EMake%20the%20install.sh%20script%20executable%3A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CH2%20id%3D%22toc-hId--727883906%22%20id%3D%22toc-hId--145303118%22%3ERun%20install.sh%3C%2FH2%3E%0A%3CP%3EYou%20can%20use%20the%20install.sh%20script%20for%20installation%2C%20validation%2C%20and%20cleanup%20by%20using%20the%20following%20parameters%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CSTRONG%3Evalidate%26nbsp%3B%26nbsp%3B%20%3C%2FSTRONG%3EValidates%20the%20target%20environment%20and%20checks%20the%20resource%20group%2C%20service%20principal%20name%2C%20and%20AKS.%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Einstall.sh%20validate%20-g%20%7Bresource-group-name%7D%20-s%20%7Bservice-principal-name%7D%20-l%20%7Blocation%7D%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3Einstall%26nbsp%3B%26nbsp%3B%20%3C%2FSTRONG%3EDeploys%20to%20the%20target%20environment%20using%20the%20resource%20group%20and%20location%20defined.%20It%20creates%20the%20resource%20group%2C%20a%20service%20principal%2C%20and%20a%20repository%20in%20Azure%20Container%20Registry.%20Then%20it%20builds%20and%20uploads%20containers%20for%20the%20JMeter%20master%2C%20JMeter%20slave%20and%20reporting.%20A%20reporting%20node%20pool%20is%20created%2C%20followed%20by%20the%20%26nbsp%3Bcreation%20an%20AKS%20cluster%2C%20and%20then%20all%20the%20elements%20required%20to%20run%20a%20test%20are%20deployed%20and%20configured.%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Einstall.sh%20install%20-g%20%7Bresource-group-name%7D%20-s%20%7Bservice-principal-name%7D%20-l%20%7Blocation%7D%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3Edelete%26nbsp%3B%26nbsp%3B%20%3C%2FSTRONG%3ERemoves%20all%20resources%20and%20the%20service%20principal.%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Einstall.sh%20delete%20-g%20%7Bresource-group-name%7D%20-s%20%7Bservice-principal-name%7D%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3Ekube_deploy%26nbsp%3B%26nbsp%3B%20%3C%2FSTRONG%3EDeploys%20and%20configures%20all%20the%20Kubernetes%20elements%20required%20to%20deploy%20pods.%20It%20also%20configures%20InfluxDB%20and%20Grafana%20on%20an%20existing%20test%20framework%20cluster.%20%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Einstall.sh%20kube_deploy%20-g%20%7Bresource-group-name%7D%20-c%20%7Baks-cluster-name%7D%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CH2%20id%3D%22toc-hId-1759628927%22%20id%3D%22toc-hId--1952757581%22%3EAccess%20the%20Grafana%20dashboard%3C%2FH2%3E%0A%3CP%3EAfter%20the%20deployment%20has%20completed%20successfully%2C%20you%20can%20go%20to%20the%20Grafana%20dashboard%20via%20the%20public%20IP%20address%20of%20the%20provisioned%20load%20balancer.%20The%20easiest%20way%20to%20obtain%20this%20address%20is%20to%20run%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20svc%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image002.png%22%20style%3D%22width%3A%20708px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173738iBCAABBD4A91B43DB%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image002.png%22%20alt%3D%22image002.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EUsing%20the%20public%20IP%20address%20of%20the%20load%20balancer%2C%20you%20can%20then%20access%20the%20Grafana%20logon%20window.%20To%20log%20on%2C%20use%20the%20default%20credentials%E2%80%94%3CSTRONG%3Eadmin%3C%2FSTRONG%3E%20for%20username%20and%20%3CSTRONG%3Eadmin%3C%2FSTRONG%3E%20for%20password.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image003.png%22%20style%3D%22width%3A%20368px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173739i7C9A6B83FB212363%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image003.png%22%20alt%3D%22image003.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--47825536%22%20id%3D%22toc-hId-534755252%22%3ESet%20up%20the%20JMeter%20dashboard%3C%2FH2%3E%0A%3CP%3EWhen%20you%20start%20Grafana%2C%20a%20default%20data%20source%20is%20used%20to%20display%20an%20initial%20dashboard%2C%20which%20is%20loaded%20as%20part%20of%20the%20installation.%20To%20open%20the%20default%20dashboard%20that%20supports%20testing%2C%20select%20%3CSTRONG%3EJMeter%20Dashboard%3C%2FSTRONG%3E.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image004.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173740iB4285755070B2653%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image004.png%22%20alt%3D%22image004.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20no%20dashboard%20is%20available%2C%20follow%20the%20steps%20below%20to%20load%20a%20JMeter%20dashboard%20to%20display%20testing%20data%3A%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3ESelect%20%3CSTRONG%3EDashboards%3C%2FSTRONG%3E%2C%20then%20select%20%3CSTRONG%3EManage%3C%2FSTRONG%3E%20as%20shown%3A%3CBR%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image005.png%22%20style%3D%22width%3A%20425px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173727i479F5EC5E51128D2%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image005.png%22%20alt%3D%22image005.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3EIn%20the%20%3CSTRONG%3EDashboards%3C%2FSTRONG%3E%20window%2C%20select%20%3CSTRONG%3EImport%3C%2FSTRONG%3E.%3CBR%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image006.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173728i8835FE57412664D0%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image006.png%22%20alt%3D%22image006.png%22%20%2F%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLI%3E%0A%3CLI%3EIn%20the%20%3CSTRONG%3EImport%3C%2FSTRONG%3E%20window%2C%20enter%20%3CSTRONG%3E4026%3C%2FSTRONG%3E%20to%20identify%20the%20dashboard%20from%20Grafana%20labs%20and%20then%20press%20Tab.%3CBR%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image007.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173730i9DC0D7B8A44C9525%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image007.png%22%20alt%3D%22image007.png%22%20%2F%3E%3C%2FSPAN%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%3EIn%20the%20settings%20options%20that%20appear%2C%20type%20%3CSTRONG%3Ejmeterdb%3C%2FSTRONG%3E%20for%20%3CSTRONG%3EDB%20name%3C%2FSTRONG%3E%2C%20then%20click%20%3CSTRONG%3EImport%3C%2FSTRONG%3E%20to%20load%20the%20dashboard%20with%20the%20default%20settings.%3CBR%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image008.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173731i4828B645BDC29BCA%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image008.png%22%20alt%3D%22image008.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CH2%20id%3D%22toc-hId--1855279999%22%20id%3D%22toc-hId--1272699211%22%3EUse%20the%20Grafana%20dashboard%3C%2FH2%3E%0A%3CP%3EWhen%20the%20Grafana%20dashboard%20for%20JMeter%20is%20loaded%2C%20note%20the%20following%20items%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CSTRONG%3EName%3C%2FSTRONG%3E%20(marked%20%3CEM%3E1%3C%2FEM%3E%20in%20the%20following%20figure)%20is%20the%20application%20name%20and%20is%20linked%20to%20your%20JMeter%20test%20plan%20configuration.%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3EStart%2FStop%20marker%3C%2FSTRONG%3E%20(%3CEM%3E2%3C%2FEM%3E)%20indicates%20when%20a%20JMeter%20test%20starts%20and%20stops.%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3ELast%2030%20minutes%3C%2FSTRONG%3E%20(%3CEM%3E3%3C%2FEM%3E)%20shows%20the%20time%20period%20for%20the%20data%20currently%20displayed%20on%20the%20dashboard.%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CH2%20id%3D%22toc-hId-632232834%22%20id%3D%22toc-hId-1214813622%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image009.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173741iD99F484063FDE769%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image009.png%22%20alt%3D%22image009.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FH2%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--1175221629%22%20id%3D%22toc-hId--592640841%22%3ERun%20your%20first%20JMeter%20test%3C%2FH2%3E%0A%3CP%3ETo%20validate%20the%20deployment%2C%20a%20simple%20test%20script%20has%20been%20provided.%20To%20run%20this%20test%2C%20navigate%20to%20the%20%3CSTRONG%3Edeploy%3C%2FSTRONG%3E%20directory%2C%20then%20use%20the%20starttest.sh%20file%20as%20follows%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EMake%20the%20file%20starttest.sh%20executable%3A%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Echmod%20%2Bx%20starttest.sh%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLI%3E%0A%3CLI%3EExecute%20a%20test%20run%3A%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E.%2Fstarttest.sh%20%7Btestfilename%7D%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLI%3E%3C%2FOL%3E%3C%2FLINGO-BODY%3E%0A%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFor%20example%2C%20to%20execute%20the%20simple%20test%20script%20that%E2%80%99s%20provided%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E.%2Fstarttest.sh%20simple.jmx%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20example%20output%20shows%20that%20the%20test%20plan%20is%20distributed%20to%20a%20single%20node%20(as%20this%20default%20implementation%20uses%20only%20one%20slave%20node).%3C%2FP%3E%0A%3CP%3E%3CCODE%20lang%3D%22markup%22%3E%3C%2FCODE%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image010.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173734iDE25A453C8BE10DC%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image010.png%22%20alt%3D%22image010.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20you%20navigate%20to%20the%20Grafana%20dashboard%2C%20you%20can%20see%20output%20data%20like%20the%20following%2C%20which%20shows%20a%20different%20time%20range%20and%20application%20name%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22image011.png%22%20style%3D%22width%3A%20625px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173735i501D05D1372A1A9F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image011.png%22%20alt%3D%22image011.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1312291204%22%20id%3D%22toc-hId-1894871992%22%3EWrite%20your%20own%20JMeter%20test%20plan%3C%2FH2%3E%0A%3CP%3ETo%20set%20up%20your%20own%20JMeter%20test%20plan%2C%20refer%20to%20the%20%3CA%20href%3D%22http%3A%2F%2Fjmeter.apache.org%2Fusermanual%2Fbuild-test-plan.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EApache%20JMeter%3C%2FA%3E%20documentation.%20The%20key%20element%20to%20include%20in%20your%20test%20plan%20is%20a%20backend%20listener.%20To%20get%20real-time%20metrics%2C%20you%20must%20configure%20the%20JMeter%20backend%20listener%20to%20send%20data%20to%20InfluxDB.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ETo%20configure%20the%20backend%20listener%20in%20JMeter%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EOn%20the%20%3CSTRONG%3EBackend%20Listener%3C%2FSTRONG%3E%20screen%2C%20set%20the%20%3CSTRONG%3EBackend%20Listener%20Implementation%3C%2FSTRONG%3E%20to%20the%20%3CSTRONG%3Einfluxdb%3C%2FSTRONG%3E%20listener.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3EinfluxDb%20URL%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ehttp%3A%2F%2Fjmeter-influxdb%3A8086%2Fwrite%3Fdb%3Djmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Eapplication%3C%2FSTRONG%3E%20parameter%20to%20the%20name%20you%20want%20to%20use%20to%20filter%20results%20in%20the%20Grafana%20dashboard%2C%20such%20as%20%3CSTRONG%3Etest%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3CLI%3ESet%20the%20%3CSTRONG%3Emeasurement%3C%2FSTRONG%3E%20parameter%20to%20%3CSTRONG%3Ejmeter%3C%2FSTRONG%3E.%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22image012.png%22%20style%3D%22width%3A%20624px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173736i13A956134F59F83B%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22image012.png%22%20alt%3D%22image012.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EYou%20can%20also%20send%20your%20result%20data%20to%20log%20analytics%20using%20the%20Azure%20backend%20listener%20as%20described%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazurecat%2Fsend-your-jmeter-test-results-to-azure-application-insights%2Fba-p%2F1195320%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3Ehere%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--495163259%22%20id%3D%22toc-hId-87417529%22%3ERun%20your%20own%20test%20plan%3C%2FH2%3E%0A%3CP%3EAfter%20creating%20your%20test%20plan%20using%20a%20local%20JMeter%20GUI%20instance%2C%20save%20a%20copy%20of%20the%20test%20plan%20to%20the%20%3CSTRONG%3Edeploy%3C%2FSTRONG%3E%20directory.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ERun%20the%20test%20plan%20with%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%20.%2Fstarttest.sh%20%7Btestplan.jmx%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId--628847983%22%20id%3D%22toc-hId--1021874993%22%3EScale%20the%20test%20framework%3C%2FH2%3E%0A%3CP%3EThis%20test%20framework%20is%20deployed%20with%20a%20single%20JMeter%20slave%20node%2C%20but%20you%20can%20scale%20out%20the%20deployment.%20To%20run%20a%20larger%20test%20with%20more%20slaves%2C%20use%20the%20following%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20scale%20deployments%20jmeter-slaves%20--replicas%3D%7Bnumber%20required%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20command%20scales%20the%20number%20of%20slaves%20to%20the%20number%20specified.%20Note%20that%20the%20configuration%20is%20set%20to%20autoscale%20the%20cluster%2C%20and%20you%20must%20wait%20for%20the%20cluster%20to%20scale%20out.%20To%20check%20the%20status%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20deployments%20-w%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-1858664850%22%20id%3D%22toc-hId-1465637840%22%3ETroubleshooting%20notes%3C%2FH2%3E%0A%3CP%3E%3CSTRONG%3ERemote%20slave%20does%20not%20start%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3ESometimes%20the%20remote%20slave%20cannot%20be%20contacted%20by%20the%20master%20node%20at%20test%20start.%20In%20this%20case%2C%20the%20IP%20address%20of%20the%20pod%20is%20the%20last%20one%20listed%20in%20the%20remote%20server%20list.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EUse%20the%20IP%20address%20of%20the%20remote%20slave%20to%20find%20the%20pod%20as%20follows%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Ekubectl%20get%20pods%20-o%20wide%20%7Cgrep%20%7Bip%20address%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-1197379%22%20slang%3D%22en-US%22%3E%3CP%3EThis%20testing%20framework%20provides%20a%20scalable%20test%20harness%20that%20you%20can%20use%20for%20load%20testing%20applications%20using%20Apache%20JMeter%20test%20scripts.%20The%20framework%20uses%20Azure%20Kubernetes%20Service%20(AKS)%20in%20a%20distributed%20architecture%20that%20can%20carry%20out%20an%20intensive%20load%20test%2C%20simulating%20hundreds%20and%20thousands%20of%20simultaneous%20users.%20The%20results%20of%20the%20load%20testing%20are%20sent%20to%20InfluxDB%20using%20the%20built-in%20backend%20listener%20available%20in%20JMeter.%20Grafana%20is%20used%20to%20render%20this%20data%20in%20an%20easily%20consumable%20dashboard.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20testing%20framework%20provides%20a%20scalable%20test%20harness%20that%20you%20can%20use%20for%20load%20testing%20applications%20using%20Apache%20JMeter%20test%20scripts.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22Azure%20and%20JMeter%202.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F173721i9A0FE320E766B024%2Fimage-size%2Fmedium%3Fv%3D1.0%26amp%3Bpx%3D400%22%20title%3D%22Azure%20and%20JMeter%202.png%22%20alt%3D%22Azure%20and%20JMeter%202.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1197379%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EScalable%20Apache%20JMeter%20Test%20Framework%20using%20AKS%20and%20Grafana%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Microsoft

This testing framework provides a scalable test harness that you can use for load testing applications using Apache JMeter test scripts. The framework uses Azure Kubernetes Service (AKS) in a distributed architecture that can carry out an intensive load test, simulating hundreds and thousands of simultaneous users. The results of the load testing are sent to InfluxDB using the built-in backend listener available in JMeter. Grafana is used to render this data in an easily consumable dashboard.

 

The testing framework utilizes a master JMeter node, and one or more slave nodes are used to run the tests. This implementation deploys a single JMeter slave pod, but you can scale it as needed to support the required number of client threads.

 

To use this framework, you must have a JMeter test plan in the form of a .jmx file configured with a backend listener.

 

Architecture

JMeter architecture on AzureJMeter architecture on Azure

The framework uses a Kubernetes-based deployment of Apache JMeter, InfluxDB, and Grafana. AKS is a managed platform that makes it easy to set up a distributed architecture on Azure. The framework builds on Apache JMeter's distributed load testing model whereby tests are initiated from one JMeter master node, which then distributes the test script to the slaves (JMeter instances). The slaves are pods that carry out the load testing.

 

Note: The test plan is replicated to all slaves, so you must consider the overall client load. For example, a test plan with 100 client threads distributed to five JMeter slaves results in 500 active clients.

 

Install

To get started, set up the environment and prerequisites as follows:

 

  1. Make sure you have Azure CLI version 2.0.80 or above (assumes use of a Linux client, not PowerShell).
  2. Install kubectl.
  3. Clone the GitHub repo.
  4. Navigate to the installs directory.
  5. Make the install.sh script executable:

Run install.sh

You can use the install.sh script for installation, validation, and cleanup by using the following parameters:

 

  • validate   Validates the target environment and checks the resource group, service principal name, and AKS.
    install.sh validate -g {resource-group-name} -s {service-principal-name} -l {location}​
  • install   Deploys to the target environment using the resource group and location defined. It creates the resource group, a service principal, and a repository in Azure Container Registry. Then it builds and uploads containers for the JMeter master, JMeter slave and reporting. A reporting node pool is created, followed by the  creation an AKS cluster, and then all the elements required to run a test are deployed and configured.
    install.sh install -g {resource-group-name} -s {service-principal-name} -l {location}​
  • delete   Removes all resources and the service principal.
    install.sh delete -g {resource-group-name} -s {service-principal-name}​
  • kube_deploy   Deploys and configures all the Kubernetes elements required to deploy pods. It also configures InfluxDB and Grafana on an existing test framework cluster.
    install.sh kube_deploy -g {resource-group-name} -c {aks-cluster-name}​

Access the Grafana dashboard

After the deployment has completed successfully, you can go to the Grafana dashboard via the public IP address of the provisioned load balancer. The easiest way to obtain this address is to run:

 

 

kubectl get svc

 

 

 

image002.png

 

Using the public IP address of the load balancer, you can then access the Grafana logon window. To log on, use the default credentials—admin for username and admin for password.

image003.png

 

Set up the JMeter dashboard

When you start Grafana, a default data source is used to display an initial dashboard, which is loaded as part of the installation. To open the default dashboard that supports testing, select JMeter Dashboard.

 

image004.png

 

If no dashboard is available, follow the steps below to load a JMeter dashboard to display testing data:

  1. Select Dashboards, then select Manage as shown:
    image005.png
  2. In the Dashboards window, select Import.
    image006.png

  3. In the Import window, enter 4026 to identify the dashboard from Grafana labs and then press Tab.
    image007.png

     

  4. In the settings options that appear, type jmeterdb for DB name, then click Import to load the dashboard with the default settings.
    image008.png

Use the Grafana dashboard

When the Grafana dashboard for JMeter is loaded, note the following items:

 

  • Name (marked 1 in the following figure) is the application name and is linked to your JMeter test plan configuration.
  • Start/Stop marker (2) indicates when a JMeter test starts and stops.
  • Last 30 minutes (3) shows the time period for the data currently displayed on the dashboard.

image009.png

 

Run your first JMeter test

To validate the deployment, a simple test script has been provided. To run this test, navigate to the deploy directory, then use the starttest.sh file as follows:

 

  1. Make the file starttest.sh executable:
    chmod +x starttest.sh​
  2. Execute a test run:
    ./starttest.sh {testfilename}​</li-code

 

For example, to execute the simple test script that’s provided:

 

 

./starttest.sh simple.jmx​

 

 

The example output shows that the test plan is distributed to a single node (as this default implementation uses only one slave node).

image010.png

 

If you navigate to the Grafana dashboard, you can see output data like the following, which shows a different time range and application name:

 

image011.png

 

Write your own JMeter test plan

To set up your own JMeter test plan, refer to the Apache JMeter documentation. The key element to include in your test plan is a backend listener. To get real-time metrics, you must configure the JMeter backend listener to send data to InfluxDB.

 

To configure the backend listener in JMeter:

 

  1. On the Backend Listener screen, set the Backend Listener Implementation to the influxdb listener.
  2. Set the influxDb URL parameter to http://jmeter-influxdb:8086/write?db=jmeter.
  3. Set the application parameter to the name you want to use to filter results in the Grafana dashboard, such as test.
  4. Set the measurement parameter to jmeter.

image012.png

You can also send your result data to log analytics using the Azure backend listener as described here 

Run your own test plan

After creating your test plan using a local JMeter GUI instance, save a copy of the test plan to the deploy directory.

 

Run the test plan with:

 

 

 ./starttest.sh {testplan.jmx}

 

 

Scale the test framework

This test framework is deployed with a single JMeter slave node, but you can scale out the deployment. To run a larger test with more slaves, use the following:

 

 

kubectl scale deployments jmeter-slaves --replicas={number required}

 

 

This command scales the number of slaves to the number specified. Note that the configuration is set to autoscale the cluster, and you must wait for the cluster to scale out. To check the status:

 

 

kubectl get deployments -w

 

 

Troubleshooting notes

Remote slave does not start

Sometimes the remote slave cannot be contacted by the master node at test start. In this case, the IP address of the pod is the last one listed in the remote server list.

 

Use the IP address of the remote slave to find the pod as follows:

 

 

kubectl get pods -o wide |grep {ip address}