EUM Android агент Proto Observability
На этой странице:
Подключение и инициализация агента и модулей Proto Observability
Для подключения агента используется SDK для автоматической инструментации (POBP Android SDK).
В файле build.gradle.kts
добавьте репозиторий:
repositories {
mavenCentral()
maven {
url = uri("https://repo.proto.group/repository/maven-releases/")
credentials {
username = "customer-name" // получите реквизиты доступа от Proto
password = "your-password" // получите реквизиты доступа от Proto
}
}
}
В файле build.gradle
в корне проекта добавьте репозиторий в разделе subprojects:
subprojects {
repositories {
google()
mavenCentral()
maven {
url = uri("https://repo.proto.group/repository/maven-releases/")
credentials {
username = "customer-name" // получите реквизиты доступа от Proto
password = "your-password" // получите реквизиты доступа от Proto
}
}
}
}
В файле build.gradle
в папке проекта добавьте Android SDK в разделе dependencies
dependencies {
// POBP RUM SDK Android - обязательный модуль
implementation "ru.proto_group:pobp-sdk-android:1.15.4"
// Если используется Android Compose
implementation "ru.proto_group:pobp-sdk-android-compose:1.15.4"
// Если используется Glide
implementation "ru.proto_group:pobp-sdk-android-glide:1.15.4"
}
Инициализируйте SDK и сделайте необходимые import:
class SampleApplication : Application() {
override fun onCreate() {
super.onCreate()
// POBP RUM start
val pobpAppname = "My Android App" // название приложения для отображения в интерфейсе
// список доменов для трейсинга - к запросам на эти домены будут добавляться заголовки для трейсинга
val pobpTracedHosts = listOf(
"www.your-site.ru",
"api.your-site.ru"
)
// адрес для приема данных от RUM - данные должны проксироваться на https://proto-backend-server/mobile
val pobpEndpoint = "https://your-site.ru/mobile"
val configuration = Configuration.Builder(
rumEnabled = true, // обязательно true
tracesEnabled = true, // обязательно true
logsEnabled = false, // обязательно false
crashReportsEnabled = false // обязательно false
)
.sampleRumSessions(100F) // 100F - все пользователи, 10F - 10% пользовательских сессиий
.sampleTelemetry(0F) // обязательно указать 0F
.setFirstPartyHosts(pobpTracedHosts)
.trackLongTasks(10000) // обязательно
.useCustomRumEndpoint(pobpEndpoint)
.useCustomTracesEndpoint(pobpEndpoint)
.build()
val credentials = Credentials(
clientToken = "1", // обязательно 1
envName = "prod", // окружение, поддержка этого тега в интерфейсе появится позднее
variant = NO_VARIANT , // обязательно
rumApplicationId = pobpAppname, // обязательно
serviceName = pobpAppname // обязательно
)
Pobp.initialize(this, credentials, configuration, TrackingConsent.GRANTED) // обязательно
// добавление данных о текущем пользователе - опционально
Pobp.setUserInfo(
id = "1234", // строка, опционально
name = "Василий Пупкин", // строка, опционально
email = "vass@pupkine.com" // строка, опционально
)
val monitor = RumMonitor.Builder().build()
GlobalRum.registerIfAbsent(monitor)
// RUM end
}
}
Трейсинг запросов okhttp
Необходимо добавить interceptor, если у вас уже есть другие interceptor, то необходимо добавить PobpInterceptor самым первым.
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(PobpInterceptor())
.eventListenerFactory(PobpEventListener.Factory())
.build()
Трейсинг запросов retrofit
Если вы используете Retrofit, позвольте ему использовать ваш OkHttpClient, и вы сможете получать информацию о сетевых запросах, сделанных с помощью Retrofit.
val retrofitClient = Retrofit.Builder()
.client(okHttpClient)
// …
.build()
Трейсинг запросов glide
Подключите модуль Pobp для Glide в файле build.gradle
.
Следуя документации Glide, вам нужно создать свой собственный модуль GlideAppModule с интеграцией Pobp путем расширения модуля PobpGlideModule, как показано ниже. Это позволит автоматически отслеживать сетевые запросы Glide, а также собирать ошибки дискового кэша и преобразования изображений (создавая события RUM Error).
Трейсы сетевых запросов собираются с применение настраиваемого сэмплирования. По умолчанию применяется сэмплирование на уровне 20%.
// список доменов для трейсинга - к запросам на эти домены будут добавляться заголовки для трейсинга
val pobpTracedHosts = listOf(
"www.your-site.ru",
"api.your-site.ru"
)
@GlideModule
class CustomGlideModule :
PobpGlideModule(
pobpTracedHosts, traceSamplingRate = 20f
)
Сквозная трассировка запросов от Android приложения
Трейсы транзакции от Android к инструментированным бэкендам, то есть бэкендам, на которых установлены агенты Proto OBP, будут объединяться в единую цепочку вызовов - трейс распределенной транзакции, начавшейся на Android устройстве.