Возможности мониторинга плагина Astromkey для Android Gradle
С помощью следующих параметров конфигурации вы можете настроить возможности мониторинга OneAgent и точно настроить процесс автоинструментирования для этих функций.
Мониторинг действий пользователя
OneAgent создает действия пользователя на основе компонентов пользовательского интерфейса, которые инициируют эти действия, и автоматически объединяет данные о действиях пользователя с другими данными мониторинга, такими как информация о веб-запросах и сбоях. OneAgent продлевает время жизни действий пользователя, чтобы правильно объединять их с другими событиями, которые выполняются в фоновом потоке или сразу после действия пользователя.
Настроить мониторинг действий пользователя
Вы можете настроить мониторинг действий пользователя с помощью свойств timeout
и maxDuration
. Все свойства, связанные с мониторингом действий пользователя, являются частью UserAction DSL , поэтому настраивайте их с помощью userAction
блока .
dynatrace {
configurations {
sampleConfig {
userActions {
// your user action monitoring configuration
}
}
}
}
С помощью этого timeout
свойства вы можете настроить время, в течение которого OneAgent может добавлять другие события к вновь созданному действию пользователя. При обнаружении другого взаимодействия с пользователем OneAgent прекращает добавлять события к действию пользователя предыдущего взаимодействия, независимо от настроенного timeout
значения. Вместо этого OneAgent добавляет события только к действию пользователя из текущего взаимодействия с пользователем.
По timeout
истечении периода времени OneAgent проверяет, есть ли открытые события, и ждет завершения этих событий. С помощью maxDuration
свойства вы можете настроить максимальную продолжительность этих действий пользователя. Если открытое событие, например веб-запрос, все еще не завершено по истечении этого периода, OneAgent удаляет эти события из действия пользователя и закрывает действие пользователя с соответствующим значением времени окончания.
Укажите значение для обоих свойств в миллисекундах. Значение свойства maxDuration
должно быть равно или больше значения свойства timeout
.
Свойство | Значение по умолчанию | Возможные значения |
---|---|---|
timeout
|
500 | 100 – 5000 |
maxDuration
|
60000 | 100 – 540000 |
timeout
Для каждого свойства и можно настроить только одно значение maxDuration
, и эти значения должны соответствовать всем действиям пользователя на всех устройствах.
OneAgent также сообщает о действиях пользователя, которые не содержат дочерних событий. Чтобы отказаться от таких действий пользователя, используйте emptyActions
свойство.
Отключить мониторинг действий пользователя
Вы можете полностью отключить мониторинг действий пользователя с помощью enabled
свойства. В этом случае все остальные свойства игнорируются, поэтому enabled
во избежание путаницы укажите только свойство.
dynatrace {
configurations {
sampleConfig {
userActions.enabled false
}
}
}
Датчики контроля действий пользователя
Плагин автоматически обрабатывает следующие слушатели и методы:
- Андроид
android.view.View$OnClickListener
android.widget.AdapterView$OnItemClickListener
android.widget.AdapterView$OnItemSelectedListener
android.app.Activity.onOptionsItemSelected
android.view.MenuItem$OnMenuItemClickListener
- AndroidX
androidx.viewpager.widget.ViewPager$OnPageChangeListener
androidx.swiperefreshlayout.widget.SwipeRefreshLayout$OnRefreshListener
- Поддержка Android
android.support.v4.view.ViewPager$OnPageChangeListener
android.support.v4.widget.SwipeRefreshLayout$OnRefreshListener
Вы можете деактивировать определенные датчики через свойства DSL UserAction Sensor и настроить их внутри sensors
блока .
dynatrace {
configurations {
sampleConfig {
userActions {
sensors {
// fine-tune the sensors if necessary
}
}
}
}
}
Именование действий пользователя
Для создания имен действий пользователя OneAgent захватывает заголовок элемента управления из различных атрибутов в зависимости от используемого прослушивателя или метода. Подробнее см. в таблице ниже.
Слушатель или метод | Оцениваемый компонент |
---|---|
android.view.View$OnClickListener
|
Атрибуты оцениваются в следующем порядке:
|
android.app.Activity.onOptionsItemSelected
|
getTitle для пунктов меню
|
androidx.viewpager.widget.ViewPager$OnPageChangeListener
|
Тип действия используется в качестве имени действия, так как компонент пользовательского интерфейса недоступен. |
Маскировать действия пользователя
Плагин Dynatrace для Android Gradle версии 8.249+
По умолчанию имена действий пользователя получаются из заголовков элементов пользовательского интерфейса , например заголовков кнопок или пунктов меню. В редких случаях адреса электронной почты, имена пользователей или другая личная информация могут быть непреднамеренно включены в имена действий пользователя. Это происходит, когда эта информация включена в параметры, используемые для заголовков элементов управления, что приводит к именам действий пользователя, таким как Touch on Account 123456
.
Если такая личная информация появляется в именах действий пользователя вашего приложения, включите маскирование действий пользователя. OneAgent заменит все Touch on <control title>
имена действий именем класса элемента управления, к которому прикоснулся пользователь, например:
Touch on Account 123456
>Touch on Button
Touch on Transfer all amount
>Touch on Switch
Touch on Account settings
>Touch on ActionMenuItem
Вы можете включить маскирование действий пользователя с помощью namePrivacy
свойства UserAction DSL .
dynatrace {
configurations {
sampleConfig {
userActions {
namePrivacy true
}
}
}
}
Если вы хотите изменить имена только для определенных действий пользователя, используйте одну из следующих настроек:
- Измените автоматически сгенерированные действия , чтобы изменить имена действий пользователя.
- Установите правила именования (Настройки мобильного приложения > Правила именования ), чтобы настроить правила именования действий пользователя или правила извлечения.
Изменить действия пользователя
OneAgent для Android создает действия пользователя на основе взаимодействия пользователей вашего приложения. Эти действия отличаются от настраиваемых действий и иногда называются автоматически сгенерированными действиями . Мы также называем их действиями пользователя .
Вы можете изменить или даже отменить действия пользователя.
Если вы хотите избежать захвата личной информации для всех действий пользователя одновременно, см. раздел Маскирование действий пользователя .
Изменить конкретное действие пользователя
С помощью Dynatrace.modifyUserAction
вы можете изменить текущее действие пользователя. Вы можете изменить имя действия пользователя и сообщить о событиях, значениях и ошибках. Вы также можете отменить действие пользователя.
Метод Dynatrace.modifyUserAction
принимает реализацию в UserActionModifier
качестве параметра, который предоставляет вам текущий изменяемый ModifiableUserAction
объект.
Разрешенные операции над этим объектом действий пользователя:
getActionName
setActionName
reportEvent
reportValue
reportError
- OneAgent для Android версии 8.241+
cancel
Вы можете изменить действие пользователя, только пока оно еще открыто. Если время действия действия пользователя истекло до того, как оно было изменено, изменение не имеет никакого эффекта. Мы рекомендуем вызывать Dynatrace.modifyUserAction
внутри инструментированного метода прослушивателя и не вызывать этот метод из другого потока.
В следующем примере мы используем приложение-калькулятор, чтобы показать вам, как изменить имя действия пользователя, созданного для нажатия кнопки, и как передать значение действию.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int result = calc();
// we use Java 8 language features here. You can also use anonymous classes instead of lambdas
Dynatrace.modifyUserAction(userAction -> {
userAction.setActionName("Click on Calculate");
userAction.reportValue("Calculated result", result);
});
showResult(result);
}
});
Для пользовательского мобильного действия или мобильного действия пользователя, сгенерированного автоматически, максимальная длина имени составляет 250 символов.
Изменить любое действие пользователя
OneAgent для Android версии 8.241+
Вы можете изменить действия пользователя через Dynatrace.modifyUserAction
. Однако вы можете сделать это только для определенного действия пользователя, и обычно вы должны знать, открыто ли это действие пользователя или нет.
Чтобы преодолеть эти ограничения, мы представили функцию, которая позволяет вам получать обратный вызов для каждого вновь созданного действия пользователя. При таком подходе вы получаете уведомление о каждом новом автоматически сгенерированном действии пользователя, поэтому у вас есть возможность обновить имя действия пользователя, а также сообщить о событиях, значениях и ошибках. Вы также можете отменить действие пользователя.
Вы можете зарегистрировать обратный вызов, который вызывается для каждого действия пользователя. UserActionModifier
устанавливается один раз при запуске OneAgent с помощью DynatraceConfigurationBuilder#withAutoUserActionModifier
метода. После этого он вызывается каждый раз, когда OneAgent создает действие пользователя. Он не вызывается для пользовательских действий .
Вы можете зарегистрировать обратный вызов только при запуске OneAgent, поэтому вам нужно запускать OneAgent вручную .
Разрешены следующие операции:
getActionName
setName
reportEvent
reportValue
reportError
cancel
Dynatrace.startup(this, new DynatraceConfigurationBuilder("<YourApplicationID>", "<ProvidedBeaconUrl>")
.withAutoUserActionModifier(modifiableAction -> {
if (modifiableAction.getActionName().contains("account ID")) {
// remove personal information from the user action name
modifiableAction.setActionName("Touch on Account");
}
})
.buildConfiguration());
Для пользовательского мобильного действия или мобильного действия пользователя, сгенерированного автоматически, максимальная длина имени составляет 250 символов.
Библиотека привязки данных Android
Плагин Dynatrace для Android Gradle может управлять логикой событий и прослушивателями, которые определяются с помощью функции привязки данных . Если ваше приложение содержит код, аналогичный официальному примеру привязки прослушивателя , подключаемый модуль может определить правильный байт-код и обработать его.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="task" type="com.android.example.Task" />
<variable name="presenter" type="com.android.example.Presenter" />
</data>
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent">
<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
android:onClick="@{() -> presenter.onSaveClick(task)}" />
</LinearLayout>
</layout>
Определить обработчик событий через XML-атрибут
В следующем примере из документации Android показано, как можно определить обработчик событий с помощью XML-атрибутов.
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
/** Called when the user touches the button */
public void sendMessage(View view) {
// Do something in response to button click
}
Плагин Dynatrace для Android Gradle не может определить взаимосвязь между кнопкой в XML-файле макета и методом sendMessage
в действии. Однако, когда ваше приложение использует библиотеку Appcompat и ваши действия получены из androidx.appcompat.app.AppCompatActivity
, подключаемый модуль автоматически использует логику делегирования библиотеки Appcompat. Если вы не используете библиотеку Appcompat, вы должны вручную настроить эти методы обработчика событий, поскольку подключаемый модуль не может определить связь между байт-кодом и XML-файлом макета.
Мониторинг веб-запросов
Плагин Dynatrace для Android Gradle может автоматически обрабатывать и помечать ваши веб-запросы. Для отслеживания веб-запросов OneAgent добавляет x-dynatrace
в веб-запрос заголовок HTTP с уникальным значением. Это необходимо для сопоставления данных мониторинга на стороне сервера с соответствующим мобильным веб-запросом.
Для HTTP(S)-запросов нельзя комбинировать автоматическое и ручное инструментирование веб-запросов. Однако вы можете использовать автоматическое инструментирование для HTTP(S)-запросов и ручное инструментирование для не-HTTP(S)-запросов, таких как запросы WebSocket или gRPC.
Настроить мониторинг веб-запросов
Все свойства, связанные с мониторингом веб-запросов, являются частью WebRequest DSL , поэтому настройте эти свойства с помощью webRequests
блока .
dynatrace {
configurations {
sampleConfig {
webRequests {
// your web request monitoring configuration
}
}
}
}
Если веб-запрос инициируется вскоре после отслеживаемого взаимодействия с пользователем, OneAgent добавляет веб-запрос в качестве дочернего события к отслеживаемому действию пользователя. OneAgent автоматически усекает запрос из захваченного URL-адреса и сообщает только имя домена и путь ваших веб-запросов.
Отключить мониторинг веб-запросов
Вы можете полностью отключить мониторинг веб-запросов с помощью этого enabled
свойства. В этом случае все остальные свойства игнорируются, поэтому enabled
во избежание путаницы укажите только свойство.
dynatrace {
configurations {
sampleConfig {
webRequests.enabled false
}
}
}
Датчики мониторинга веб-запросов
Поддерживаются следующие платформы HTTP:
- HttpURLConnection
- OkHttp : только версии 3 и 4
- HTTP-клиент Apache: только встроенный в Android HTTP-клиент версии 1.
1
В Android устарела клиентская библиотека Apache HTTP (см. раздел Изменения в Android 6.0 и Изменения в Android 9.0 ), поэтому используйте другую структуру HTTP. Новый HTTP-клиент Apache версии 5 не поддерживается. Поддерживаются старые версии HTTP-клиента Apache, поскольку они предоставляют тот же интерфейс.
Если ваша библиотека веб-запросов основана на одной из этих поддерживаемых платформ, внутренние классы библиотеки инструментируются автоматически. Например, Retrofit версии 2 основан на OkHttp, поэтому все веб-запросы Retrofit обрабатываются автоматически.
Вы можете деактивировать определенные сенсоры через свойства WebRequest Sensor DSL и настроить их внутри sensors
блока .
dynatrace {
configurations {
sampleConfig {
webRequests {
sensors {
// fine-tune the sensors if necessary
}
}
}
}
}
Мониторинг жизненного цикла
При мониторинге жизненного цикла OneAgent собирает следующие данные:
- Событие запуска приложения : измеряет промежуток времени от
Application.onCreate()
доActivity.onPostResume()
первого действия. Событие запуска приложения не фиксируется, если приложение запускается в фоновом режиме и не сразу открывает действие или если автоматическое внедрение отключено . - Отображение активности : измеряет временной интервал от
Activity.onCreate(Bundle)
доActivity.onPostResume()
и сообщает время каждого введенного состояния жизненного цикла активности. - Повторное отображение действия : измеряет время, необходимое для повторного отображения ранее созданного действия, и сообщает время каждого состояния жизненного цикла действия, которое было введено до тех пор, пока действие снова не станет видимым.
Настройка мониторинга жизненного цикла
События жизненного цикла либо являются частью существующих действий пользователя, либо создают новое действие пользователя и присоединяют к нему действие жизненного цикла отображения или повторного отображения. Все свойства, связанные с мониторингом жизненного цикла, являются частью Lifecycle DSL , поэтому настраивайте их с помощью lifecycle
блока .
dynatrace {
configurations {
sampleConfig {
lifecycle {
// your lifecycle monitoring configuration
}
}
}
}
Отключить мониторинг жизненного цикла
Вы можете отключить мониторинг жизненного цикла с помощью enabled
свойства. В этом случае все остальные свойства игнорируются, поэтому укажите только свойство enabled
.
dynatrace {
configurations {
sampleConfig {
lifecycle.enabled false
}
}
}
Датчики мониторинга жизненного цикла
Вы можете деактивировать определенные датчики через свойства DSL Lifecycle Sensor и настроить их внутри sensors
блока .
dynatrace {
configurations {
sampleConfig {
lifecycle {
sensors {
// fine-tune the sensors if necessary
}
}
}
}
}
Отчеты о сбоях
OneAgent фиксирует все необработанные исключения и ошибки и немедленно отправляет отчет о сбое на сервер. Отчет о сбое Android включает время возникновения и полную трассировку стека исключения.
Если сбой происходит вскоре после отслеживаемого взаимодействия с пользователем, OneAgent добавляет сбой как дочернее событие к отслеживаемому действию пользователя.
Вы можете отключить отчеты о сбоях с помощью crashReporting
свойства.
dynatrace {
configurations {
sampleConfig {
crashReporting false
}
}
}
Обнаружение ярости
Плагин Dynatrace для Android Gradle версии 8.231+
Когда ваше мобильное приложение не отвечает быстро, текстовая метка выглядит как кнопка или переключатель скрыт под другим переключателем, пользователи могут многократно касаться экрана или затронутого элемента управления пользовательского интерфейса в беспомощном разочаровании. OneAgent определяет такое поведение как ярость.
OneAgent может отслеживать только те события сенсорного экрана, которые обрабатываются компонентом Activity
. Например, OneAgent не может отслеживать компоненты пользовательского интерфейса Android, которые имеют собственную логику обработки сенсорного экрана Dialog
и DreamService
.
Вы можете деактивировать обнаружение касания ярости, используя detectRageTaps
свойство BehavioralEvents DSL .
dynatrace {
configurations {
sampleConfig {
behavioralEvents {
detectRageTaps false
}
}
}
}
Мониторинг местоположения
Если этот параметр включен, OneAgent добавляет захваченные позиции конечных пользователей к данным мониторинга. Чтобы защитить конфиденциальность конечного пользователя, OneAgent фиксирует только три дробных цифры GPS-координат.
Вы можете активировать функцию мониторинга местоположения с помощью locationMonitoring
свойства.
dynatrace {
configurations {
sampleConfig {
locationMonitoring true
}
}
}
OneAgent собирает только те данные о местоположении, которые уже обработаны в вашем приложении. OneAgent не запрашивает дополнительные данные о местоположении из Android SDK. Если ваше приложение не обрабатывает данные о местоположении, эта функция не включена. Когда мониторинг местоположения отключен или информация о местоположении недоступна, Dynatrace использует IP-адреса для определения местоположения пользователя.
Плагин поддерживает следующий прослушиватель местоположения:
android.location.LocationListener