MetricKit (iOS 14 и выше)

MetricKit – это мощный инструмент для мониторинга и диагностики производительности и стабильности iOS приложений. Он предоставляет разработчикам возможность отслеживать важные метрики, такие как зависания интерфейса, нагрузка на процессор, время запуска, активность диска и крэши. Минимальная версия iOS для подключения MetricKit – iOS 14.

Поддерживаемые виды диагностики

  • Hang - зависания UI.
  • CPU - высокая нагрузка на процессор.
  • Launch - долгий запуск приложения.
  • Disk - высокая активность записи на диск.
  • Crash - крэши приложения.

MetricKit выделяет отдельный тип METRIC_KIT в общем списке сбоев. Для фильтрации различных диагностик в списке можно использовать специальный ключ MetricKitType. Доступные значения:

Значение ключаОписание
MXHangФильтрация зависаний UI.
MXCPUФильтрация диагностики нагрузки на процессор.
MXDiskФильтрация диагностики активности записи на диск.
MXCrashФильтрация крэшей.
MXLaunchФильтрация диагностики длительного запуска.
MXWatchdogФильтрация крэшей, связанных с вотчдогами (при включённой настройке separateWatchdogs).
MXDeadlockФильтрация крэшей, связанных с дедлоками (при включённой настройке separateDeadlocks).

ВАЖНО! В отчётах MetricKit не имеет смысла обращаться к полям логов, данным и ключам. Диагностика может происходить в любой момент и сразу же отправляется, загружая все текущие properties и tags, установленные в SDK. Единственные поля, на которые стоит обращать внимание в отчётах MetricKit: versionName, versionCode, message и MetricKitType.

Подключение MetricKit

Для интеграции MetricKit в ваше приложение необходимо передать новый тип .metricKit с конфигурацией TracerMetricKitConfiguration в FeatureConfiguration в вашей конфигурации Configuration.

import OKTracer let metricKitConfiguration = TracerMetricKitConfiguration() // настройка опций metricKitConfiguration let configuration = Configuration( token: "your_token", features: [ .metricKit(metricKitConfiguration) ] )

Описание TracerMetricKitConfiguration

Конфигурация TracerMetricKitConfiguration позволяет гибко настроить сбор различных метрик и событий. Рассмотрим методы настройки подробнее.

ПараметрОписание
hangsEnabled: Bool = trueВключение/выключение диагностики зависаний UI (по умолчанию true)
hangsDuration: TimeInterval = 0Минимальная длительность зависания для отправки (по умолчанию 0).
hangFreeSessions: Bool = falseВключение/выключение подсчета сессий без зависаний (по умолчанию false).
cpuEnabled: Bool = trueВключение/выключение диагностики нагрузки на процессор (по умолчанию true).
diskEnabled: Bool = trueВключение/выключение диагностики активности записи на диск (по умолчанию true)
launchEnabled: Bool = trueВключение/выключение диагностики длительного запуска приложения (по умолчанию true).
crashEnabled: Bool = trueВключение/выключение диагностики крэшей (по умолчанию true).
separateWatchdogs: Bool = falseОтделение крэшей, связанных с вотчдогами, от остальных крэшей (по умолчанию false)
separateDeadlocks: Bool = falseОтделение крэшей, связанных с дедлоками, от остальных крэшей (по умолчанию false).

В конфигурации есть конструктор без параметров TracerMetricKitConfiguration(), который инициализирует все параметры по умолчанию.

В TracerMetricKitConfiguration также есть некоторые опции, которые позволяют настраивать различные типы диагностики.

withHangs(enabled:duration:hangFreeSessions:)

Позволяет настроить диагностику зависаний (Hang).

ПараметрОписание
enabled: BoolВключает/выключает диагностику зависаний (по умолчанию true).
duration: TimeIntervallМинимальная длительность зависания в секундах. Зависания, длительностью менее указанного значения, не будут отправляться (по умолчанию 0).
hangFreeSessions: BoolВключает/выключает подсчёт сессий без зависаний. Если включено, можно использовать метод lastSessionHangsCount() в TracerServiceProtocol для получения количества зависаний за предыдущую сессию (по умолчанию false).

Пример использования:

let metricKitConfig = TracerMetricKitConfiguration() .withHangs(enabled: true, duration: 2.0, hangFreeSessions: true)

with(cpuEnabled:diskEnabled:launchEnabled:)

Позволяет настроить диагностики для CPU, диска и запуска приложения.

ПараметрОписание
cpuEnabled: BoolВключает/выключает диагностику нагрузки на процессор (по умолчанию true).
diskEnabled: BoolВключает/выключает диагностику активности записи на диск (по умолчанию true)
launchEnabled: BoolВключает/выключает диагностику длительного запуска приложения (по умолчанию true).

Пример использования:

let metricKitConfig = TracerMetricKitConfiguration() .with(cpuEnabled: true, diskEnabled: true, launchEnabled: true)

withCrashes(enabled:separateWatchdogs:separateDeadlocks:)

Позволяет настроить диагностику крэшей (Crash).

ПараметрОписание
crashEnabled: BoolВключает/выключает диагностику крэшей (по умолчанию true).
separateWatchdogs: BoolОтделяет крэши, связанные с вотчдогами, от остальных крэшей при фильтрации (по умолчанию false).
separateDeadlocks: BoolОтделяет крэши, связанные с дедлоками, от остальных крэшей при фильтрации (по умолчанию false).

Пример использования:

let metricKitConfig = TracerMetricKitConfiguration() .withCrashes(enabled: true, separateWatchdogs: true, separateDeadlocks: true)