Edge Pulse

Edit on GitHub

Edge Pulse is an Edge Analytics product based on the market-leading Real User Monitoring (RUM) solution that enables communication between your content and your customer by collecting navigation, availability, latency, and bandwidth information. In addition to collecting information, Edge Pulse uses it to enhance the user experience, ensuring efficient content delivery.

  1. What RUM is
  2. How it works
  3. How to set up
  4. Collected Data

1. What RUM is

RUM is the acronym used for the concept of Real User Monitoring. In other words, RUM is a monitoring model that captures end-user data with the goal of explaining how your users are being impacted by the availability and efficiency of your content delivery.

This is a passive way to monitor the user device in action. It provides insight into a large number of issues, including front-end browser, back-end database, and server-related issues, and how end-users experience them.

2. How it works

Edge Pulse collects user browsing data and metrics on availability, latency, and throughput. To monitor the page, you must insert the Edge Pulse JavaScript tag. This script respects the protocol in use (http/https), is fully asynchronous and does not interfere with the loading process or the internal structure of the delivered content. In addition, each test collects metrics for only 3 addresses of our Edge Network at a time, in a 30 minute interval per user, not burdening the client with repetitions.

The tests are done in a continuous and diversified way and cover all possible routes which that user has to get the content. After the data collection, the results are sent to the Azion’s processing servers.

Furthermore, the UUID4 algorithm is used to better control cases of successes and failures. To control and handle Edge Pulse data, we use the local storage of the browser.

The Edge Pulse tracking respects the following settings of the user’s browser:

Value Behavior of Edge Pulse
navigator.doNotTrack = ‘1’ If the tracking has never been allowed and, as a result, Edge Pluse has never used the local storage, then an identifier code will be generated for each visit that the user makes on the site.
If it is configured as “1”, but it has been tracked before, the previous identifier is deleted and a new one is generated.
navigator.doNotTrack <> ‘1’ When a value is not “1”, it means that Edge Pulse will track. Thus, the same identifier will be used for each visit of an user;

3. How to set up

To monitor the page, you need to insert the Edge Pulse JavaScript tag.

Edge Pulse is available to all customers. To start using it, follow the steps below:

  1. Go to Real-Time Manager;
  2. Access Edge Analytics > Edge Pulse, on the left side menu;
  3. Click on Copy to Clipboard to copy the tag you want: Default Tag or Pre-loading tag.

You must add the javascript tag available on the product page for Edge Pulse to start collecting metrics. Action required for each page you want to monitor.

The execution is started after the user’s browser has loaded the page. The tag can be published manually or using tag management systems available on the market. Check a description of the available tags, as follows.

Tag Descrição
Default Tag Place this tag in the HTML of the pages you want to collect data from. You must place it before the closing BODY tag. This script waits until the loading event is complete before downloading and running the RUM Client, ensuring that the loading event is not interrupted and does not affect the user experience.
Pre-loading tag f you’re using Content Security Policy settings preventing the use of inline JavaScript then place this tag just before the enclosing BODY tag. This script executes before the load event has fired.

4. Collected Data

Edge Pulse collects information from the Resolver used for DNS resolution, PoP/Edge tested and the user’s anonymous network and this data is used to make decisions regarding user routing.

In addition, we provide user experience and navigation data via Real-Time Events and Data Streaming, as listed in the table below:

Variable Description
$hostname Hostname of the current URL.
$locationHref It returns the complete URL of the current page.
$navigation.contentDownload Time used to download the content.
$navigation.dns DNS resolution time.
$navigation.networkDuration Duration without query browser waiting.
$navigation.PageLoadTime Time from the start of navigation to the full page load.
$navigation.redirectCount It returns the number of redirects since the last navigation without redirection in the context of the current navigation.
$navigation.renderTime Time the browser was rendered after browsing.
$navigation.ssl Standard protocol used to maintain a secure traffic connection.
$navigation.tcp Internet protocol that returns the data that makes up the page.
$navigation.ttfb Time until the arrival of the first byte of the requested page.
$navigation.type It returns the type of navigation without redirection.
$navigation.typeBackForward Type of navigation through the session history.
$navigation.typeNavigate It returns the type of the last navigation without redirection, for example: by clicking on a link, entering the URL in the address bar or submitting a form.
$navigation.typeReload Type of navigation for the reload operation, that is, when the page was reloaded.
$navigation.typeReserved Any type of navigation not defined by those previously mentioned (typeNavigate, typeReload).
$networkApi.downlink It returns the average volume of data received (Mb/s).
$platform Operating system architecture (for example Linux x86_64, Iphone, etc).
$referrer It returns the previous url to the current page. That is, the url by which the user arrived at “locationHref”. If the access originated directly from the current page (not through a link, but for example, through a bookmark), its value will be an empty string. It does not provide DOM access to the reference page.
$timestamp Request date and time.
$userAgent It identifies the client UA browser.
$version The version of Azion Log used.

Didn’t find what you were looking for? Open a support ticket.