Skip to content

Latest commit

 

History

History
353 lines (315 loc) · 14.5 KB

export-data-model.md

File metadata and controls

353 lines (315 loc) · 14.5 KB
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

Application Insights Export Data Model

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

Example

// 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
    }
  }
}

Context

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

Events

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

Exceptions

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

Trace Messages

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

Remote dependency

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

Requests

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

Page View Performance

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

Page Views

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

Availability

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

Metrics

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
          }
        }
      ]  
    }
  }
}

About metric values

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.

Durations

Except where otherwise noted, durations are represented in tenths of a microsecond, so that 10000000.0 means 1 second.

See also