Настройка безагентного мониторинга реальных пользователей¶
Безагентный мониторинг реальных пользователей (Real User Monitoring) предназначен для случаев, когда у вас нет доступа к веб-серверу (и, следовательно, нет возможности установить OneAgent), но есть доступ к коду приложения.
Все преимущества мониторинга реальных пользователей можно получить только после установки Dynatrace OneAgent. Подробнее см. Рекомендуется установка OneAgent.
Предварительные требования¶
Вот что потребуется для настройки безагентного мониторинга реальных пользователей:
- Доступ к HTML-исходному коду вашего приложения для вставки RUM JavaScript
- RUM JavaScript -- пользовательский тег, код или сниппет JavaScript, сгенерированный Dynatrace
Настройка безагентного мониторинга¶
Выполните следующие действия для настройки безагентного мониторинга.
[
Создайте приложение и вставьте RUM JavaScript](set-up-agentless-real-user-monitoring.md#saas-create-app-add-code "Настройка безагентного мониторинга для ваших веб-приложений.")[
Выберите другой формат сниппета RUM JavaScript](set-up-agentless-real-user-monitoring.md#saas-choose-insertion-format "Настройка безагентного мониторинга для ваших веб-приложений.")[
Поддерживайте RUM JavaScript в актуальном состоянии](set-up-agentless-real-user-monitoring.md#saas-keep-code-updated "Настройка безагентного мониторинга для ваших веб-приложений.")
Шаг 1. Создайте приложение и вставьте RUM JavaScript¶
- В Dynatrace Hub выберите Web application monitoring via manual insertion.
-
Выберите Set up.
-
Введите имя вашего приложения и выберите Add web application. Для вашего приложения будет сгенерирован пользовательский сниппет кода JavaScript.
- Выберите Copy code snippet, чтобы скопировать сгенерированный код JavaScript в буфер обмена. Код, сгенерированный после создания приложения, имеет формат JavaScript tag.
Dynatrace предлагает несколько форматов сниппетов RUM JavaScript. Если вы рассматриваете использование другого формата сниппета, обратитесь к следующему шагу за рекомендациями.
5. Вставьте сниппет кода JavaScript в элемент <head> всех HTML-страниц, которые вы хотите мониторить в вашем приложении. Убедитесь, что RUM JavaScript является первым исполняемым скриптом на каждой странице.
Для многих веб-сайтов можно добавить пользовательский JavaScript на все страницы одновременно, вставив код для повторного использования в централизованный файл header.html. Если возможно, используйте этот файл для вставки RUM JavaScript, чтобы избежать лишней работы.
Следующий пример показывает код простой страницы до и после вставки RUM JavaScript.
До вставки
После вставки
<html>
<head>
<title>MyApp</title>
<script type="text/javascript" src="myapp.js"></script>
</head>
<body>
<form>
Username: <input type="text name="username"/><br/>
Password: <input type="password" name="password"/><br/>
<input type="submit" value="Login">
</form>
<html>
<head>
<title>MyApp</title>
<script type="text/javascript" src="https://js-cdn.dynatrace.com/jstag/145e12d594f/cg36988wxq/477g8ec68708x5c1_complete.js" crossorigin="anonymous"></script>
<script type="text/javascript" src="myapp.js"></script>
</head>
<body>
<form>
Username: <input type="text name="username"/><br/>
Password: <input type="password" name="password"/><br/>
<input type="submit" value="Login">
</form>
Если у вас уже есть приложение, настроенное для безагентного мониторинга, выберите Applications currently set up for agentless monitoring на шаге 3 приведённых выше инструкций вместо ввода имени приложения. Вы сможете просмотреть список приложений, уже настроенных для безагентного мониторинга, и соответствующие теги, коды или сниппеты JavaScript. Это полезно, если вы уже добавили RUM JavaScript на некоторые страницы и хотите расширить видимость мониторинга на другие страницы.
Шаг 2 (необязательно). Выберите другой формат сниппета RUM JavaScript¶
Хотя формат JavaScript tag является идеальным выбором для большинства случаев использования, Dynatrace предлагает несколько форматов сниппетов RUM JavaScript для удовлетворения различных требований. Выберите формат, который лучше всего подходит для вашего приложения и соответствует вашим требованиям. Подробное описание всех форматов см. в разделе Выбор формата сниппета.
Чтобы получить другой формат сниппета RUM JavaScript:
- Перейдите в Web.
- Выберите приложение, которое хотите настроить.
- В правом верхнем углу страницы обзора приложения выберите More (...) > Edit.
- В настройках приложения выберите Injection > Manual insertion.
- Выберите нужный формат сниппета, затем выберите Copy, чтобы скопировать его в буфер обмена.
Шаг 3. Поддерживайте RUM JavaScript в актуальном состоянии¶
Если вы хотите, чтобы RUM JavaScript обновлялся автоматически, выберите формат сниппета JavaScript tag. Для других форматов сниппетов необходимо вручную обновлять RUM JavaScript.
Dynatrace предоставляет REST API, позволяющий получить последнюю версию RUM JavaScript для вашего приложения. Вы можете автоматически внедрять последнюю версию RUM JavaScript во время сборки приложения. Чтобы узнать, как использовать API, см. API тегов ручной вставки RUM.
Что следует учитывать¶
Рекомендуется установка OneAgent¶
Установка Dynatrace OneAgent предпочтительнее безагентного мониторинга по следующим причинам:
- При безагентном мониторинге необходимо вручную вставлять RUM JavaScript на каждую страницу приложения, что может быть затруднительно. Dynatrace OneAgent выполняет вставку RUM JavaScript за вас.
- Если вы не используете формат сниппета JavaScript tag для безагентного мониторинга, RUM JavaScript, встроенный в страницы приложения, не обновляется автоматически при изменении настроек мониторинга. Код придётся обновлять вручную.
Список технологий и серверов, поддерживающих автоматическую вставку RUM JavaScript, см. в разделе Поддержка технологий - мониторинг реальных пользователей - веб-серверы и приложения.
Для некоторых технологий автоматическая вставка RUM JavaScript не поддерживается даже при установленном OneAgent. Например, хотя OneAgent может мониторить серверную сторону приложения Heroku, он не может вставить RUM JavaScript на страницы приложения. В таком случае вручную добавьте RUM JavaScript на страницы приложения.
Влияние на производительность¶
Чтобы минимизировать влияние RUM JavaScript на время загрузки страницы, можно загружать скрипты как можно позже. Используйте блокирующие теги скриптов, чтобы RUM JavaScript выполнялся именно в том месте, где вы его разместили. Если нужно, чтобы скрипт выполнялся как можно раньше, выполнение нельзя отложить.
Один из способов избежать дополнительных блокирующих запросов во время загрузки страницы -- встроить код скрипта инлайн. Код скрипта необходимо встроить в каждый документ, тем самым распространяя данные одного кэшированного файла на каждую страницу приложения. Сочетание обоих подходов позволяет получить инлайн-сниппет JavaScript, который выполняет необходимую инициализацию и откладывает загрузку объёмного кода до второго скрипта.
Трудозатраты на обслуживание¶
Безагентный мониторинг требует самостоятельной вставки RUM JavaScript, поэтому убедитесь, что это требует минимальных ручных усилий. Если вы не хотите менять код каждый раз при изменении настроек мониторинга приложения или при выходе новой версии RUM JavaScript, выберите формат сниппета JavaScript tag .
Стандарты и политики безопасности¶
Определённые стандарты разработки, созданные для повышения безопасности и скорости приложений, также вводят новые ограничения.
Например, стандарт Content Security Policy (CSP), введённый для минимизации вероятности стать жертвой межсайтового скриптинга, запрещает инлайн-код JavaScript. Это означает, что может потребоваться использование формата сниппета JavaScript tag для RUM JavaScript.
Корреляция действий пользователя с распределёнными трассировками¶
Для безагентного мониторинга возможность связывания действий пользователей с распределёнными трассировками зависит от технологий, используемых вашим приложением.
- Если ваше приложение инструментировано с помощью OneAgent, но мониторинг реальных пользователей не поддерживается для его технологии, то распределённые трассировки, захваченные этим OneAgent, не могут быть связаны с действиями пользователей.
- Если ваше приложение выполняет XHR-вызовы к AWS Lambda или к другому инструментированному веб- или серверу приложений, использующему поддерживаемые технологии, то возможно связывание действий пользователей и распределённых трассировок. Однако эти веб-запросы обычно являются кросс-доменными, поэтому для корреляции действий пользователя с распределёнными трассировками требуется дополнительная настройка. Подробнее см. Связывание кросс-доменных XHR-действий пользователей с их распределёнными трассировками.
Использование менеджеров тегов¶
Мы рекомендуем обеспечить, чтобы RUM JavaScript был первым исполняемым скриптом на каждой странице, что может быть затруднительно при использовании менеджера тегов. Если вы не можете гарантировать это, вы можете потерять информацию -- такую как определённые тайминги или действия пользователей -- доступную только при полной загрузке и инициализации кода мониторинга RUM и конфигурации.
Этот риск усугубляется при использовании сниппета кода в отложенном режиме, или при настройке параметра Script execution для JavaScript tag, OneAgent JavaScript tag или OneAgent JavaScript tag с SRI в режим async или defer.
Проверка настройки безагентного мониторинга¶
Для исследования проблем, которые могут возникнуть при безагентном мониторинге реальных пользователей, проверьте следующее:
- Мониторируемые страницы содержат RUM JavaScript.
- RUM JavaScript корректно загружается браузером (при условии, что вы не используете инлайн-вставку).
Используйте инструменты разработчика браузера для проверки: ответ для RUM JavaScript должен быть 200, а тело ответа должно содержать RUM JavaScript.
- Ответ конечной точки beacon начинается с
OK(BF). - Приложение в веб-интерфейсе Dynatrace отображает данные.
Также см. Веб-приложения: проблемы с RUM JavaScript для получения дополнительной информации.