The setup of an End-User Performance monitoring consists of several parts that need to be aligned with each other. Here, the steps to implement an End-User Performance Simulation instance of internet availability and performance monitoring are described. The example described here is rather small and easy, compared to End-User Performance of business applications. The following aspects often increase the complexity of real-world End-User Performance implementations:
Although the complexity varies from implementation to implementation. The steps to implement the End-User Performance remain the same.
An End-User Performance implementation has the following steps:
An End-User Performance implementation has the following steps:
In this first step, the End-User Performance requirements are collected and documented using one or more intakes with the stakeholders. To develop an End-User Performance script, it is important that for every step, the action(s) taken, and the expected response(s) are well defined.
For this example, the End-User Performance of internet availability and performance, the following requirements are used to develop the EUP Configuration file and the script:
One of the existing servers will receive the EUP Collector role. On this server the required directory, SBM share and users are created. The user who starts the End-User Performance Simulation script on the Watcher Node should have write-access to EUP Collector Path. Depending on the network topology, the ACLs needs an update in order to enable the SMB protocol between the Watch Node and the EUP Collector.
As mentioned in the requirements, the Watcher Node should be an ordinary end-user system with the same specifications as the systems that are used by the end-users. Windows 10 is rolled out on a desktop computer. The Watcher Node and Windows 10 are configured in a way that:
A script is developed to simulate a user opening 3 webpages. This script uses the AutoIt UDF library for the End-User Performance, called “EndUserMonitor.au3”. The library consists of common functions to collect instance information, step information, and to write the information to an End-User Performance Simulation data file. Before starting with the development, the latest version of the UDF Library for the End-User Performance Management Pack should be downloaded from the download page. The AutoIt script mentioned below is developed to simulate a user who is opening 3 webpages:
#CS ===================================================================================
Title .........: End-User Performance Monitor Script for webpages
AutoIt Version : 3.3.14.2
Language ......: English
Description ...: Script to simulate a user monitoring the performance and content
of 3 webpages
Author(s) .....: The Backbone - The Netherlands
#CE ===================================================================================
#include <IE.au3>
#include "EndUserMonitor.au3"
#CS ===================================================================================
Variable initialization
#CE ===================================================================================
Local Enum $eStepID, $eWebPage, $eContent
Local $aWebPages[3][3]
$aWebPages[0][$eStepID] = "Google"
$aWebPages[0][$eWebPage] = "www.google.com"
$aWebPages[0][$eContent] = "// Google Inc."
$aWebPages[1][$eStepID] = "Microsoft"
$aWebPages[1][$eWebPage] = "www.microsoft.com"
$aWebPages[1][$eContent] = "Zoeken op Microsoft.com"
$aWebPages[2][$eStepID] = "Amazon"
$aWebPages[2][$eWebPage] = "www.amazon.com"
$aWebPages[2][$eContent] = "About Amazon"
Local $sFilePath = "D:\EUP\"
Local $sInstanceId = "I01"
Local $sHTML = ""
Local $oIE = Null
#CS ===================================================================================
Flush DNS
#CE ===================================================================================
RunWait(@ComSpec & " /C IPCONFIG /FLUSHDNS", "", @SW_HIDE)
#CS ===================================================================================
Instance initialization
#CE ===================================================================================
_EUP_Init($sFilePath)
_EUP_InstanceStart($sInstanceId)
#CS ===================================================================================
Steps
#CE ===================================================================================
; Call the function OpenSite for each row of the $aWebPages Array. The function
; OpenSite simulates one step.
For $i = 0 to UBound($aWebPages) - 1
OpenSite ($aWebPages[$i][$eStepID], $aWebPages[$i][$eWebPage], _
$aWebPages[$i][$eContent])
Next
#CS ===================================================================================
Instance stop
#CE ===================================================================================
_EUP_InstanceStop(True)
#CS ===================================================================================
Data Write
#CE ===================================================================================
_EUP_DataWrite ()
Exit (0)
#CS ===================================================================================
Functions
#CE ===================================================================================
#CS ===================================================================================
OpenSite:
Carries out one step of the simulation. Opens the website and checks the content.
#CE ===================================================================================
Func OpenSite ($sStep, $sSite, $sContent)
Local $oIE
_EUP_StepStart($sStep)
$oIE = _IECreate($sSite)
If @error Then
_EUP_StepStop($sStep, False, "IE Error: " & ReturnIEError (@error))
Else
; Reads the body of the HTML page.
; Checks if the body of the loaded page contains the value of $sContent.
; 0 means that the string is not found in the body text and that the
; expected page is not loaded.
$sHTML = _IEBodyReadHTML($oIE)
If StringInStr ($sHTML, $sContent) = 0 Then
_EUP_StepStop($sStep, False, "Content of Webpage does not match: " & $sHTML)
Else
; Webpage was loaded successfully.
_EUP_StepStop($sStep, True)
EndIf
EndIf
_IEQuit($oIE)
EndFunc
#CS ===================================================================================
ReturnIEError:
Returns the error messages related to the IE object Error Code.
#CE ===================================================================================
Func ReturnIEError ($ErrorCode)
Switch $ErrorCode
Case 1
Return "General Error"
Case 2
Return "COM Error in Object reference"
Case 3
Return "Invalid Data Type"
Case 4
Return "Invalid Object Type"
Case 6
Return "Load Wait Timeout"
Case 8
Return "Access Is Denied"
Case 9
Return "Client Disconnected"
EndSwitch
; If the error code does not match, return "Unknown error code"
Return "Unknown IE error code: " & $ErrorCode
EndFunc
Place the EUP Configuration file in de EUP Collector Path of the EUP Collector.
The default thresholds don’t match the requirements. Overrides are created to change the thresholds below: