The eG Real User Monitor FAQ
This topic provides answers to some common questions that users raise when using eG RUM. You will also find some tips on fine-tuning eG’s RUM.
Introduction to eG RUM
-
What does the eG Real User Monitor do?
eG’s Real User Monitor tracks LIVE, the transactions of real users (not emulated) to web sites/web applications and measures the response time of each transaction in real-time. In the process, eG RUM pinpoints slow transactions and accurately isolates the reason for the slowness – is it the network? front end? or backend?
-
How does the eG RUM work?
- A small JavaScript is inserted in every page to be monitored in the target web site/web application.
- Whenever the browser loads one of these web pages in response to a user request, the script runs and collects response time metrics.
- The browser sends performance beacons carrying the gathered metrics to a software component called the eG RUM collector.
- The collector receives the metrics and stores them locally in memory.
- An eG remote agent then polls the RUM collector at regular intervals to collect the request and response time metrics.
- The remote eG agent then aggregates the collected metrics, isolates deviations, and transmits both the aggregated results and deviations to the eG manager.
- The eG manager presents the performance and problem information in the eG monitoring console and also stores the same in the eG backend.
-
What type of web sites can be monitored by eG RUM?
Broadly, eG RUM supports the Java, .Net, and PHP frameworks. In addition, any web page/web application containing HTML content, where a JavaScript code can be included in the <head> tag, can be monitored using eG RUM.
eG RUM Licensing
-
How is eG RUM licensed?
Every Real User Monitor component that is managed using the eG admin interface will consume a Premium Monitor license. The collectors however are not licensed, and neither are the remote agents.
-
I have a load balanced environment where there are multiple IIS servers serving the same website. From a licensing perspective, will I need ONE license or MULTIPLE licenses?
Regardless of number of IIS servers that serve the website, you will need to purchase only one premium license per website.
-
How many eG monitor licenses will I require if I monitor two sub-websites as a single, unique site?
Since both web sites are being monitored as a single, unique site, both sites will send the same SiteId in the beacon.
Figure 1 : Two web sites sending beacons to the RUM collector using a single Site ID
Typically, each SiteID maps to a RUM component in eG. As only a single SiteID is used in the beacon, the metrics for both sites will be captured by only ONE RUM component. This RUM component will consume ONE PREMIUM MONITOR license only.
-
In the example above, can I view the two sub-websites as two different web applications in the Real User Monitoring dashboard, without any additional licenses?
No. With a single Premium monitor license, you cannot monitor the health of two web sites. For that, you will have to manage the sub-websites as two different RUM components in eG, thereby consuming two premium monitor licenses. If this is done, then each of the web sites will send a different SiteID in the beacon (see Figure 1.20).
Figure 2 : Two web sites sending beacons to the RUM collector using different Site IDs
Both these websites will then be available as distinct web applications in the dashboard.
-
Assume that two IIS web servers - one in the internal network and the other in a DMZ - are together hosting a single web site. To monitor this web site, how many monitor licenses and RUM collectors are required?
The count of licenses and RUM collectors required for web site monitoring is not governed by the number of IIS web servers hosting that web site. In the case of your environment therefore, to monitor a single web site, you will only need to manage it as a single RUM component in eG, which in turn will consume only one premium monitor license.
The eG RUM Collector
-
What is the eG RUM collector?
The eG RUM collector is a Tomcat-based software component that serves as an interface between the web site/web application being monitored and the eG agent. The collector has been specially designed to receive user experience metrics related to a target web site/web application from user browsers at configured intervals, and store them locally until such time the eG remote agent requests for them.
-
Can RUM collector be deployed on a Solaris or Linux-based operating system?
Technically, you can install RUM Collector on Solaris or Linux. However, we do not have a dedicated installer for any Unix flavor. Therefore, you would have to install Tomcat separately on the above said Unix environments and then deploy the RUMCollector application (war file) on Tomcat.
-
Can the RUM collector discover the IP address of the browser client used by the user? If so, how do I configure this discovery?
Yes. The eG RUM collector is capable of discovering the IP address of the browser client of the user. To enable this discovery, follow the steps below:
- Edit the rum.properties file in the <EG_RUM_COLLECTOR_DIR>\tomcat\webapps\rumcollector\web-inf\lib directory (on Windows; on Unix, this will be the /opt/rum/tomcat/webapps/rumcollector/WEB-INF/lib directory)
- Look for the Client_IP_Header_To_Readparameter in the file. This parameter points the collector to that request header from which it can glean the client IP address. By default, this parameter is set to x-forwarded-for. Based on the type of proxy server / load balancer that is used in your environment for enabling browser-collector communication, you may have to change the value of the parameter.
- Then, you need to specify the index value of the client IP address that is to be used for geo coding. Typically, when multiple addresses are sent to the collector, they will be included in the request header as a comma-separated list. Each IP address in the list will have an index value, which indicates the position of that IP address in the list. The index value of the first IP address will be 0, the next IP address will be 1, and so on. To enable the collector to pick the IP address to be used for geo coding from the request header, specify the correct index value of that IP address against the Index_Position_Of_IP_To_Be_Considered parameter. By default, this parameter is set to 0, indicating that the first IP address is considered by default and the rest are disregarded by the collector.
- Finally, save the file.
-
Can I configure a cluster of eG RUM collectors to ensure high availability?
You can configure High Availability for the RUM collector on a Windows HA cluster. This facility is already available for the eG Agent High Availability and is documented in the eG Installation Guide. You can mirror the same for RUM collector.
-
Where should the collector be installed if the web site/web application being monitored is available in a public domain or in a private domain?
Please refer to Where to Install the eG RUM Collector? of this document for a detailed response.
-
How are the performance beacons transmitted to the eG RUM collector?
Via HTTP/HTTPS
-
In my environment, I have RUM-enabled a web site on an IIS web server using IIS URL Rewrite rules. This web site services requests from internet users. However, the RUM collector to which the browsers have to send beacons resides in the intranet. What do I do to make sure that the browsers are able to send performance beacons to that RUM collector?
In this scenario, you will have to enable reverse proxy for IIS using ARR (Application Request Routing), so that performance beacons sent by client browsers to IIS are automatically forwarded by IIS to the RUM collector in an internal network. The steps in this regard are as follows:
- Download the ARR module from the following link: https://www.iis.net/downloads/microsoft/application-request-routing
- Install the ARR module on the IIS web server host.
-
You need to separately enable reverse proxy for each web site on IIS - i.e., for each RUM component that you have managed. To achieve this, first open the Internet Information Services (IIS) Manager. Expand the Sites node in the tree structure in the left panel of the manager and select the site for which you want to configure reverse proxy. From the options displayed in the right panel, select the URL Rewrite icon by double-clicking on it. Once the URL Rewrite section opens in the right panel, right-click on the Inbound Rules list in that section and pick the Add Rule option from the shortcut menu that appears (see Figure 3).
-
From the Add Rule(s) dialog box that then appears (see Figure 4), select Reverse Proxy as the inbound rule template and click the OK button.
Figure 4 : Selecting Reverse Proxy as the inbound rule template
-
When Figure 5 appears, in the Inbound Rules section of Figure 5, Enter the server name or IP address .... of the server to which IIS has to redirect requests. In this case, performance beacons from client browsers in the public network should be redirected to the eG RUM collector in an internal network. So, here, specify the name or IP address of the eG RUM collector.
Figure 5 : Specifying the server name / IP address of the RUM collector
-
Figure 6 will then appear, where you will be able to view the inbound rule you just created. Select the new inbound rule and click the Edit option in the Actions pane alongside (see Figure 6).
-
In the Edit Inbound Rule dialog box that then appears (see Figure 7), specify the URI Pattern that the IIS web server should route to the eG RUM Collector. Then, in the Action section, specify the Rewrite URL that the configured URI Pattern should be redirected to. Also, select the Append query string check box.
Figure 7 : Specifying the URI pattern to capture and the Rewrite URL it should be redirected to
- Finally, click the Apply option in the Actions pane of Figure 7 to apply the changes to the inbound rule.
-
How frequently are the beacons transmitted to the eG RUM collector?
Every time a user accesses a page (where the JavaScript code snippet has been injected) on the web site, the user browser runs the script on the page, computes the load time of the page and where the page spent time when loading, and sends the statistics to the eG RUM collector.
-
How does the eG RUM collector store the performance metrics it receives?
The eG RUM collector stores the performance metrics it receives in memory.
-
Can I monitor more than one website using one RUM collector?
Yes. A single collector can monitor multiple web sites. When adding a Real User Monitor component using the eG admin interface, you can assign a collector to that component. By assigning the same collector to multiple Real User Monitor components, you can manage multiple web sites/web applications using a single collector.
-
Can a single web site be managed by a cluster of collectors?
Currently, we do not support cluster collectors. This means that a single web site can be managed only by a single collector.
-
How much data can the eG RUM collector store in memory?
By default, for every web site/web application it monitors, the RUM collector can hold a maximum of 30000 lines of data per measurement period. This limit is however, configurable. To configure the limit, do the following:
- Edit the rum.propeties file in the <EG_RUM_DATA_COLLECTOR_INSTALL_DIR>\tomcat\webapps\rumcollector\WEB-INF\lib directory (on Windows; on Unix, this will be the /opt/rum/tomcat/webapps/rumcollector/WEB-INF/lib directory)
- Search for the maxAllowedLinesPerSite parameter in the file. By default, this parameter is set to 30000.
- You can increase or decrease the value of this parameter, depending upon how heavy the user traffic to your web site/web application is and whether/not your RUM collector is well-sized.
- If you do make changes, save the file.
-
How often are the metrics stored in collector's memory cleaned up?
As and when the agent requests the collector for measures, the data will be sent to agent and it will be cleaned up immediately from memory. If for some reason, the agent is unable to communicate with the collector, the collector will continue to store the metrics received from the browsers in memory, until the maxAllowedLinesPerSite configuration is reached. Beyond this point, the collector will discard the metrics, so as to ensure that the memory usage does not grow uncontrollably.
-
How does the eG RUM collector send the metrics it receives to the eG agent?
Whenever the eG agent polls the eG RUM collector for metrics, the collector sends the metrics to the eG agent via HTTP/HTTPS.
-
What happens to the performance beacons from the browsers, if the eG RUM collector is down/unavailable?
In this case, the browsers will discard the beacons.
-
My RUM collector is running, but the system hosting the collector crashed. Will this affect the load time of the pages where the eG RUM code snippet has been inserted? If so, what do I do to prevent this?
Yes. Unavailability of the collector host will indeed impact the load time of the web pages where the code snippet has been inserted.
The JavaScript code snippet inserted into your web pages carries the location of the egrum.js that the browser should run in order to collect load time metrics. Typically, this egrum.js script will reside on the RUM collector host. Therefore, at run time, the code snippet will attempt to connect to the RUM collector host to find the egrum.js script and run it. In the event that the collector host is unavailable, the code snippet will keep trying to access the host, thus delaying the loading of the corresponding web page.
To avoid this, before inserting the code snippet into your web pages, make sure you copy the egrum.js from the collector host to the local server - i.e., the server that hosts the web site/web application being monitored. Then, update the code snippet with the new location of the egrum.js. Finally, insert the code snippet in the web pages to be monitored. This will ensure that the collector host's unavailability does not impact page load time.
-
How does the collector work in eG manager cluster setup?
The collector has no relation to the eG Redundant Manager Cluster setup.
-
What is the resource requirement of the eG agent and the collector with respect to real user monitoring?
Resource requirements will differ from one environment to another, depending upon the traffic to the web site/web application being monitored, frequency of monitoring, and data retention rules.
To assess the exact resource requirements for your environment, please use the eG Manager and Database Sizing Calculator that is provided to you.
-
Should the system hosting the eG RUM collector have Internet connectivity to perform Geo location translation?
No, Internet connectivity is not required for Geo location translation.
-
In my environment, a proxy server routes the performance beacons from the browsers to the eG RUM collector. Due to the proxy server configuration, multiple IP addresses are sometimes reported to the collector. How does the collector perform geo location translation in such a case?
In this case, you need to configure the eG RUM collector to use only one of the IP addresses for geo coding and drop the rest. For this purpose, follow the steps below:
- Edit the rum.properties file in the <EG_RUM_DATA_COLLECTOR_INSTALL_DIR>\tomcat\webapps\rumcollector\WEB-INF\lib directory (on Windows; on Unix, this will be the /opt/rum/tomcat/webapps/rumcollector/WEB-INF/lib directory)
- Look for the Client_IP_Header_To_Read parameter in the file. This parameter points the collector to that request header from which it can glean the client IP address. By default, this parameter is set to x-forwarded-for. Based on the type of proxy server / load balancer that is used in your environment for enabling browser-collector communication, you may have to change the value of the parameter.
- Then, you need to specify the index value of the client IP address that is to be used for geo coding. Typically, when multiple addresses are sent to the collector, they will be included in the request header as a comma-separated list. Each IP address in the list will have an index value, which indicates the position of that IP address in the list. The index value of the first IP address will be 0, the next IP address will be 1, and so on. To enable the collector to pick the IP address to be used for geo coding from the request header, specify the correct index value of that IP address against the Index_Position_Of_IP_To_Be_Considered parameter. By default, this parameter is set to 0, indicating that the first IP address is considered by default and the rest are disregarded by the collector.
- Finally, save the file.
-
Can a single web site/web application be managed by multiple eG RUM collectors?
No, this is not possible.
-
Can a single web page in a web site/web application contain multiple RUM scripts? Under what circumstances will this happen?
Multiple RUM scripts can be injected into a single web page under the following circumstances:
- If you are using two eG managers, and you have managed the same web site/web application as a Real User Monitor component in both the managers using the same SiteID, then a single web page in that web application will be injected with two RUM scripts.
- If you are managing a single web site/web application as two Real User Monitor components using a different SiteID for each, then again, a single web page in that web application will be injected with two RUM scripts.
-
In the above scenario, where multiple RUM scripts are injected in the same web page, how many times will the browser load the RUM script and how many beacons will be sent to the collector? If there are multiple collectors at play here, which collector will receive the beacons?
The table below answers your questions.
Scenarios How many times is the eG RUM script loaded? How many beacons are sent to the collector? Which collector receives the beacons? The same collector is assigned to the same Real User Monitor component in two managers
Once
One
N/A
A single web application is managed as two Real User Monitor components in an eG manager, and both these components are assigned the same collector.
Once
One
N/A
Two different collectors are assigned to the same Real User Monitor component in two managers.
Twice
One
The collector that is assigned first to the Real User Monitor component.
A single web application is managed as two Real User Monitor components in an eG manager, with each component being assigned a different collector.
Twice
One
The collector that is assigned first to the Real User Monitor component.
-
Can I manage my Intranet and Internet website using the same eG RUM collector?
Yes, provided the collector has been configured to receive beacons from the browsers of both the Internet and Intranet users.
-
Can I configure high availability for the eG RUM Collector?
Yes, you can configure high availability for the eG RUM Collector in the same way you configure high availability for the eG agent. The broad steps to achieve this are as follows:
- Prepare two Windows machines with identical specifications
- Both machines must be in the same Active Directory domain, as a best practice. Both the machines should have the same domain role. The recommended role is member server.
- The File Share Server should also be in the same Active Directory domain as both these machines.
- Install an eG RUM Collector on each of the machines.
- Then, proceed to create the Windows cluster with the two machines.
- Next, create a Windows file share from a File share server. This file share will be used as a third vote in the Node and File Share Majority quorum mode that is to be set for the cluster.
- Configure cluster quorum settings.
- Add the eG RUM Collector service as a shared cluster resource.
Each of these steps have been elaborately discussed for an eG agent, in the eG Installation Guide. The same detailed procedures apply to the eG RUM Collector as well.
-
What happens if the eG Real User Monitor component associated with a RUM collector
The eG Agent - RUM Collector Communication
-
How frequently does the eG agent poll the eG RUM collector?
The frequency of the tests run by the eG agent determines the frequency of the polling. By default, this is 5 minutes.
-
Does the eG agent pull all available metrics from the RUM collector at one shot?
No. This depends upon how many lines of information a single request from the eG agent is allowed to read from memory. By default, the eG agent can read a maximum of 1000 lines simultaneously. This is governed by the readLines configuration in the rum.properties file, which is set to 1000 by default. If there are more than 1000 lines of data in memory, the eG agent then issues multiple requests to the data collector to read the data. You can change the readLines configuration, so that the eG agent can read more lines or less lines at one shot.
-
What happens if the eG agent is down or is unable to connect to the eG RUM collector?
In this case, the user experience metrics will not be forwarded to the eG agent. The collector however will continue to store the metrics received from the browsers in memory, until the maxAllowedLinesPerSiteconfiguration is reached. Beyond this point, the collector will discard the new metrics that are collected. Once the agent-collector communication is restored, the collector will send all the metrics that are available in memory at that point of time to the agent.
-
What happens if the eG agent-collector connection is lost when data transmission is in progress?
In this case, the RUM collector will clean up all the data that has been collected but not sent to the eG agent yet, from memory.
Configuring eG RUM
-
When the site traffic is heavy, can I use two agents to collect the data pertaining to a single site?
Presently, a single web site can be mapped to only one collector and one agent. Multiple agent/collector option is not available now.
-
If I have a single RUM collector receiving beacons from multiple sites, can I configure this collector to communicate with multiple remote agents?
Yes. You can configure a single collector to communicate with multiple remote agents.
-
Can the eG agent monitor the user experience with a web site/application that overlays 4 different web/web application servers? If so, how can this be configured?
Yes. The eG agent can perform real user monitoring for a web site/web application that is supported by 4 different web/web application servers. To configure this monitoring, do the following:
- Install and configure a single RUM collector for the target web site/web application.
- Manage the target as a Real User Monitor component in eG Enterprise.
- Inject the JavaScript code snippet in each of the web pages that is served by every one of the web/web application servers delivering the target web site / web application.
-
I have a website that is served from 5 application servers (say, a cluster of app servers). Do I need to create 5 separate ‘Real User Monitor’ components in eG to monitor them?
No, you need to create only ONE Real User Monitor component. The same code snippet in your JSP or HTML will get deployed on all applicable application servers. This will ensure that the page transmits the beacon, no matter which application server serves that page.
-
Can I inject the JavaScript code snippet automatically into the pages?
Auto-injection is not supported in this release of eG RUM. Plans are on to provide support for this feature in the future releases.
-
I have a load balanced environment where there are multiple IIS servers serving the same website. Do I need to insert the same eG RUM script on multiple IIS Servers?
Yes, you will need to insert the eG RUM script on all IIS Servers that serve the given website.
-
I have multiple web applications served by ONE IIS server. How do I configure eG RUM script for specific sites?
Considering the below mentioned scenario, It is possible to create rewrite rules for each site (A1, A2, B and C) separately with different eG RUM scripts (see ). In order to do this, we should select the specific site and create rules for it.
(A) Default Web Site. (the subsites below shares the same hostname and URL pattern alone differs.)
(A1) Sub site – site1 (xyz.com/finance/abc.htm)
(A2) Sub site – site2 (xyz.com/product/abc.htm)
(B) MySite1 (mysite1.xyz.com)
(C) mysite2 (mysite2.xyz.com)
-
Can eG RUM work with reverse proxy?
Yes. eG RUM can indeed work with reverse proxy as long as the underlying web server is IIS or Apache. Supported versions of IIS and Apache are available in the Pre-requisites for Real User Monitoring using eG Enterprise of this document.
-
Do you have a global button to temporarily turn off or disable eG RUM scripts from all web pages?
The answer to this question depends on the underlying technology being instrumented:
- Java-based applications: For Java applications, currently this ability is not supported. We are working on bringing this capability into the product around the first quarter of next year.
- Dot Net applications served via IIS 7 and above: Our current product supports enabling RUM script injection via “URL Rewrite” for IIS 7 and above. We have an option to disable the RUM Script injection for all pages by simply disabling the Rules created in the URL Rewrite.
- SharePoint applications: For SharePoint applications, currently we add the RUM script in a single page - example : “seattle.master or v4.master”. Removing the RUM script from this file will result in disabling RUM for all the web pages.
- Peoplesoft applications: For PeopleSoft applications, currently we add the RUM script in a single page - i.e., “PT_COMMON”. Removing the RUM script from this file will result in disabling RUM for all the web pages.
-
How do I inject the eG RUM script in dynamically generated web pages?
In the case of a web site / web application that is not hosted on IIS, Apache, or any variants, but has common header/footer sections and dynamically generates HTML pages, you can add the code to the Header page of that web site / web application to RUM-enable it. To know how to do this, refer to the Instrumenting the Web Site / Web Application to be Monitored topic.
-
How do I tell if a page is dynamically generated?
Application Admin or the application/website development team only can tell whether the page is dynamically generated or not. This is based on the application/website architecture. It cannot be identified by seeing the browser.
-
Will IIS injection / rewriting rules be applicable for the dynamically generated website?
Yes. IIS Rewrite rule based injection will be able to inject script for dynamically generated pages.
-
Is the eg_rum.jar already embedded with the Site_name and beacon_URL?
Yes. Both the Site_name and beacon-url are embedded within the jar/dll file.
-
If the answer to question 12 is 'yes', that means each egrum.jar file is unique to each website. Is there any other way to each get those egrum.jar from our web page for non-admin user?
Yes. egrum.jar/Eg.RUM.dll file is unique to each website. The egrum.jar or the Eg.RUM.dll file can only be downloaded from admin interface. We do not have any other page to download these files.
Monitoring Real User Experience Using eG RUM
-
I noticed that Google maps are used to represent user locations in the eG RUM dashboard. Does this mean then that the system from which I am accessing the dashboard should have internet connectivity?
Yes. Because, without Internet connectivity, you will not be able to view the user location maps in the eG RUM dashboard.
-
I have hosted my business online, and have partnered with many other brands to host ads related to my business on their web site. This way, any visitor to their web site can click on an ad and switch to my site. I would like to know which of these partnerships has been most beneficial to me? In other words, I want to know the web sites that have contributed to the maximum number of hits to my web site. Can I glean this information from eG RUM?
The detailed diagnostics provided by eG Enterprise reveal which pages in your web site were viewed and the URL from which each page view was launched. The latter is called the ‘Referer URL’. In the case of your scenario, this will be the URL of your partners. While eG provides this information at a per-page view level, it presently does not offer you any means to figure out the count of page views per Referer URL. This means that using eG, you will not be able to tell which referer/partner was responsible for the maximum hits to your web site.
-
Will eG alert me when there are no hits or more hits to a web site than expected?
Yes. eG embeds efficient self-learning capabilities that enable such intelligent alerting. By tracking the page views to your web site over a period of time, eG automatically computes the upper and lower bounds of traffic to the web site – in other words, eG automatically determines how high and how low the count of page views typically go. When any of these auto-computed baselines are violated, eG alerts users. So, if you have a web site that normally receives a moderate number of page requests, but suddenly receives none, then eG’s auto-computed lower bound will be violated, resulting in an alert. Likewise, if that web site receives an unusually high number of page requests, eG’s auto-computed upper bound will be violated, resulting in an alert. You also have the option of manually setting static threshold values, in the place of the auto-computed ones.
-
Can eG RUM highlight the number of unintended ads loaded on the web page, which may be adversely impacting user experience?
No. This is currently not supported.
-
How does eG RUM handle time zone differences between the various components of its architecture?
Typically, the eG RUM collector timestamps the beacons it receives based on the eG manager’s time zone. Since the eG agent too, by design, synchronizes its time with the eG manager, the agent does not make any changes to the timestamp of the beacons when it pulls them from the RUM collector and sends them to the eG manager. However, if a different time zone has been set in eG for a user registered with the eG Enterprise system, then, when that users logs into the eG monitoring console, the RUM metrics he/she views in the console will be timestamped according to that user’s time zone setting. Historical metrics viewed by this user in the eG Reporter console will also be aligned with that user’s time zone setting only.
-
How does the eG RUM script calculate the page download time and its break up?
Navigation Timing is a JavaScript API for accurately measuring performance on the web. The API provides a simple way to get accurate and detailed timing statistics - natively - for page navigation and load events. It's available in all recent browsers.
The injected eG RUM Script will make use of the Navigation Timing API to gather the load time of a web page and the break up of the load time.
-
What are the time components that are not included in the page load time reported by eG RUM?
The time taken for running the following will not be included in the page load time:
- Flash
- Silverlight
- Applet
- Java FX
- java webstart
- activex
- HTML5 videos
- Flash based videos
This is because, the components above run in their own runtime (typically as a browser plug-in).
-
Is it true that the eG RUM can tell from which countries users are accessing a web site/web application?
Yes, it is true. The eG RUM can automatically discover the countries, cities, and regions from which the users to a web site/web application are coming, and can report the experience of users from every country, city, and region so discovered.
-
How does eG RUM discover the geographic location of users?
This intelligence is embedded in the eG RUM collector. Once the collector receives user experience metrics from the browsers, it scans the metrics and extracts the client IP addresses – i.e., IP addresses of the user browsers/devices - from it. The collector then performs IP address to Geo location translation to discover the location of the users.
To perform geo location translation, the collector uses the following:
- A third-party binary database called MaxMind
- A Geo Location Mapper file (which is an XML file)
Typically, every incoming client IP address is first checked for a match against the MaxMind database. If a match is found, then it is deemed to be a public IP address. If a matching IP address is not found in the MaxMind database, then the collector checks the private IP address ranges (with subnet details) present in the Geo Location Mapper file for a match. If a match is found, then the IP address is deemed to be a private IP address.
-
Does the page loading time include the loading time of all resources such as images, videos, etc.?
The page loading time typically includes the loading time of resources such as images, JavaScripts, stylesheets (CSS), etc. However, videos are not included in the page loading time. This is because, usually, video playback is asynchronously rendered independent of the page load completion. In other words, the video playback will commence only after the DOM Complete event is triggered. This is why, the page load time does not include the time to render videos.
-
If user requests are routed through a proxy server to the web server, can eG RUM report the time spent by the requests on the proxy server?
No. eG RUM cannot give the breakdown as asked above. eG RUM (or any RUM solution for that matter) will report the total server backend time – however, the breakdown of this time will not be visible to RUM since it computes metrics from a JavaScript sitting inside the browser.
-
Can eG RUM provide additional transaction details such as the city from which the request originated and the telecom provider?
eG RUM currently uses Maxmind GEO IP2 City to provide geo mapping. Using this tool, eG RUM captures and reports the cities from which requests to the web site/web application being monitored were received. For each city, eG RUM reports the average load time of the page view requests from that city and where the requests spent time.
However, eG RUM presently does not report telecom provider details. Note that this will require purchasing a separate database from Maxmind on eG’s part (https://www.maxmind.com/en/geoip2-isp-database). Capturing ISP or Telecom provider is not in our roadmap for the immediate future.
-
Can eG RUM support AJAX web applications? If so, then will the RUM script injected in the web pages of such applications impact Ajax?
Yes, RUM can support AJAX web applications. However, note that the underlying application should have a combination of traditional Base Page with additional AJAX requests. The reason is that our current product is geared towards traditional web apps which have a combination of base page with additional AJAX. Think of a site such as Amazon where the product page is a traditional request-response base page with additional ajax to fetch “cross-sell” product on the “You may also like…” section. Therefore, If the customer has a 100% pure AJAX application (such as a Single Page Application e.g. AngularJS or even ExtJS), such request URLs will NOT be shown on the reports. The 'Web Site' test will also not consider these AJAX requests. On the other hand, such requests can be seen on the layer model in the ‘Page Type test’ and in the RUM dashboard.
No, the RUM script will NOT impact AJAX functionality either functionally or from an elapsed time performance overhead perspective.
-
I have seen that in the RUM dashboard, intranet requests do not carry any 'location' reference - i.e., the country, region, and city of these requests are either marked as 'Unknown' or are marked with the default location I have in my configuration. On the other hand, for internet requests, the geographic location of the requests is accurately discovered and displayed in the dashboard. How can I make sure that the RUM dashboard displays the exact geographic location of the intranet requests as well?
To understand how to configure geographic locations in the RUM dashboard for intranet requests, let us consider an example. Assume that your enterprise spans three different buildings, namely - North Building, South Building, and East Building. Each building is in a different network. Users from these buildings communicate with your web site over the intranet.
- The first step is to obtain the IP range of each of the buildings from your network/infra teams.
- Next, edit the geolocation-local-map.xml file in the <EG_MANAGER_INSTALL_DIR>\manager\tomcat\webapps\rumcollector\WEB-INF\lib directory. Here, configure the IP range of each of your networks. This can be performed in one of the following ways:
- By configuring the starting IP and ending IP address of each range, OR;
- By configuring the starting IP address and the sub-net mask of each range.
-
If you know the starting and ending IP addresses of every network, then go with the first option - i.e., configure the starting and ending IP addresses of every network in the geolocation-local-map.xml file to indicate the geographic location. In this case, follow the steps below.
-
Assume that the starting and ending IP addresses of every building in our example is as follows:
Starting IP address Ending IP address Building 192.168.8.1 192.168.8.250 North Building 192.168.9.1 192.168.9.250 South Building 192.168.10.1 192.168.10.250 East Building -
Next, for each building, configure a 'location' block in the XML file. This means that three location blocks will have to be configured in the XML file. In the <country-code> tag of every location block, make sure you specify a unique code to represent the building to which that location block corresponds. For the purpose of our example, let us use the code NB, SB, and EB to represent the North Building, South Building, and East Building:
<location start-ip-address="192.168.8.1" end-ip-address="192.168.8.250">
<country>Singapore</country>
<region>Cross Street</region>
<city>Singapore</city>
<country-code>NB</country-code>
<latitude>1.2896700</latitude>
<longitude>103.8500700</longitude>
</location>
<location start-ip-address="192.168.9.1" end-ip-address="192.168.9.250">
<country>Singapore</country>
<region>Cross Street</region>
<city>Singapore</city>
<country-code>SB</country-code>
<latitude>1.2896700</latitude>
<longitude>103.8500700</longitude>
</location>
<location start-ip-address="192.168.10.1" end-ip-address="192.168.10.250">
<country>Singapore</country>
<region>Cross Street</region>
<city>Singapore</city>
<country-code>EB</country-code>
<latitude>1.2896700</latitude>
<longitude>103.8500700</longitude>
</location>
As you can see, the <country>, <region>, <city> tags carry the same information in all the 3 <location> blocks in our example. This is because, all 3 buildings in our example are in the same country, region, and city. Since the <latitude> and <longitude> denote the co-ordinates of the country, even they remain the same in all 3 <location> blocks.
- Finally, save the XML file.
-
-
On the other hand, if you do not know the ending IP addresses, then you can have the eG Enterprise system automatically compute the IP address range of each of your networks. For this, you need to go with the second option - i.e., configure the starting IP address and sub-net mask of each of your networks. In this case, follow the steps below:
-
Assume that the starting IP address and subnet-mask of each building in our example is as follows:
Network IP Range Subnet-mask Building 192.168.8.0 255.255.254.0 North Building 192.168.9.0 255.255.254.0 South Building 192.168.10.0 255.255.254.0 East Building -
Now, edit the geolocation-local-map.xml file in the <EG_MANAGER_INSTALL_DIR>\manager\tomcat\webapps\rumcollector\WEB-INF\lib directory. For each building in our example, configure a 'location' block in the XML file in the following format.
<location network="192.168.8.0" subnet-mask="255.255.254.0">
<country>Singapore</country>
<region>Cross Street</region>
<city>Singapore</city>
<country-code>NB</country-code>
<latitude>1.2896700</latitude>
<longitude>103.8500700</longitude>
</location>
<location network="192.168.9.0" subnet-mask="255.255.9.0">
<country>Singapore</country>
<region>Cross Street</region>
<city>Singapore</city>
<country-code>SB</country-code>
<latitude>1.2896700</latitude>
<longitude>103.8500700</longitude>
</location>
<location network="192.168.10.0" subnet-mask="255.255.10.0">
<country>Singapore</country>
<region>Cross Street</region>
<city>Singapore</city>
<country-code>EB</country-code>
<latitude>1.2896700</latitude>
<longitude>103.8500700</longitude>
</location>
- Finally, save the XML file.
As you can see, the <country>, <region>, <city> tags carry the same information in all the 3 <location> blocks in our example. This is because, all 3 buildings in our example are in the same country, region, and city. Since the <latitude> and <longitude> denote the co-ordinates of the country, even they remain the same in all 3 <location> blocks. However, note that the <country-code> tag has been configured with a unique code representing each building in our example, namely - NB for North Building, SB for South Building, and EB for East Building.
-
- Then, edit the eg_geodetails.ini file in the <EG_INSTALL_DIR>\manager\config directory.
-
In the [COUNTRY_NAME_TO_CODE_MAPPING] section of the file, insert an entry to map the country code specified within the <country-code> tag of the <location> block in the geolocation-local-map.xml file, with a country name - in the case of our example - the building name. The format of this specification is: <CountryName>=<Country-code>. For the purpose of our example, 3 entries of the aforesaid format will have to be inserted in the [COUNTRY_NAME_TO_CODE_MAPPING] section. Sample entries are provided below:
North Building=NB
South Building=SB
East Building=EB
-
Next, map the new country-code with the corresponding lattitude and longitude markings. This is required to indicate where in the geo-location map of the RUM dashboard, the marker should rest to pinpoint this location. For this, insert an entry of the format: <Country-code, as specified in the XML file>=<Lattitude>|<Longitude>, in the [COUNTRY_CENTER_LAT_LNG] section of the eg_geodetails.ini file. In the case of our example, 3 entries will have to be made in this section. Sample entries are provided below:
NB=1.352083|103.819836
SB=1.252308|100.813768
EB=1.208245|101.88564
- Finally, save the file.
- Then, copy the eg_geodetails.ini file on the eG manager host to the <EG_AGENT_INSTALL_DIR>\agent\config directory on the eG agent host.
-
Restart the eG manager and agent.
-
Where users connect to a target web site via multiple telecom lines, can eG RUM pinpoint the telecom line that was used by the user who often complained of bad experience?
eG RUM captures and reports the Client IP address of each RUM page view, as part of detailed diagnostics. You can use this IP address to identify the telecom line manually.
-
I am trying to capture the User name into detailed diagnostics, but I am unable to. This is because, every time I try to capture a user name, the name is reported along with a text string. How do I separate the user name from the accompanying string?
- In a browser, open the web page that contains the user name.
- Then, open the developer tool JavaScript console from the opened web page.
-
Run the following JavaScript line in the console:
document.querySelectorAll(‘<CSS_SELECTOR>’)[0].innerText;
Make sure you replace the <CSS_SELECTOR> in the line of code above, with the name of the CSS Selector that points to the user name.
- If this line of code returns just a user name, then you can configure eG RUM to capture the user name from the CSS Selector directly.
- However, if the aforesaid line of code returns a user name that is prefixed or suffixed with random text, then its a clear indication that the user name needs to be trimmed before it an be included in detailed diagnosis.
-
In this case, when configuring eG RUM to capture the user name using the CSS Selector (see Figure 8), set the Apply Cleanup Rule flag to Yes. Then, you will have to provide an Extraction Rule. This rule will be automatically applied to every user name captured, so that it is 'trimmed' or 'cleansed' of unnecessary frills and readied for inclusion in detailed diagnosis. For instance, say that a user name displayed in a web page is prefixed by the salutation, 'Hi'. When such a user name is captured using a selector or locator, the 'Hi' is captured with it. Naturally, you will want to remove the 'Hi' and add just the 'user name' to the detailed diagnosis. For this, your Extraction Rule will be of the format: Hi (.*)
- In a browser, open the web page that contains the user name.
- Then, open the developer tool JavaScript console from the opened web page.
-
Run the following function in the console:
function getElementsByXPath(xpath, parent)
{
var results = [];
var query = document.evaluate(xpath,parent || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i=0, length=query.snapshotLength; i<length; ++i) {
results.push(query.snapshotItem(i));
}
return results;
-
Then, run the following JavaScript line in the console:
getElementsByXPath(‘<XPATH_LOCATOR>’)[0].innerText;
Make sure you replace the <XPATH_LOCATOR> in the line of code above, with the name of the XPath Locator that points to the user name.
- If this line of code returns just a user name, then you can configure eG RUM to capture the user name from the XPath Locator directly.
- However, if the aforesaid line of code returns a user name that is prefixed or suffixed with random text, then its a clear indication that the user name needs to be trimmed before it an be included in detailed diagnosis.
-
In this case, when configuring eG RUM to capture the user name using the XPath Locator (see Figure 9), set the Apply Cleanup Rule flag to Yes. Then, you will have to provide an Extraction Rule. This rule will be automatically applied to every user name captured, so that it is 'trimmed' or 'cleansed' of unnecessary frills and readied for inclusion in detailed diagnosis. For instance, say that a user name displayed in a web page is prefixed by the salutation, 'Hi'. When such a user name is captured using a selector or locator, the 'Hi' is captured with it. Naturally, you will want to remove the 'Hi' and add just the 'user name' to the detailed diagnosis. For this, your Extraction Rule will be of the format: Hi (.*).
-
The user is accessing the web site only once. But, I find that the eg_rum.js is getting injected multiple times in the web site code (see Figure 10).
Figure 10 : A web site's code revealing many eg_rum.js injections for a single user hit
Why does this happen?
If you take a look at the Name column in Figure 10, you will find that eg_rum.js appears only once in that column. This implies that the eg_rum.js is injected only once in the code. The Name column also reveals many objects marked as 'rdr'. These are not code injections; in fact, 'rdr' is the beacon data - i.e., the metrics collected by the browser and sent to the eG RUM Collector. Note that eG RUM will send beacon data for each base page, iFrame, and Ajax call, separately. In the web site of Figure 10, many Ajax calls were made - this is why, you will find an 'rdr' entry per Ajax call.
The first step towards this is to confirm that the user name is indeed been captured along with a text string. For this, use the self-evaluation scripts that we provide - one each for the CSS Selector and XPath Locator expression types.
If you are capturing the user name using a CSS Selector, then do the following to determine whether/not the user name is returned along with the string:
On the other hand, if the user name is to be captured using an XPath Locator, then follow the steps below to confirm whether/not this user name comes along with any text string attached: