Как отслеживать клики пользователей с помощью APM React
Я использую ElasticSearch APM RUM в приложении React .
Теперь я уже интегрировал APM в маршрутизатор, так что я могу видеть
route-change
сделки в Кибане .
Теперь я хочу отслеживать нажатия пользователей на определенную кнопку , например, чтобы увидеть, сколько пользователей нажимают на нее. (В документации APM React я вижу только то, как отслеживать компонент , но здесь мне нужно отслеживать щелчок .)
Мои вопросы:
- Нужно ли мне для этого создавать транзакцию или интервал ?
- Как я могу создать эту транзакцию / интервал вручную, не упаковывая для этого компонент?
Этот вопрос помогает, но не отвечает на мой вопрос, потому что, согласно документам :
Однако, чтобы избежать отправки на сервер слишком большого количества транзакций взаимодействия с пользователем, агент отбрасывает транзакции без промежутков (например, отсутствие сетевой активности).
И мой случай - это щелчок, который меняет пользовательский интерфейс.
1 ответ
Прежде всего, я думаю , вам нужно создать Сделку для этого, потому что сделка является «поток» от пользователя. Если вы хотите отслеживать его как Span , вам нужно находиться внутри активной транзакции , а у вас ее нет *.
Теперь, согласно этому документу , вам нужно создать настраиваемую транзакцию, а затем закрыть ее.
Например:
const click = () => {
const transaction = apm.startTransaction('UserClicked', 'custom')
transaction.addLabels({ buttonText })
originalClickAction()
transaction.end()
}
Теперь вы можете использовать его со своим JSX,
<Button text={buttonText} click={click} />
Лично я предпочитаю создавать обертку для любого кода:
export const monitor = (eventName, action, labels) => {
const transaction = apm.startTransaction(eventName, 'custom')
if (labels) transaction.addLabels(labels)
return Promise.resolve(action(transaction))
.finally(() => transaction.end())
}
// Usage
const click = () => monitor('UserClicked', originalClickAction, { buttonText })
* Если вы хотите сказать, что находитесь в
page-load
/ транзакция, вы не можете. Потому что пользователь может подождать некоторое время, глядя на страницу, прежде чем щелкнуть по ней. Собственно, это можно назвать
route-change
потому что это не так.