In this post we will see how easy it is to setup Jmeter to monitor Real Time test results using InfluxDB and Grafana.

Jmeter provides a nonGUI mode to run performance test and it provides a nice summary result on console itself. you can certainly monitor test results on console and it works pretty well but if your test runs for hours then,

it gets hard to analyze the summary results after a while.

For ex, If I would like to know the active user count or response time over certain period, you have to go through the console summary output line by line.

Another drawback is that results are in raw format which means you cannot just share it with the development/server team as the results are not in a very user-friendly format.

To create graphs, Aggregrate Report, Error report you will need to wait for the JMeter test to finish.

So, we can use JMeter’s Backend listener to send the results to an Influx database and visualize them in Grafana with nice chart by querying the DB. I

How to setup and prepare InfluxDB instance

First, let’s Download the InfluxDB based on your system.

Now, to start InfluxDB navigate to /bin directory and double click the influxd.exe.

you will see a screen like below.

After that We need to create a database for storing our JMeter load test data. In the /bin directory double click Influx.exe.

Let’s run the SHOW DATABASES command – this will give you a list of databases.

To create a database Run the command: CREATE DATABASE jmeterresults

Now let’s again run SHOW DATABASES again and you should see your new database listed.

We are done with Influxdb.

How to prepare Jmeter

Open Jmeter script in GUI mode, if you don’t have one right now, here is a sample script for BlazeDemo site.

First, let’s add a new backend listener to the thread group

In the Backend Listener Implementation dropdown,

select `org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient` option. 

And Configure the parameters as follows:


    influxdbMetricsSender – NO CHANGE 

    influxdbUrl – this is the URL of InfluxDB is in the following format:  

                    http://host_to_change:8086/write?db=jmeter.  

    application – NO CHANGE 

    measurement – NO CHANGE 

    summaryOnly – NO CHANGE 

    samplersRegexp – NO CHANGE 

    percentiles – NO CHANGE 

    testTitle – Title of the Test 

    eventTags – NO CHANGE. 

As we have created the “jmeterresults” database and we will be running it on a local machine with a default port, so in our case, the URL will be http://127.0.0.1:8086/write?db=jmeterresults

Okay, now let’s run the test for few minutes so that we can have some data to show on Grafana.

We are done with the Listener Setup.

How to prepare Grafana

Download Grafana as per your system requirement.

To start Grafana navigate to the /bin directory and run grafana-server.exe. (If you have installed as a Windows exe then there is no need to do this step as grafana will be started as default)

Now let’s, open a browse and add following in URL Path: http://localhost:3000 ( default username/password = admin/admin )

Click Add Data Source and choose InfluxDB as the data source type.

Specify the URL: http://localhost:8086 and the name of the influxdb database: jmeterresults

Save the changes.

We have successfully created a DataSource instance and connected it with our database.

Now for the Dashboard, Click (+) icon located in menu bar panel and choose Import

Add 5496 in Grafana.com Dashboard input field and click Load. (we are using this dashboard https://grafana.com/grafana/dashboards/5496)

Click anywhere outside the input box and you should be able see a dashboard detail.

On the import dashboard screen, we will be prompted for the following:


    Name – specify the dashboard name (optional) 

    Folder – NO CHANGE 

    DB name – select the InfluxDB data source as jmeterresults 

    Measurement name – NO CHANGE 

    Backend send interval – NO CHANGE 

We are done with Grafana setup.

After above steps are cleared, we can run the test and see the results in the Grafana Dashboard in real time.

Hope this information can be useful.


Thanks for reading!

Enjoyed this article? Follow me on Twitter at @priteshusdadiya.

Any questions, feedback, or anything that you think I’d be interested in? Please send me comment with comment box below, or get in touch with me here.


Tweet
Share
Share
Share
About Pritesh Usadadiya

I write on this site and work as a QE Engineer focused on Performance Testing , API and Load Testing , ETL , Automation etc… Learn more about me here, and connect with me on Twitter, Dev.to, and Linkedin.

Was This Post Helpful?