This repository contains the hands on for the Dynatrace Digital Experience Management (DEM) Workshop.


Lab Setup

The following steps are used for this lab:

What You'll Learn

In this exercise, we will deploy the OneAgent to a Linux instance and let the OneAgent discover what is running in that instance.

Using Terminal via Web Browser

To faciliate the labs, we will access the Linux instance via terminal through a web browser.

Use the URL was provided in your email to access the SSH terminal. Make sure the URL looks like Public IP Address/wetty

Use the login name and password as provided in your email.


Download the OneAgent

Open your browser and access the Dynatrace URL.

Follow these steps below:


Within the Dynatrace OneAgent for Linux page, follow these steps below:



$  wget  -O <follow screen shot above>
--2019-08-07 10:17:45--  https://<URL>
Resolving <URL>... <IP>
Connecting to <URL> | <IP>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 139134801 (133M) [application/octet-stream]
Saving to: ‘'

100%[======================================>] 139,134,801 84.3MB/s   in 1.6s

2019-08-07 10:17:47 (84.3 MB/s) - ‘' saved [139134801/139134801]

Execute the installation script



$ sudo /bin/sh
10:21:42 Checking root privileges...
10:21:42 OK
10:21:42 Installation started ...
10:22:14 Starting agents...
10:22:14 oneagent service started
10:22:14 Checking if agent is connected to the server...
10:22:16 Dynatrace OneAgent has successfully connected to Dynatrace Cluster Node. After completing Dynatrace OneAgent installation on this machine, please return to your browser to complete the remainder of the installation.

Validate the installation in Deployment status

Click on Show deployment status to check the status of the connected host.


You should be able to see a connected host as per the image below.


Restart Easytravel application

To restart Easy Travel execute the following command:


$ ./
Restarting easyTravel ....
Stopping easyTravel ....
OKeasyTravel scenario stopped
Please wait...
Starting easyTravel ....
OKeasyTravel scenario started

Explore the Easytravel Application

Within Dynatrace, follow the steps below to get Easytravel URL:


Explore the Smartscape

While waiting for Easy Travel to start, you can explore Dynatrace and using the Smartscape, Dynatrace will automatically discover the processes and dependencies that comprises the Easy Travel application!

4 things that you will love about Dynatrace!


In this lab, we will cover the basics of configuring Real User Monitoring. These are some of the best practices that should be followed every time the Dynatrace JavaScript agent is deployed, be it an automated or manual injection.

What You'll Learn

Other DEM Setup

Some of the above have been automated via API and configured into your environments.

Task 1: Defining an application

Follow the steps below to define your application:

Define App

Now that the internal domain is mapped, do the same for the external domain.

Define App

To rename the newly created application:

Naming App

Task 2: Selecting the appropriate JavaScript frameworks

To select Javascript frameworks:


Task 3. Tagging a user session

Next, we will be tagging users based on page metadata. This approach to user tagging works by capturing available data in your application's page source. Usernames may be included in the text of a DOM element, a meta tag, a JavaScript variable, or even a cookie attribute. For example, easyTravel, the Dynatrace demo application, includes the user name in a welcome message in the upper-right corner of the home page (see image below). Using the development tools that are built into most browsers, you can generate a unique CSS selector for this particular element.

User tagging based on page metadata

Once you've identified where usernames are located in your page source, you can create user tags based on the usernames. To do this, return to Dynatrace and execute the following steps:


In this exercise, we will cover creating a single URL synthetic test in Dynatrace. Dynatrace offers three types of synthetic monitoring:

1. Use One-click creation of browser monitors for Easytravel

That's it! You have created 3 browser clickpaths Synthetic monitors


2. Create a browser clickpath synthetic monitor for Easytravel

Following the instructions below:


3. HTTP Monitor

Following the instructions below:


In this exercise, we will cover configuring Session Replay in Dynatrace.

Enable Session Replay

Follow the steps below to enable session Replay:


Simulate load for capturing Session Replay

Verify Session Replay

After a couple minutes, you can find your session under User Sessions on Dynatrace's left navigation bar.





Additional configuration for for personal data protection


Dynatrace captures detailed user session data each time a user interacts with your monitored application. This data includes all user actions and high level performance data. Using either the Dynatrace API or Dynatrace User Sessions Query Language (USQL), you can easily run powerful queries, segmentations, and aggregations on this captured data. User Sessions Query Language is a Dynatrace-specific query language, though it does rely on some SQL concepts and the syntax is similar, which makes it easy to get started.

A typical use case for using USQL is to build dashboards to visualize business metrics.


1. Exploring USQL

Follow the steps below:


Sample queries

Create a funnel for user journey

SELECT FUNNEL("loading of page /special-offers.jsp" AS "Special Offers landing page", = "loading of page /orange-booking-review.jsf" AS "Review package", = "loading of page /orange-booking-payment.jsf" AS "Payment") FROM usersession

Understand page performance from a specific location

SELECT DATETIME(starttime, 'MM/dd/yyyy hh:mm', '30m'),AVG(useraction.visuallyCompleteTime)
FROM usersession
WHERE country IS "United States" GROUP BY DATETIME(starttime, 'MM/dd/yyyy hh:mm', '30m')

Understand which users are experiecing errors

SELECT userId, SUM(totalErrorCount) FROM usersession
WHERE totalErrorCount IS NOT NULL
GROUP BY userId ORDER BY SUM(totalErrorCount) DESC

Gather statistics/analaysis

SELECT COUNT(*) FROM usersession WHERE = "loading of page /orange.jsf"

We hope you enjoyed this lab and found it useful. We would love your feedback!

How was your overall experience with this lab?

Excellent Good Average Fair Poor

What did you benefit most from this lab?

Understanding Real User Monitoring setup Learning Synthetic Learning Session Replay Learning User Session Query Language

How likely are you to recommend this lab to a friend or colleague?

Very Likely Moderately Likely Neither Likely nor unlikely Moderately Unlikely Very Unlikely