Pulse Response Monitor Tool V1.3 | |||
Project Developer | Keith Stewart | ||
Project Owner | GraphCube | ||
Technical Writer | Keith Stewart | ![]() |
|
Versioning | 22 FEB 2017, REV: 13 MAR 2017 REV: 07 APR 2017, 10 JAN 2020 | ||
Document Name | ResponseMonitorV1.3.docx |
The Pulse APP has been monitoring our client’s server cluster since May 2017. The sample Monthly Performance Report generated by the APP includes a descriptive statistical and analytical review of the Pulse APP results (PRO server only) for the Month of June and for the Year-to-date (YTD—May and June).
The Data Table presents a statistical summary of the results of the current month (June) and Year-to-Date (YTD-May and June). The X (mean) and 2σ (2*Standard Deviation) are in Milliseconds, the # <2σ (count) is in integers, and the %E (% exceeded 2σ) is in decimals. The milliseconds refer to the response time for the target action to initiate, execute, and complete. The #2<2σ refers to how many individual measurements exceeded the 2σ threshold.
The Pulse App was developed in both ColdFusion and PHP programming languages. This versioning strategy was performed to accommodate client software requirements. The functionality and UI are identical for both versions.
The ColdFusion version is discussed in this specifications document. Figure 1 below is an idealized depiction of the most common App framework and architecture in a standard cloud configuration. For this version, deployment was to the GraphCube cloud environment.
Client Login Required
The APP is protected from unauthorized access via a required login. Clients (users) must first login to the APP via valid credentials. Login procedures are described in the Security Framework section of this document. A view of the login screen is displayed in Figure #2.
The APP automatically generates metrics by invoking 4 separate HTTPS-get requests to receiving files on the target web server every 15 minutes (see Figure 1 for a general overview of the metrics generation process). Clients can modify the automatic metrics generation schedule to meet specific client requirements. Each of these HTTPS-get requests starts and ends with a ColdFusion timer function to record the total time to make the request to the target and the time elapsed when/if the target receiving file responds. This response time is measured in milliseconds. The results are inserted into a SQL database on the APP host server for display in the Pulse chart (see Viewing Metrics section for an explanation of charting capabilities). The data inserted into the Host SQL include non-identifiable response-time data as specified in Table #1 below. Any request over 5 seconds is automatically timed out and recorded. Each of the 4 HTTPS-get requests are invoked by a CFC function and DO NOT display any data; the requests/responses are only timed. All CFM pages on the target utilize APP-only data source names and properties. These properties are designed to shield actual source names and paths for security purposes. Each target CFM and HTML receiving files are described below:
To view App metrics, login to the app and the metrics for the current month are displayed. The response metrics are queried from the dX table on the APP host and loaded via json format into a FusionCharts JavaScript Zoom chart and a stacked Area Chart. The dX query is based on user parameters (start and end dates/times and Target server). The metrics chart is compatible for mobile, tablet, and desktop display. The chart display can be saved/exported in png, jpg, pdf, svg, or xls format (See Figure #3).
The APP user interface (Figure 3) includes the following features which can be configured by the user:
In addition to the above features, each graph includes several UI elements which can be accessed with the using any of the following three actions:
As a reminder, the Pulse APP does NOT return any data to the client and does not include any process or functions that include sensitive or personally identifiable data. The APP only makes 2 generic queries (one to Oracle and one to SQL) to specially designed APP tables that include random dates only. The APP then measures the time required to complete the functions. Nevertheless, the APP has been configured with the following Security Details to prevent unauthorized access. Additionally, all Pulse APP receiving files are segregated into a /pulse folder.
Security Details
- The Pulse APP (the APP) requires users login to the client site (or Graphcube cloud) with a valid account. This is accomplished on the APP; the APP can be used by any device (mobile, tablet, PC).
- The APP requires an HTTPS connection for all processes. If an HTTPS connection is not established with the client (user), the APP is terminated. Accordingly, all app functions occur over an encrypted HTTPS connection using a PKCS #1 SHA-256 With RSA Encryption certificate from a trusted CA.
- Clients (users) are allowed up to 3 attempts to login to Pulse. After 3 unsuccessful login attempts, client APP access is disabled for 24 hours, no further login attempts are allowed within this 24-hour period.
- Login procedures include a series of security tests to prevent cross site forgery and cross site scripting and unauthorized APP access according to Table #2. NOTE: all tests in the table below must be passed for access to the APP.
- If FINAL login test equals 8 as specified above, attempt a login via HTTPS to client or Graphcube cloud login page. If login is successful, App returns a 96-character random and unique session variable. If no session variable is returned OR if an empty session variable is returned, processing is aborted and client is redirected to login page. If this session variable is returned from login and is exactly 96 characters, the Pulse APP extracts the session variable value and sets a final session variable as specified in Table #3.
- If and only if all parameters above are met and there is a valid Domain and Secure session variable, allow the APP to invoke the CFC to process the CFM/HTML receiving pages specified in Generating Metrics section above.
- The CFC access to the client receiving files includes two security parameters passed to the receiving files as specified in Table #4. Note, the CGI Header Variable is NOT passed to the rM.html file since this file performs one and only one function: retrieval of a preloaded image from the pulse/images/ folder (see #9 below).
- The APP CFC Function (myStats) makes only HTTPS CFHTTP calls to the receiving files and the CFC is only available to the Pulse App. The CFC Function (myStats) output is set to false; no data is returned; only the time required to process each CFHTTP calls is returned (See Table 1: Tool Results Data above).
- For the APP rM.html receiving page, the APP records the time required to retrieve a pre-determined sample 950K-size image file (Figure #4) located in the /pulse/images/ folder.
- The Pulse APP resides on a commercial server at graphcube.com or in the Graphcube cloud. The On-Prem server is a Windows Small Business Server protected by a NETGEAR ProSafe™ Gigabit 8 Port VPN Firewall which restricts all remote access traffic to HTTP (port 80) and HTTPS (Port 443) only.
Enhancements may include automatic notification to email/text accounts when various thresholds in response time are met or exceeded. Initially, it is recommended that after the first week of monitoring, a baseline performance average response for each target is established and then a notification threshold is set whenever the response time is 30% above the baseline for any response factor (CFML, HTML, SQL, Oracle) on any target. The tool can also send automatic results summary reports (Excel) via email on routine schedules (weekly, daily, etc.). These enhancements can be configured with minimal effort and will require clients to provide email/text/report notification lists (see sample Table #5).