Overview
The Microsoft Remote Desktop Protocol (RDP) provides remote display and input capabilities over network connections for Windows-based applications running on a server. RDP is designed to support different types of network topologies and multiple LAN protocols. RDP also forms the basis for enterprise level solutions like Azure Virtual Desktop (formerly Windows Virtual Desktop), a desktop and app virtualization service that runs on the cloud.
This OneAgent extension is capable of tracking all user sessions happening over RDP and representing this data in Dynatrace as either Real User Monitoring (RUM) sessions and actions or simply backend metrics. Insights are then delivered to effectively diagnose poor performance and get to the root cause of issues.
Use cases
This extension delivers insights into Microsoft recommended parameters for diagnosing performance issues.
User sessions and metrics are collected for:
- Network Performance - is the user accessing the remote host over a slow network? does the client have enough bandwidth? is the session host skipping frames due to network insufficiencies?
- Graphics Performance - what is the frame quality of the user's session? does the session host skip frames due to network / client / server inssuficiencies? is frame encoding taking the appropriate amount of time?
- Input Delays - is the RDP kernel registering delays from when the user interacted with an application until the application reacted to that input?
- Capacity - are active users being impacted by large amounts of inactive sessions holding resources on the host? is your session host clearing these appropriately?
- Security - is there a large amount of failed logins to the hosts? what are the accounts that result in auhtentication failures, and for what reason?
Compatibility information
This extension is only compatible with direct RDP connections and the Microsoft Remote Desktop App (versions older than the October 2022 release).
Plan your deployment
How does it work?
This extension is designed to run only on OneAgent hosts that represent the endpoints being accessed through RDP. These can be standalone hosts, or shared Session Hosts (like in the Azure Virtual Desktop solution).
The OneAgent software delivers insights into the Infrastructure health and performance of the host, while the extension queries data related to remote user activity. Under the covers, the extension uses Dynatrace OpenKit as a means of representing and communicating Real User Monitoring (RUM) data, as well as the OneAgent’s local ingestion interface for reporting metrics.
The data reporting mechanism is compiled as a Go program called RDPAgent.exe. This references the OpenKit library and is being managed by the core extension which acts as controller.

Azure Virtual Desktop deployment example
Larger enterprise solutions like Azure Virtual Desktop are no different. Simply locate all the Session Hosts that are delivering virtual desktops and deploy the OneAgent (infrastructure only mode is sufficient).
The following is an example diagram of such a solution, which includes a Dynatrace ActiveGate as an intermediary component:

Installation
1. Deploy to OneAgent hosts
This extension is developed with the Dynatrace Extensions 1.0 Framework. This means that the .zip archive you have been provided with must be deployed on every OneAgent host that should run it.
Upload the .zip file and then extract it in the extension deployment directory on the OneAgent host. By default, this is found at:
%PROGRAMFILES%\dynatrace\oneagent\plugin_deployment
2. Upload to Dynatrace
Once the extension is deployed to each OneAgent, this must also be uploaded to Dynatrace. Open the Dynatrace UI and navigate to Settings > Monitored technologies > Custom extensions tab, then click Upload extension and upload the same zip archive you have been provided with.
Once the extension appears in the list below you can move to the next step:

Configuration
If you want to capture User Sessions
The extension can be reduced to only ingest metrics into Dynatrace - if this is your case, skip this step.
However, if you choose to also create User Sessions and Actions, you must first create a Custom Application to receive this data. This is because the data is communicated using OpenKit.
Follow these steps:
- Go to Deploy Dynatrace
- Click on Monitor a custom application
- Give your application a name, choose one of the icons, and click Monitor custom application
- On the page that opens, go to Instrumentation wizard and copy the Beacon URL and Application ID (you will need these at a later step)

Levels of configuration
OneAgent extensions allow for two levels of configuration: global or per host. Every host capable of running the extension will use the global configuration unless it is configured to override it with its own configuration.
Configurations can be found in the following places:
- Global configuration: Go to Settings > Monitored technologies > Custom extensions tab and click on the extension name from the list. On the page that opens click Edit global configuration.

- Host-level configuration: Go to Hosts then click on the Host to configure. Click ‘…’ > Settings and expand the row with the extension name. Click Use host configuration.
Configuration parameters
Regardless of the option chosen above, the configuration is the performed the same way.
Configuration parameters explained:

What is Reduced DEM consumption?
With this option enabled, after the first 30 minutes of a User's session, the frequency of reporting User Actions is reduced to once every 5 minutes, and after the 2-hour mark actions are reported every 10 minutes to reduce the total amount of DEM units consumed.
Note: this only affects the user actions for performance measurements which are normally reported as 3 per minute. The flow of user sessions is not affected by this setting.
For example:

Explore data
RUM Data
User Sessions can be reported for every user logged onto the remote host via RDP.
Sessions will report actions to match the session flow, such as:
- Network Layer Authentication
- User Account Logon / Logoff
- Remote Desktop Logon / Unlock
- Remote Desktop Session Creation
- Preparing Session Desktop
- Network Performance Measurement
- Graphics Performance Measurement
- Input Delay Measurement
Metric Data
Split by Session Host:
- Active Sessions
- Inactive Sessions
- Active Users
Split by Session Host and User:
- Base TCP RTT
- Current TCP RTT
- Base UDP RTT
- Current UDP RTT
- TCP Bandwidth
- UDP Bandwidth
- Loss rate
- Retransmission rate
- Session Input Delay
- Encoding Time
- Frame Quality
- Frames skipped (client)
- Frames skipped (server)
- Frames skipped (network)
Split by Session Host, User, and Application process: