Default Metrics

Overview

io.Insights publishes a wide array of default metrics that provide information about the system, platform and app performance, as well as data related to loading Workspaces and Global Layouts. It's possible to enable or disable all default metrics, and also to provide custom settings for each default metric individually.

ℹ️ For details on configuring the default metrics in io.Connect Desktop and io.Connect Browser, see the Configuration section.

Default Metrics

⚠️ Note that some of the metrics aren't supported in io.Connect Browser due to limitations of modern browsers.

The following example demonstrates the basic structure of a metrics payload:

{
    "resourceMetrics": [
        {
            "resource": {
                "attributes": [
                    // Attributes describing the resource publishing the metrics -
                    // e.g., `"service.name"`, `"service.instance.id"`, and other standard OpenTelemetry attributes.
                ]
            },
            "scopeMetrics": [
                {
                    "scope": {
                        "name": "io.Connect Desktop",
                        "version": ""
                    },
                    "metrics": [
                        // List of objects describing the published metrics.
                    ]
                }
            ]
        }
    ]
}

The following is an example metrics object in the "metrics" array. The example uses the "app_startup" metric:

{
    "metrics": [
        {
            "name": "app_startup",
            "description": "Time to load an application",
            "unit": "ms",
            // Type of the metrics point - e.g., `"sum"`, `"gauge"`, `"histogram"`.
            "histogram": {
                "aggregationTemporality": 2,
                // Metric data points.
                "dataPoints": [
                    {
                        // Metrics attributes.
                        "attributes": [
                            {
                                "key": "api",
                                "value": {
                                    "stringValue": "6.6.0"
                                }
                            },
                            {
                                "key": "user",
                                "value": {
                                    "stringValue": "user_42"
                                }
                            },
                            {
                                "key": "platformVersion",
                                "value": {
                                    "stringValue": "9.4.0.34"
                                }
                            },
                            {
                                "key": "application",
                                "value": {
                                    "stringValue": "my-app"
                                }
                            }
                        ],
                        "bucketCounts": [
                            0,
                            1,
                            0,
                            0,
                            0,
                            0
                        ],
                        "explicitBounds": [
                            100,
                            1000,
                            10000,
                            30000,
                            60000
                        ],
                        "count": 1,
                        "sum": 483,
                        "min": 483,
                        "max": 483,
                        "startTimeUnixNano": "1723555102580000000",
                        "timeUnixNano": "1723556246869000000"
                    }
                ]
            }
        }
    ]
}

All metrics payloads have the following attributes at the "resource" level:

Attribute Description
"service.instance.id" The instance ID of the platform (e.g., "7tNTxtrmRLp0Q3B8n36C").
"service.name" The name of the platform (e.g., "io.Connect Desktop").

All metrics data points have the following attributes:

Attribute Description
"platformVersion" The version of the platform (e.g., "9.4.0.28").
"user" The name of the user as registered in the platform (e.g., "user_42").

The following sections describe all default metrics, the type of Instrument used for their implementation, and any additional attributes they may have in their data points.

System

The following table lists the available metrics related to system performance:

Metric Instrument Type Unit Description
"system_cpu" Gauge percent The current and average system CPU and average platform CPU usage. Not supported in io.Connect Browser.
"system_memory" Gauge gigabytes The free system memory, used system memory, and used platform memory. Not supported in io.Connect Browser.

The "system_cpu" metric has the following additional attributes:

Attribute Description
"type" Determines whether the metric value reflects the current system CPU usage, the average system CPU usage, or the average platform CPU usage. Possible values for this attribute are "current_system_cpu", "average_system_cpu" and "average_platform_cpu".

The "system_memory" metric has the following additional attributes:

Attribute Description
"type" Determines whether the metric value reflects the free system memory, the used system memory, or the used platform memory. Possible values for this attribute are "free_system_memory", "used_system_memory" and "used_platform_memory".

Platform

The following table lists the available metrics related to platform performance:

Metric Instrument Type Unit Description
"platform_error" Counter number The number of times a platform error was received during each platform session.
"platform_startup" Gauge milliseconds The time it took to load the io.Connect platform. This is the time from initiating the platform process until the shell app (for io.Connect Desktop) or the Main app (for io.Connect Browser) has been fully loaded.

The "platform_startup" metric has the following additional attributes:

Attribute Description
"api" Version string of the @interopio/desktop or the @interopio/browser-platform library depending on whether the metric was published by the io.Connect Desktop or the io.Connect Browser platform.

Apps

The following table lists the available metrics related to app performance:

Metric Instrument Type Unit Description
"app_count" UpDownCounter number The number of app instances during each platform session.
"app_cpu" Gauge percent The average percentage of CPU used for the last measured interval. Not supported in io.Connect Browser.
"app_crash" Counter number The number of times an app crashed during each platform session. This metric is published only for web apps. Not supported in io.Connect Browser.
"app_duration" Histogram milliseconds The time an app has been on focus during each platform session.
"app_error" Counter number The number of times an app error was received during each platform session. This metric reports only errors received in the handlers for the "error" and "unhandledrejection" events in web apps.
"app_memory" Gauge kilobytes The current app memory usage. Not supported in io.Connect Browser.
"app_started" Counter number The number of times an app has been started during each platform session.
"app_startup" Histogram milliseconds The time it took to load an app. An app is considered loaded when the io.Connect API in it has been initialized.
"app_stopped" Counter number The number of times an app has been stopped during each platform session.

The "app_count" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_count" metric was published.

The "app_cpu" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_cpu" metric was published.
"applicationInstance" The unique ID of the app instance within the io.Connect framework.

The "app_crash" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_crash" metric was published.
"reason" Describes the reason for the app crash.

The "app_duration" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_duration" metric was published.

The "app_error" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_error" metric was published.

The "app_memory" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_memory" metric was published.
"applicationInstance" The unique ID of the app instance within the io.Connect framework.

The "app_started" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_started" metric was published.

The "app_startup" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_startup" metric was published.
"api" Version string of the @interopio/desktop or the @interopio/browser library depending on whether the app is running within the io.Connect Desktop or the io.Connect Browser platform.

The "app_stopped" metric has the following additional attributes:

Attribute Description
"application" The name of the app within the io.Connect framework for which the "app_stopped" metric was published.

Workspaces

The following table lists the available metrics related to Workspaces performance:

Metric Instrument Type Unit Description
"workspace_count" UpDownCounter number The number of Workspaces running during each platform session.
"workspace_startup" Histogram milliseconds The time it took to load a Workspace. This is the time from initiating the Workspace creation until all visible apps in it have been loaded. For web apps, this means that the DOMContentLoaded event has been triggered; for native apps (only in io.Connect Desktop), this means that the app has completed its window registration in the io.Connect framework. The "workspace_startup" metric doesn't measure the time for loading the Workspaces App itself, only the time for loading the actual Workspace in it when the Workspaces App is already running.
"workspace_stopped" Counter number The number of times a Workspace has been stopped during each platform session.

All metrics related to Workspaces have the following additional attributes:

Attribute Description
"layout" The name of the Workspace for which the respective metric was published.

Layouts

The following table lists the available metrics related to Global Layouts performance:

Metric Instrument Type Unit Description
"layout_startup" Histogram milliseconds The time it took to load a Global Layout. This it the time from initiating loading the Global Layout until all its components (individual windows, window groups, Workspaces) have been loaded.

The "layout_startup" metric has the following additional attributes:

Attribute Description
"layout" The name of the Global Layout for which the "layout_startup" metric was published.