5 Steps to setup ShowSlow as Web Performance Repository for dynaTrace Data

Alois Reitbauer explained in detail how Dynatrace continuously monitors several thousand URLs and uploads the performance data to the public ShowSlow.com instance. More and more of our Dynatrace AJAX Community Members are taking advantage of this integration in their internal testing environments. They either use Selenium, Watir or other functional testing tools to continuously test their web applications. They use Dynatrace AJAX to capture performance metrics such as  Time to First Impression, Time to Fully Loaded, Number of Network Requests or Size of the Site. ShowSlow is then used to receive those performance beacons, stores it in a repository and provides a nice Web UI to analyze the captured data over time. The following illustration shows a graph from the public ShowSlow instance that contains performance results for a tested website of a period of several months:

Analyze Performance Metrics from Dynatrace over time using ShowSlow as Repository
Analyze Performance Metrics from Dynatrace over time using ShowSlow as Repository

As we received several questions regarding installation and setup of this integration I thought it is time to write a quick Step-by-Step Guide on how to use a private ShowSlow Instance and Dynatrace AJAX in your test environment. I just went through the whole installation process on my local Windows 7 installation and want to describe the steps I’ve taken to get it running.

Step 1: Download Software

Sergey – creator of ShowSlow – provides a good starting point for our installation: http://www.showslow.org/Installation_and_configuration

I started by downloading the latest ShowSlow version, Apache 2.2, PHP5 Binaries for Windows and MySql. If you don’t have Dynatrace AJAX yet – also go ahead and get it from our AJAX Edition Web Site.

Step 2: Installing Components

I have to admit – I am not a pro when it comes to Apache, PHP or MySql – but – even I managed to get all that installed and configured in minutes. Here are the detailed steps:

Initial Configuration of Apache

  1. During the setup process I configured to run Apache on Port 8080 in order to not conflict with my local IIS
  2. Update Apache’s httpd.conf to let the DocumentRoot point to my extracted ShowSlow directory
  3. Enable all modules as explained in Sergey’s Installation and Configuration Description. That is mod_deflate, mod_rewrite, mod_expires

Installing the Database

  1. Use mysql command line utility and follow the instructions in Sergey’s description. Before running tables.sql I had to manually switch to the ShowSlow database executing the “use showslow” statement
  2. Rename config.samples.php in your ShowSlow installation directory to config.php and change the database credentials according to your installation

Configuring PHP

  1. In my extracted php directory (c:\php) I renamed php-development.ini to php.ini
    1. Remove the comment for the two MySql Extensions php_mysql.dll and php_mysqli.dll
    2. Set the extension_dir to c:/php/ext
    3. If you want to use the WebPageTest integration you also need to remove the comment for the extension php_curl.dll
  2. In order for PHP to work in Apache I had to add the following lines to httpd.conf -> following these recommendations
    1. LoadModule php5_module “c:/php/php5apache2_2.dll” -> at the end of the loadmodule section
    2. AddType application/x-httpd-php .php -> at the end of IfModule
    3. AddType application/x-httpd-php .phtml -> at the end of IfModule
    4. PHPIniDir “c:/php” -> at the very end of the config file
    5. Change DirectoryIndex from index.html to index.php to default to this file

Step 3: Launching ShowSlow

Now you can either run Apache as a Windows Service or simply start httpd.exe from the command line. When you open the browser and browse to http://localhost:8080 you should see the following

ShowSlow runs on your local machine
ShowSlow runs on your local machine

Step 4: Configure Dynatrace AJAX Edition

Dynatrace AJAX Edition is configured to send performance data to the public ShowSlow instance. This can be changed by modifying dtajax.ini (located in your installation directory) and adding the following parameters to it:


These two parameters allow you to manually upload performance data to your local ShowSlow instance doing through the Context Menu in the Performance Report:

Manually Upload a result to ShowSlow
Manually Upload a result to ShowSlow

Dynatrace AJAX Edition will prompt you before the actually upload happens in order to avoid an accidental upload. After the upload to the uploadUrl you will also be prompted to open the actual ShowSlow site. If you click yes a browser will be opened navigating to the URL configured in portalUrl – in our case that is our local ShowSlow instance. Now we will see our uploaded result:

Uploaded Data visibile in ShowSlow under Last Measurements
Uploaded Data visibile in ShowSlow under Last Measurements

Step 5: Automation

The goal of this integration is not to manually upload the results after every test run – but to automate this process. There is an additional parameter that you can configure in dtajax.ini:


After restarting Dynatrace AJAX Edition the performance beacon will be sent to the configured ShowSlow instance once a Dynatrace Session is completed. What does that mean? When you manually test a web page using Dynatrace AJAX or whether you use a functional testing tool such as Selenium in combination with Dynatrace AJAX a Dynatrace Session is automatically recorded. When you or the test tool closes the browser the Dynatrace session gets completed and moves to the stored session folder. At this point Dynatrace AJAX automatically sends the performance beacon to the configured ShowSlow instance.

If you want to know more about how to integrate tools such as Selenium with Dynatrace then read these blogs: How to use Selenium with Dynatrace, 5 Steps to use Watir with Dynatrace

Want more data and better automation support?

The integration with ShowSlow is a great way to automate your performance analysis in a continuous manner. The performance beacon that gets send to ShowSlow can of course also be used by any other tool. The beacon is a JSON formatted object that gets sent to the configured endpoint via HTTP POST. Feel free to write your own endpoint listener if you wish to do so.

Since December 2014 Dynatrace AJAX Edition has been retired and replaced with Dynatrace Free Trial which offers more capabitilies and is our product we keep developing further. Check out the announcemnet blog from back then: Upgrade from AJAX Edition to Dynatrace

Andreas Grabner has 20+ years of experience as a software developer, tester and architect and is an advocate for high-performing cloud scale applications. He is a regular contributor to the DevOps community, a frequent speaker at technology conferences and regularly publishes articles on blog.dynatrace.com. You can follow him on Twitter: @grabnerandi