PerformanceMonitoring API
To allow you to analyze the user experience of your applications, OutSystems logs request events with valuable data for your analytics. To give you access to request events, the PerformanceMonitoring API provides REST API methods to:
- retrieve a list of request events that occurred in your application
- register your own request related events
The server only stores data for the last two days. Learn how application performance is measured.
Summary
Methods | Description |
---|---|
GET RequestEvents | Returns a list of request events, filtered by the event names and time interval you specify in the parameters. |
POST RequestEvents | Logs a request event. Based on that data you can analyze the user experience of your applications. |
Resources | Description |
---|---|
RequestEvent | Represents an event of a web request, sent to an OutSystems application. |
Methods
GET RequestEvents
Returns a list of request events, filtered by event names and time interval you specify in the parameters.
This method requires basic authentication. You need to provide the credentials of a LifeTime user. It returns request events only for those applications to which the user has 'Reuse & Monitor' permission in the environment. Learn more about how to configure security for an infrastructure.
To use it in an application, make sure that monitoring is turned on for the environment, and for the application module. Otherwise the API responds with a status code of '200 - OK', but doesn't retrieve any events.
URL
http://[server]/PerformanceProbe/rest/PerformanceMonitoringAPI/RequestEvents/?EventNames={EventNames}&StartInstant={StartInstant}&EndInstant={EndInstant}&NumberOfResults={NumberOfResults}
Input
- EventNames
- Type: string, optional, to be sent in the URL.
List of events to filter on. Separate event names with a comma.
Example: "WebScreenClientExecuted,WebScreenServerExecuted". - StartInstant
- Type: date time, mandatory, to be sent in the URL.
The start date and time of the time interval you want to filter on. Format: ISO 8601.
Example: "2012-04-23T18:25:43.511Z". - EndInstant
- Type: date time, mandatory, to be sent in the URL.
The end date and time of the time period you want to filter on. Format: ISO 8601.
Example: "2012-04-23T18:25:43.511Z". - NumberOfResults
- Type: int32, optional, to be sent in the URL.
The maximum number of events to return. Note that the actual upper limit never exceeds the default limit (15000).
This limit is set in the 'MaxResponseSize' site property of the PerformanceProbe module of your environment.
Output
- RequestEventList
- Type: list of RequestEvent.
List of RequestEvent objects filtered on. - ResultsTruncated
- Type: boolean.
Indicates if not all the results were returned, due to the limit of objects in the list.
This can occur due to the limit set either in the 'NumberOfResults' parameter, or in the 'MaxResponseSize' site property of the PerformanceProbe module of your environment. Default limit: 15000.
To retrieve the next set of results, you can send a new GET request. Set its StartInstant parameter to the Instant of the most recent RequestEvent you got on the previous request.
Example Request
curl --user mike.fitt:123456
"http://outsystemscloud.com/PerformanceProbe/rest/PerformanceMonitoringAPI/RequestEvents/?StartInstant=2015-09-28T12:45:00.000Z&EndInstant=2015-09-28T12:47:00.025Z"
Example Result
{ "RequestEventList": [ { "Instant": "2015-09-28T12:46:50.713Z", "RequestKey": "11bcf87b-35ca-44dc-b4b3-567db2a159cb", "RequestEventName": "WebScreenClientExecuted", "ModuleKey": "1e758d31-e7de-4641-a731-d3976254108d", "ModuleName": "PerformanceSampleDat", "ApplicationKey": "d026f21a-cbe8-490e-8fbb-47b7fe0db79e", "ApplicationName": "Performance Sample Data", "RequestEventDetails": { "AK": "7449c66a-9863-4673-91c0-cb0440344497", "AN": "StartBootstrap", "EPK": "5a0a2e6c-570f-414f-9b19-ee2cafde273d", "EPN": "HomePage", "TK": "6284e8bf-2aa5-50a4-f1bc-9918c2801df6", "TN": "Users", "EK": "c5be45ac-ccac-4091-a825-d6a7bb9554a0", "EN": "Development", "FN": "qaos1296lt5308", "VK": "d6aa213f-6b4a-42b6-8e39-6624008a576a", "ViK": "82359545-98b8-4010-8c72-cca1a2fe7b3b", "SK": "73562726-2f4f-9bc1-9f44-6219febee940", "UK": "666d9979-32be-4b2d-5271-d267d996bfca", "SR": "1680x1050", "D": 314, "LT": 2, "TTFB": 312, "TTLB": 312, "UA": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/45.0.2454.93 Safari\/537.36" } }, { "Instant": "2015-09-28T12:46:51.037Z", "RequestKey": "ad133aee-5cc9-4eb9-8faf-016d2b811d0c", "RequestEventName": "WebScreenClientExecuted", "ModuleKey": "1e758d31-e7de-4641-a731-d3976254108d", "ModuleName": "PerformanceSampleDat", "ApplicationKey": "d026f21a-cbe8-490e-8fbb-47b7fe0db79e", "ApplicationName": "Performance Sample Data", "RequestEventDetails": { "AK": "f6151d08-6edd-01a7-e402-8f5a6a6fce40", "AN": "Feedback_Message.Refresh", "EPK": "5a0a2e6c-570f-414f-9b19-ee2cafde273d", "EPN": "HomePage", "TK": "6284e8bf-2aa5-50a4-f1bc-9918c2801df6", "TN": "Users", "EK": "c5be45ac-ccac-4091-a825-d6a7bb9554a0", "EN": "Development", "FN": "qaos1296lt5308", "VK": "d6aa213f-6b4a-42b6-8e39-6624008a576a", "ViK": "82359545-98b8-4010-8c72-cca1a2fe7b3b", "SK": "73562726-2f4f-9bc1-9f44-6219febee940", "UK": "666d9979-32be-4b2d-5271-d267d996bfca", "SR": "1680x1050", "D": 179, "LT": 24, "TTFB": 155, "TTLB": 155, "UA": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/45.0.2454.93 Safari\/537.36" } } ], "ResultsTruncated": false }
POST RequestEvents
Adds an event to the request event logs, allowing you to collect custom data about web requests. This method uses the LogRequestEvent method of the AsynchronousLogging API, which relies on a non-persistent message queue. As a result, request events that are in the message queue waiting to be processed are lost in the case of a system failure.
To use this method in an application, make sure that monitoring is turned on for the environment, and for the application module. Otherwise the API responds with a status code of '200 – OK', but doesn't register the event.
URL
http://<server>/PerformanceProbe/rest/PerformanceMonitoringAPI/RequestEvents/
Input
- RequestEvent
- Type: RequestEvent, mandatory, to be sent in the request body (JSON).
The event of a request in an application to be logged.
Example Request
curl -X POST -H "Content-Type: application/json"
-d {\"Instant\":\"2015-09-28T12:46:50.713Z\",\"RequestKey\":\"67b6ae64-fbf0-4e45-b798-0981749018ba\",
\"RequestEventName\":\"TelecomServices_ModuleLoaded\",\"ModuleKey\":\"2d206f37-af0b-4b46-b11e-375f50c3c282\",
\"ModuleName\":\"TelecomServices\",\"ApplicationKey\":\"00000000-0000-0000-0000-006f74686572\",
\"ApplicationName\":\"Field%20Services\",\"RequestEventDetails\":\"{\\\"Ver\\\":\\\"7.2\\\"}\"}
http://outsystemscloud.com/PerformanceProbe/rest/PerformanceMonitoringAPI/RequestEvents/
Resources
RequestEvent
Property | Description |
---|---|
Instant | Date and time when the event occurred. |
Request Key | The GUID that identifies the request. |
Request Event Name | The name of the event. |
Module Key | Unique identifier of the module where the event occurred. |
Module Name | Name of the module where the event occurred. |
Application Key | Unique identifier of the application where the event occurred. |
Application Name | Name of the application where the event occurred. |
Request Event Details | A JSON object with the details about the event. Each built-in request event has its own details: • WebScreenClientExecuted • WebScreenServerExecuted • QueryExecuted • ConsumedIntegrationExecuted • ExtensionExecuted |
Request Event Details for WebScreenClientExecuted Event
This event occurs whenever the user’s browser finishes processing a request (initial page load, any form submission, or any AJAX request). The event's properties are the following:
Property | Meaning | Description |
---|---|---|
AK | Action Key | The key of the action that was handling the request on the server. |
AN | Action Name | The name of the action that was handling the request. Actions include the Preparation action and Screen Actions. Note: If the web screen does not have a Preparation action, or if a cached version was served, then the ActionName is "(PageRender)". |
EK | Environment Key | The unique key identifying the environment the user was accessing. |
EN | Environment Name | The name of the environment the user was accessing. |
EPK | EndPoint Key | The key of the web screen that was handling the request. |
EPN | EndPoint Name | The name of the web screen that was handling the request. |
TK | Tenant Key | A unique key identifying the tenant. |
TN | Tenant Name | The name of the tenant. |
FN | Front-end Name | The name of the front-end server that handled the request. |
VK | Visitor Key | Unique identifier key for the visitor that performed the request. A visitor is a combination of a device and a browser. The key is created at the first time the visitor accesses the website’s domain using a given device and browser. The same key is used until the browser cookies are cleared. |
ViK | Visit Key | Unique identifier of the visit associated with the current request. A visit is defined as a series of page requests from the same visitor. A visit is considered finished when no requests have been recorded for 30 minutes. |
SK | Session Key | Unique identifier of the session associated with the request. |
UK | User Key | Unique user identifier associated with the user, if logged in during the request. |
SR | Screen Resolution | The browser window screen resolution. Formatted as "<width>x<height>". Example: "1024x768". |
UA | User Agent | The user agent string as provided by the browser. |
D | Duration | The time, in milliseconds, that passed from the moment the user made the request (e.g. by clicking on a link) until the browser finished processing the response. Note: This attribute is related only to the HTTP request itself. If the HTML contains references to other resources (e.g. images, fonts), the time it took to download and process those resources is not included. |
LT | Load Time | The time, in milliseconds, that the browser took to process the response. The load time includes for example the page rendering and the JavaScript execution. |
TTFB | Time To First Byte | The time, in milliseconds, that passed from the moment the user made the request (e.g. user clicked on a link), until the browser received the first byte of the response from the platform server. |
TTLB | Time To Last Byte | The time, in milliseconds, that passed from the moment the user made the request (e.g. user clicked on a link), until the browser received the last byte of the response from the platform server. |
DMan | Device Manufacturer | The name of the device manufacturer. The value is collected only when running the application natively on a mobile device. |
DMod | Device Model | The name of the device model. The value is collected only when running the application natively on a mobile device. |
DPlat | Device Platform | The operating system running on the device. The value is collected only when running the application natively on a mobile device. |
DPlatV | Device Platform Version | The version of the device's operating system. The value is collected only when running the application natively on a mobile device. |
NT | Network Type | The active network type used by the device. This can either be the Carrier Network Type (e.g. 3G) or WiFi. The value is collected only when running the application natively on a mobile device. |
CN | Carrier Name | The name of the communications service provider of the device. The value is collected only when running the application natively on a mobile device, and the device supports a carrier-based network service such as 3G or GPRS. |
CCC | Client Country Code | The ISO-Alpha2 country code associated with the device's carrier. The value is collected only when running the application natively on a mobile device, and the device supports a carrier-based network service such as 3G or GPRS. |
CNT | Carrier Network Type | The active network type provided by the device's carrier, such as 3G or GPRS. The value is collected only when running the application natively on a mobile device, and the device supports a carrier-based network service such as 3G or GPRS. |
Request Event Details for WebScreenServerExecuted Event
This event occurs whenever the server finishes handling a request. The event's properties are the following:
Property | Meaning | Description |
---|---|---|
TK | Tenant Key | A unique key identifying the tenant. |
TN | Tenant Name | The name of the tenant. |
EK | Environment Key | The unique key identifying the environment the user was accessing. |
EN | Environment Name | The name of the environment the user was accessing. |
FN | Front-end Name | The name of the front-end server that handled the request. |
EPN | EndPoint Name | The name of the web screen that was handling the request. |
EPK | EndPoint Key | The key of the web screen that was handling the request. |
AN | Action Name | The name of the action that was handling the request. Actions include the Preparation action and Screen Actions. Note: If the web screen does not have a Preparation action, or if a cached version was served, then the ActionName is "(PageRender)". |
AK | Action Key | The key of the action that was handling the request. |
D | Duration | The total time, in milliseconds, the server spent serving the request. Note: If the application server (e.g. IIS) queued the request due to server load, the time spent waiting in the queue is not included in this metric. |
TQT | Total Query Time | The total time spent, in milliseconds, executing queries (Aggregates and Advanced Queries). |
TQE | Total Query Executions | The total number of executed queries (Aggregates and Advanced Queries). |
TET | Total Extension Time | The total time spent, in milliseconds, calling actions provided by extensions. |
TEE | Total Extension Executions | The total number of calls to actions provided by extensions. |
TCIT | Total Consumed Integration Time | The total time spent, in milliseconds, calling actions provided by consumed integrations (SOAP, REST, SAP). |
TCIE | Total Consumed Integration Executions | The total number of calls to actions provided by consumed integrations (SOAP, REST, SAP). |
IP | Client IP | The client's public IP address, collected from the X-FORWARDED-FOR header, or if that doesn't exist, from the REMOTE_ADDR header. |
SAT | Session Acquisition Time | The time spent, in milliseconds, retrieving the session from the database. |
SS | Session Size | The session size, in bytes |
VSS | View State Size | The view state, in bytes. |
UID | User Id | The unique identifier of the user that made the request. It corresponds to the user's identifier stored in the User system entity. If the request was made by an anonymous user, the User Id is not included in the event attributes. |
Request Event Details for QueryExecuted Event
This event occurs when OutSystems Platform detects a slow query. The event's properties are the following:
Property | Meaning | Description |
---|---|---|
TK | Tenant Key | A unique key identifying the tenant. |
TN | Tenant Name | The name of the tenant. |
AK | Action Key | The key of the action that was handling the request. |
AN | Action Name | The name of the action that was handling the request. Actions include the Preparation action and Screen Actions. Note: If the web screen does not have a Preparation action, or if a cached version was served, then the ActionName is "(PageRender)". |
EK | Environment Key | The unique key identifying the environment the user was accessing. |
EN | Environment Name | The name of the environment the user was accessing. |
EPK | EndPoint Key | The key of the web screen that was handling the request. |
EPN | EndPoint Name | The name of the web screen that was handling the request. |
FN | Front-end Name | The name of the front-end server that handled the request. |
D | Duration | The total duration of all the slow query executions. |
OK | Object Key | The key that identifies the slow query. |
ON | Object Name | The name of the slow query. |
NE | Number of Executions | The total number of calls for a given slow query. |
OEK | Object’s eSpace Key | The key of the application module where the slow query was called. |
OEN | Object’s eSpace Name | The name of the application module where the slow query was called. |
Request Event Details for ConsumedIntegrationExecuted Event
This event occurs when the OutSystem Platform detects a slow consumed integration. The event's properties are the following:
Property | Meaning | Description |
---|---|---|
TK | Tenant Key | A unique key identifying the tenant. |
TN | Tenant Name | The name of the tenant. |
EK | Environment Key | The unique key identifying the environment the user was accessing. |
EN | Environment Name | The name of the environment the user was accessing. |
FN | Front-end Name | The name of the front-end server that handled the request. |
ON | Object Name | The name of the slow integration method. |
OK | Object Key | The key that identifies the slow integration method. |
OEN | Object's eSpace Name | The name of the application module where the slow integration was called. |
OEK | Object's eSpace key | The key of the application module where the slow integration was called. |
NE | Number of Executions | The total number of calls for a given slow integration. |
D | Duration | The total duration of all the slow integration executions. |
EPN | EndPoint Name | The name of the web screen that was handling the request. |
EPK | EndPoint Key | The key of the web screen that was handling the request. |
AN | Action Name | The name of the action that was handling the request. Actions include the Preparation action and Screen Actions. Note: If the web screen does not have a Preparation action, or if a cached version was served, then the ActionName is "(PageRender)". |
AK | Action Key | The key of the action that was handling the request. |
IT | Integration Type | The integration type. Current supported integration types: SOAP, REST and SAP. |
IE | Integration Endpoint | The integration's endpoint URL. |
Request Event Details for ExtensionExecuted Event
This event occurs when the OutSystem Platform detects a slow extension action. The event's properties are the following:
Property | Meaning | Description |
---|---|---|
TK | Tenant Key | A unique key identifying the tenant. |
TN | Tenant Name | The name of the tenant. |
EK | Environment Key | The unique key identifying the environment the user was accessing. |
EN | Environment Name | The name of the environment the user was accessing. |
FN | Front-end Name | The name of the front-end server that handled the request. |
OK | Object key | The key that identifies the slow extension's action. |
ON | Object name | The name of the slow extension's action. |
OEK | Object's eSpace key | The key of the eSpace where the slow extension action was called. |
OEN | Object's eSpace name | The name of the eSpace where the slow extension action was called. |
NE | Number of Executions | The total number of calls for a given slow extension’s action. |
D | Duration | The total duration of all the slow extension executions. |
EPK | EndPoint Key | The key of the web screen that was handling the request. |
EPN | EndPoint Name | The name of the web screen that was handling the request. |
AK | Action Key | The key of the action that was handling the request. |
AN | Action Name | The name of the action that was handling the request. Actions include the Preparation action and Screen Actions. Note: If the web screen does not have a Preparation action, or if a cached version was served, then ActionName is "(PageRender)". |