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 с конфигурацией TracerMetricKitConfiguration в FeatureConfiguration в вашей конфигурации Configuration.
import OKTracer let metricKitConfiguration = TracerMetricKitConfiguration() // настройка опций metricKitConfiguration let configuration = Configuration( token: "your_token", features: [ .metricKit(metricKitConfiguration) ] )
Конфигурация TracerMetricKitConfiguration позволяет гибко настроить сбор различных метрик и событий. Рассмотрим методы настройки подробнее.
| Параметр | Тип | Описание |
|---|---|---|
hangsEnabled | Bool | Включение/выключение диагностики зависаний UI (по умолчанию true). |
hangsDuration | TimeInterval | Минимальная длительность зависания для отправки (по умолчанию 0). |
hangFreeSessions | Bool | Включение/выключение подсчета сессий без зависаний (по умолчанию false). |
cpuEnabled | Bool | Включение/выключение диагностики нагрузки на процессор (по умолчанию true). |
diskEnabled | Bool | Включение/выключение диагностики активности записи на диск (по умолчанию true). |
launchEnabled | Bool | Включение/выключение диагностики длительного запуска приложения (по умолчанию true). |
crashEnabled | Bool | Включение/выключение диагностики крэшей (по умолчанию true). |
separateWatchdogs | Bool | Отделение крэшей, связанных с вотчдогами, от остальных крэшей (по умолчанию false). |
separateDeadlocks | Bool | Отделение крэшей, связанных с дедлоками, от остальных крэшей (по умолчанию false). |
В конфигурации есть конструктор без параметров TracerMetricKitConfiguration(), который инициализирует все параметры по умолчанию.
В TracerMetricKitConfiguration также есть некоторые опции, которые позволяют настраивать различные типы диагностики.
Позволяет настроить диагностику зависаний (Hang).
| Параметр | Тип | Описание |
|---|---|---|
enabled | Bool | Включает/выключает диагностику зависаний (по умолчанию true). |
duration | TimeInterval | Минимальная длительность зависания в секундах. Зависания, длительностью менее указанного значения, не будут отправляться (по умолчанию 0). |
hangFreeSessions | Bool | Включает/выключает подсчёт сессий без зависаний. Если включено, можно использовать метод lastSessionHangsCount() в TracerServiceProtocol для получения количества зависаний за предыдущую сессию (по умолчанию false). |
Пример использования:
let metricKitConfig = TracerMetricKitConfiguration() .withHangs(enabled: true, duration: 2.0, hangFreeSessions: true)
Позволяет настроить диагностики для CPU, диска и запуска приложения.
| Параметр | Тип | Описание |
|---|---|---|
cpuEnabled | Bool | Включает/выключает диагностику нагрузки на процессор (по умолчанию true). |
diskEnabled | Bool | Включает/выключает диагностику активности записи на диск (по умолчанию true). |
launchEnabled | Bool | Включает/выключает диагностику длительного запуска приложения (по умолчанию true). |
Пример использования:
let metricKitConfig = TracerMetricKitConfiguration() .with(cpuEnabled: true, diskEnabled: true, launchEnabled: true)
Позволяет настроить диагностику крэшей (Crash).
| Параметр | Тип | Описание |
|---|---|---|
crashEnabled | Bool | Включает/выключает диагностику крэшей (по умолчанию true). |
separateWatchdogs | Bool | Отделяет крэши, связанные с вотчдогами, от остальных крэшей при фильтрации (по умолчанию false). |
separateDeadlocks | Bool | Отделяет крэши, связанные с дедлоками, от остальных крэшей при фильтрации (по умолчанию false). |
Пример использования:
let metricKitConfig = TracerMetricKitConfiguration() .withCrashes(enabled: true, separateWatchdogs: true, separateDeadlocks: true)