title | description | ms.topic | ms.date |
---|---|---|---|
Azure Application Insights Data Model | Microsoft Docs |
Describes properties exported from continuous export in JSON, and used as filters. |
conceptual |
01/08/2019 |
This table lists the properties of telemetry sent from the Application Insights SDKs to the portal. You'll see these properties in data output from Continuous Export. They also appear in property filters in Metric Explorer and Diagnostic Search.
Points to note:
[0]
in these tables denotes a point in the path where you have to insert an index; but it isn't always 0.- Time durations are in tenths of a microsecond, so 10000000 == 1 second.
- Dates and times are UTC, and are given in the ISO format
yyyy-MM-DDThh:mm:ss.sssZ
// A server report about an HTTP request
{
"request": [
{
"urlData": { // derived from 'url'
"host": "contoso.org",
"base": "/",
"hashTag": ""
},
"responseCode": 200, // Sent to client
"success": true, // Default == responseCode<400
// Request id becomes the operation id of child events
"id": "fCOhCdCnZ9I=",
"name": "GET Home/Index",
"count": 1, // 100% / sampling rate
"durationMetric": {
"value": 1046804.0, // 10000000 == 1 second
// Currently the following fields are redundant:
"count": 1.0,
"min": 1046804.0,
"max": 1046804.0,
"stdDev": 0.0,
"sampledValue": 1046804.0
},
"url": "/"
}
],
"internal": {
"data": {
"id": "7f156650-ef4c-11e5-8453-3f984b167d05",
"documentVersion": "1.61"
}
},
"context": {
"device": { // client browser
"type": "PC",
"screenResolution": { },
"roleInstance": "WFWEB14B.fabrikam.net"
},
"application": { },
"location": { // derived from client ip
"continent": "North America",
"country": "United States",
// last octagon is anonymized to 0 at portal:
"clientip": "168.62.177.0",
"province": "",
"city": ""
},
"data": {
"isSynthetic": true, // we identified source as a bot
// percentage of generated data sent to portal:
"samplingRate": 100.0,
"eventTime": "2016-03-21T10:05:45.7334717Z" // UTC
},
"user": {
"isAuthenticated": false,
"anonId": "us-tx-sn1-azr", // bot agent id
"anonAcquisitionDate": "0001-01-01T00:00:00Z",
"authAcquisitionDate": "0001-01-01T00:00:00Z",
"accountAcquisitionDate": "0001-01-01T00:00:00Z"
},
"operation": {
"id": "fCOhCdCnZ9I=",
"parentId": "fCOhCdCnZ9I=",
"name": "GET Home/Index"
},
"cloud": { },
"serverDevice": { },
"custom": { // set by custom fields of track calls
"dimensions": [ ],
"metrics": [ ]
},
"session": {
"id": "65504c10-44a6-489e-b9dc-94184eb00d86",
"isFirst": true
}
}
}
All types of telemetry are accompanied by a context section. Not all of these fields are transmitted with every data point.
Path | Type | Notes |
---|---|---|
context.custom.dimensions [0] | object [ ] | Key-value string pairs set by custom properties parameter. Key max length 100, values max length 1024. More than 100 unique values, the property can be searched but cannot be used for segmentation. Max 200 keys per ikey. |
context.custom.metrics [0] | object [ ] | Key-value pairs set by custom measurements parameter and by TrackMetrics. Key max length 100, values may be numeric. |
context.data.eventTime | string | UTC |
context.data.isSynthetic | boolean | Request appears to come from a bot or web test. |
context.data.samplingRate | number | Percentage of telemetry generated by the SDK that is sent to portal. Range 0.0-100.0. |
context.device | object | Client device |
context.device.browser | string | IE, Chrome, ... |
context.device.browserVersion | string | Chrome 48.0, ... |
context.device.deviceModel | string | |
context.device.deviceName | string | |
context.device.id | string | |
context.device.locale | string | en-GB, de-DE, ... |
context.device.network | string | |
context.device.oemName | string | |
context.device.os | string | |
context.device.osVersion | string | Host OS |
context.device.roleInstance | string | ID of server host |
context.device.roleName | string | |
context.device.screenResolution | string | |
context.device.type | string | PC, Browser, ... |
context.location | object | Derived from clientip . |
context.location.city | string | Derived from clientip , if known |
context.location.clientip | string | Last octagon is anonymized to 0. |
context.location.continent | string | |
context.location.country | string | |
context.location.province | string | State or province |
context.operation.id | string | Items that have the same operation id are shown as Related Items in the portal. Usually the request id . |
context.operation.name | string | url or request name |
context.operation.parentId | string | Allows nested related items. |
context.session.id | string | Id of a group of operations from the same source. A period of 30 minutes without an operation signals the end of a session. |
context.session.isFirst | boolean | |
context.user.accountAcquisitionDate | string | |
context.user.accountId | string | |
context.user.anonAcquisitionDate | string | |
context.user.anonId | string | |
context.user.authAcquisitionDate | string | Authenticated User |
context.user.authId | string | |
context.user.isAuthenticated | boolean | |
context.user.storeRegion | string | |
internal.data.documentVersion | string | |
internal.data.id | string | Unique id that is assigned when an item is ingested to Application Insights |
Custom events generated by TrackEvent().
Path | Type | Notes |
---|---|---|
event [0] count | integer | 100/(sampling rate). For example 4 => 25%. |
event [0] name | string | Event name. Max length 250. |
event [0] url | string | |
event [0] urlData.base | string | |
event [0] urlData.host | string |
Reports exceptions in the server and in the browser.
Path | Type | Notes |
---|---|---|
basicException [0] assembly | string | |
basicException [0] count | integer | 100/(sampling rate). For example 4 => 25%. |
basicException [0] exceptionGroup | string | |
basicException [0] exceptionType | string | |
basicException [0] failedUserCodeMethod | string | |
basicException [0] failedUserCodeAssembly | string | |
basicException [0] handledAt | string | |
basicException [0] hasFullStack | boolean | |
basicException [0] id |
string | |
basicException [0] method | string | |
basicException [0] message | string | Exception message. Max length 10k. |
basicException [0] outerExceptionMessage | string | |
basicException [0] outerExceptionThrownAtAssembly | string | |
basicException [0] outerExceptionThrownAtMethod | string | |
basicException [0] outerExceptionType | string | |
basicException [0] outerId | string | |
basicException [0] parsedStack [0] assembly | string | |
basicException [0] parsedStack [0] fileName | string | |
basicException [0] parsedStack [0] level | integer | |
basicException [0] parsedStack [0] line | integer | |
basicException [0] parsedStack [0] method | string | |
basicException [0] stack | string | Max length 10k |
basicException [0] typeName | string |
Sent by TrackTrace, and by the logging adapters.
Path | Type | Notes |
---|---|---|
message [0] loggerName | string | |
message [0] parameters | string | |
message [0] raw | string | The log message, max length 10k. |
message [0] severityLevel | string |
Sent by TrackDependency. Used to report performance and usage of calls to dependencies in the server, and AJAX calls in the browser.
Path | Type | Notes |
---|---|---|
remoteDependency [0] async | boolean | |
remoteDependency [0] baseName | string | |
remoteDependency [0] commandName | string | For example "home/index" |
remoteDependency [0] count | integer | 100/(sampling rate). For example 4 => 25%. |
remoteDependency [0] dependencyTypeName | string | HTTP, SQL, ... |
remoteDependency [0] durationMetric.value | number | Time from call to completion of response by dependency |
remoteDependency [0] id |
string | |
remoteDependency [0] name | string | Url. Max length 250. |
remoteDependency [0] resultCode | string | from HTTP dependency |
remoteDependency [0] success | boolean | |
remoteDependency [0] type | string | Http, Sql,... |
remoteDependency [0] url | string | Max length 2000 |
remoteDependency [0] urlData.base | string | Max length 2000 |
remoteDependency [0] urlData.hashTag | string | |
remoteDependency [0] urlData.host | string | Max length 200 |
Sent by TrackRequest. The standard modules use this to reports server response time, measured at the server.
Path | Type | Notes |
---|---|---|
request [0] count | integer | 100/(sampling rate). For example: 4 => 25%. |
request [0] durationMetric.value | number | Time from request arriving to response. 1e7 == 1s |
request [0] id |
string | Operation id |
request [0] name | string | GET/POST + url base. Max length 250 |
request [0] responseCode | integer | HTTP response sent to client |
request [0] success | boolean | Default == (responseCode < 400) |
request [0] url | string | Not including host |
request [0] urlData.base | string | |
request [0] urlData.hashTag | string | |
request [0] urlData.host | string |
Sent by the browser. Measures the time to process a page, from user initiating the request to display complete (excluding async AJAX calls).
Context values show client OS and browser version.
Path | Type | Notes |
---|---|---|
clientPerformance [0] clientProcess.value | integer | Time from end of receiving the HTML to displaying the page. |
clientPerformance [0] name | string | |
clientPerformance [0] networkConnection.value | integer | Time taken to establish a network connection. |
clientPerformance [0] receiveRequest.value | integer | Time from end of sending the request to receiving the HTML in reply. |
clientPerformance [0] sendRequest.value | integer | Time from taken to send the HTTP request. |
clientPerformance [0] total.value | integer | Time from starting to send the request to displaying the page. |
clientPerformance [0] url | string | URL of this request |
clientPerformance [0] urlData.base | string | |
clientPerformance [0] urlData.hashTag | string | |
clientPerformance [0] urlData.host | string | |
clientPerformance [0] urlData.protocol | string |
Sent by trackPageView() or stopTrackPage
Path | Type | Notes |
---|---|---|
view [0] count | integer | 100/(sampling rate). For example 4 => 25%. |
view [0] durationMetric.value | integer | Value optionally set in trackPageView() or by startTrackPage() - stopTrackPage(). Not the same as clientPerformance values. |
view [0] name | string | Page title. Max length 250 |
view [0] url | string | |
view [0] urlData.base | string | |
view [0] urlData.hashTag | string | |
view [0] urlData.host | string |
Reports availability web tests.
Path | Type | Notes |
---|---|---|
availability [0] availabilityMetric.name | string | availability |
availability [0] availabilityMetric.value | number | 1.0 or 0.0 |
availability [0] count | integer | 100/(sampling rate). For example 4 => 25%. |
availability [0] dataSizeMetric.name | string | |
availability [0] dataSizeMetric.value | integer | |
availability [0] durationMetric.name | string | |
availability [0] durationMetric.value | number | Duration of test. 1e7==1s |
availability [0] message | string | Failure diagnostic |
availability [0] result | string | Pass/Fail |
availability [0] runLocation | string | Geo source of http req |
availability [0] testName | string | |
availability [0] testRunId | string | |
availability [0] testTimestamp | string |
Generated by TrackMetric().
The metric value is found in context.custom.metrics[0]
For example:
{
"metric": [ ],
"context": {
...
"custom": {
"dimensions": [
{ "ProcessId": "4068" }
],
"metrics": [
{
"dispatchRate": {
"value": 0.001295,
"count": 1.0,
"min": 0.001295,
"max": 0.001295,
"stdDev": 0.0,
"sampledValue": 0.001295,
"sum": 0.001295
}
}
]
}
}
}
Metric values, both in metric reports and elsewhere, are reported with a standard object structure. For example:
"durationMetric": {
"name": "contoso.org",
"type": "Aggregation",
"value": 468.71603053650279,
"count": 1.0,
"min": 468.71603053650279,
"max": 468.71603053650279,
"stdDev": 0.0,
"sampledValue": 468.71603053650279
}
Currently - though this might change in the future - in all values reported from the standard SDK modules, count==1
and only the name
and value
fields are useful. The only case where they would be different would be if you write your own TrackMetric calls in which you set the other parameters.
The purpose of the other fields is to allow metrics to be aggregated in the SDK, to reduce traffic to the portal. For example, you could average several successive readings before sending each metric report. Then you would calculate the min, max, standard deviation and aggregate value (sum or average) and set count to the number of readings represented by the report.
In the tables above, we have omitted the rarely used fields count, min, max, stdDev, and sampledValue.
Instead of pre-aggregating metrics, you can use sampling if you need to reduce the volume of telemetry.
Except where otherwise noted, durations are represented in tenths of a microsecond, so that 10000000.0 means 1 second.