Настройка безагентного мониторинга реальных пользователей
Безагентный мониторинг предназначен для использования, когда у вас нет доступа к вашему веб-серверу и, следовательно, вы не можете установить ЕдиныйАгент. Однако, прежде чем принять решение о сторонней библиотеке, обратите внимание, что все преимущества Real User Monitoring можно получить только после установки Dynatrace ЕдиныйАгент.
Для некоторых технологий автоматическое внедрение RUM JavaScript не поддерживается, даже если вы можете установить ЕдиныйАгент. Например, хотя ЕдиныйАгент может отслеживать серверную часть приложения Heroku, он не может внедрить RUM JavaScript на страницы приложения. В этом случае вам необходимо вручную добавить RUM JavaScript на страницы вашего приложения.
Список технологий и серверов, поддерживающих автоматическое внедрение RUM JavaScript, см. в разделе Поддержка технологий — Мониторинг реальных пользователей — Веб-серверы и приложения .
Установка Dynatrace ЕдиныйАгент настоятельно рекомендуется по следующим причинам:
- При безагентном мониторинге вам необходимо вручную вставлять RUM JavaScript на каждую из страниц вашего приложения, что может быть затруднительно. Dynatrace ЕдиныйАгент обрабатывает вставку RUM JavaScript для вас.
- Если вы не используете вариант вставки фрагмента кода или тега JavaScript для безагентного мониторинга, RUM JavaScript, встроенный в страницы вашего приложения, не будет автоматически обновляться при изменении настроек мониторинга приложений. Вам придется обновить код вручную.
Влияние на производительность
Чтобы свести к минимуму влияние на время загрузки страницы и первые впечатления пользователей от вашего приложения, вы можете загружать сценарии как можно позже. Используйте блокирующие теги скрипта, чтобы убедиться, что ваш RUM JavaScript будет выполняться именно там, где вы его разместите. Если вам нужно, чтобы скрипт запустился как можно раньше, его выполнение нельзя отложить. Один из способов избежать этих дополнительных запросов на блокировку во время загрузки страницы — встроить код скрипта. Код скрипта необходимо встроить в каждый документ, тем самым распространяя данные одного кэшированного файла на каждую страницу вашего приложения. Комбинируя оба этих подхода, вы можете получить встроенный фрагмент кода JavaScript, который выполняет необходимую инициализацию и откладывает загрузку большей части кода на второй сценарий.
Стандарты и политики безопасности
Некоторые стандарты разработки, призванные сделать приложения более безопасными и быстрыми, также вводят новые ограничения. Например, был введен стандарт Content Security Policy (CSP), чтобы свести к минимуму вероятность стать жертвой межсайтового скриптинга, тем самым запретив встроенный код JavaScript. Это означает, что вы должны использовать простой тег JavaScript для внедрения RUM JavaScript.
Другой стандарт, проект AMP, направлен на предоставление платформы, которая поможет вам создавать приложения, которые стабильно работают на всех устройствах и системных платформах. В этом случае использование собственного и стороннего кода JavaScript не допускается; можно использовать только сценарии, предоставленные AMP.
Мониторинг приложений AMP с помощью Dynatrace
- В меню Dynatrace выберите Развернуть Dynatrace .
- Выберите «Настройка без агента» или «Мониторинг AMP» .
- Включите Мое приложение использует ускоренные мобильные страницы (AMP) .
Усилия по техническому обслуживанию
Безагентный мониторинг требует, чтобы вы вставляли теги самостоятельно, поэтому вы должны убедиться, что для этого требуется как можно меньше ручных усилий. Вам не нужно менять свой код каждый раз, когда изменяется ваша конфигурация или когда выпускается новая версия. Фрагмент кода, добавленный в ваше приложение, обычно не нужно изменять, поскольку он позаботится о загрузке правильной конфигурации и версии.
Методы вставки
Формат вставки RUM JavaScript зависит от приложения и ваших требований. Узнайте о доступных вариантах вставки RUM JavaScript.
Чтобы выбрать безагентный метод вставки Real User Monitoring
- В меню Dynatrace выберите Web .
- Выберите приложение, которое вы хотите настроить.
- В правом верхнем углу страницы обзора приложения выберите Дополнительно ( … ) > Изменить .
- В настройках приложения перейдите в Injection .
- Перейдите на вкладку Вставка вручную и выберите нужный формат.
REST API
Dynatrace предлагает REST API, который позволяет автоматически получать последнюю версию RUM JavaScript для вашего приложения. Вы можете автоматически вводить последний код или тег во время сборки вашего приложения. Чтобы узнать, как использовать API, см. статью Real User Monitoring JavaScript API .
Вы также можете получить URL-адрес для загрузки RUM JavaScript в виде тега HTML в Dynatrace.
- В меню Dynatrace выберите Web .
- Выберите приложение, которое вы хотите настроить.
- В правом верхнем углу страницы обзора приложения выберите Дополнительно ( … ) > Изменить .
- В настройках приложения перейдите в Injection .
- Перейдите на вкладку « Получить через API » и выберите нужный формат.
- Выберите Копировать , чтобы получить URL-адрес загрузки.
Предпосылки
Вот что вам нужно для настройки безагентного мониторинга реальных пользователей:
- RUM JavaScript — пользовательский код или тег JavaScript, сгенерированный Dynatrace.
- Доступ к исходному коду HTML вашего приложения, чтобы вы могли вставить RUM JavaScript
- (Только для управляемых развертываний) CDN для обслуживания RUM JavaScript, который предотвратит проблемы с производительностью веб-страниц во время периодов обслуживания управляемого сервера Dynatrace или сбоев в локальной сети.
Настроить безагентный мониторинг
Dynatrace:
- В меню Dynatrace выберите Развернуть Dynatrace > Настроить безагентный мониторинг или мониторинг AMP .
- Введите свой
application’s domain name
и выберите Добавить веб-приложение . Создан пользовательский фрагмент JavaScript для вашего приложения. - по желаниюВключите параметр Мое приложение использует ускоренные мобильные страницы (AMP) , если ваша страница является AMP - страницей. Это не позволяет запускать JavaScript на странице и направлено на ускорение мобильных страниц.
- Выберите Копировать фрагмент кода , чтобы скопировать пользовательский фрагмент кода JavaScript вашего приложения в буфер обмена.
- Вставьте фрагмент кода JavaScript из буфера обмена в каждую HTML-страницу вашего приложения, которую вы хотите отслеживать. Dynatrace ждет, пока вы измените код своих страниц, а затем увидите трафик на сайте.
Примечание. Если у вас уже есть приложение, настроенное для безагентного мониторинга, выберите Приложения, настроенные для безагентного мониторинга на шаге 2, вместо того, чтобы вводить имя вашего приложения. Затем вы можете просмотреть список установленных приложений и соответствующие им фрагменты кода JavaScript. Это полезно, когда вы уже добавили RUM JavaScript на некоторые из своих страниц и хотите расширить видимость мониторинга на другие страницы.
Варианты ручной вставки
Чтобы просмотреть все доступные параметры ручной вставки, поддерживаемые для безагентного мониторинга
- В меню Dynatrace выберите Web .
- Выберите приложение, которое вы хотите настроить.
- В правом верхнем углу страницы обзора приложения выберите Дополнительно ( … ) > Изменить .
- В настройках приложения перейдите в Injection .
- Перейдите на вкладку Вставка вручную и откройте раскрывающийся список. Доступные варианты:
- Тег JavaScript
- Фрагмент кода
- Встроенный код
- Тег JavaScript ЕдиныйАгент
- Выберите « Загрузить », чтобы загрузить выбранный вариант.
Вы можете использовать API Dynatrace для получения последней версии 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="//js-cdn.ruscomtech.ru/jstag/145e12d594f/ruxitagentjs_2nr_1006400120011129.js" data-dtconfig="tp=500,50,0,0,10"></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>
Dynatrace под управлением
- Установите кластер АктивныйШлюз .
- Перейдите в « Настройки » > « Общедоступные конечные точки » . В текстовом поле URL- адрес АктивныйШлюз введите URL-адрес, по которому можно получить доступ к вашему новому АктивныйШлюз. URL-адрес должен быть общедоступным и принимать HTTPS-запросы .
Примечание. По умолчанию Cluster АктивныйШлюз прослушивает порт 9999
. Если это нежелательно, можно изменить порт в конфигурации АктивныйШлюз . Кроме того, вы можете использовать порт по вашему выбору, а затем перенаправить трафик на порт 9999
с помощью настроек брандмауэра.
Подготовьте производство вашего кластера
Для производственного мониторинга с более высокой нагрузкой и строгими требованиями к отказоустойчивости необходимо использовать несколько Cluster АктивныйШлюз с балансировкой нагрузки и добавить кэширующий прокси или CDN для обслуживания RUM JavaScript.
Балансировка нагрузки нескольких АктивныйШлюз
Если вы выберете этот подход, вам нужно будет указать URL-адрес вашего балансировщика нагрузки в текстовом поле URL-адреса АктивныйШлюз , как описано выше. Запросы, которые ваш балансировщик нагрузки пересылает в Cluster АктивныйШлюзs, выглядят следующим образом:
Запросы GET и POST для передачи информации о сеансе в Dynatrace Managed:
<http|https>://<ClusterАктивныйШлюзHostname>/bf/<EnvironmentID>?<internalQueryParameters>
GET-запросы для RUM JavaScript:
http[s]://<ClusterАктивныйШлюзHostname>/jstag/<ManagedClusterID>/<EnvironmentID>/<InternalApplicationID>/bs.js
http[s]://<ClusterАктивныйШлюзHostname>/jstag/<ManagedClusterID>/ruxitagent<configInfo>_<version>.js
Примечание . Обязательно настройте балансировщик нагрузки, чтобы установить x-forwarded-for
параметр для всех переадресованных запросов. Этот параметр содержит IP-адрес исходного запроса. Этот параметр нужен Dynatrace для определения источника запроса.
Балансировщик нагрузки должен прерывать SSL, так как это очень дорого для Cluster АктивныйШлюз. Для повышения производительности и если это позволяют ограничения безопасности, трафик может быть перенаправлен через обычный HTTP от балансировщика нагрузки к Cluster АктивныйШлюз.
Кэширование RUM JavaScript
Чтобы поддерживать сценарии с более высокой нагрузкой при использовании балансировщика нагрузки, мы рекомендуем кэшировать RUM JavaScript, загружаемый из Cluster АктивныйШлюз, с помощью кэширующего прокси-сервера или CDN.
CDN или кэширующий прокси-сервер должны пересылать все запросы на <cdnurl>/jstag/**
to, http[s]://<АктивныйШлюзHostname>/jstag/
чтобы быть готовыми к изменениям и обновлениям конфигурации. Существует несколько вариантов и версий RUM JavaScript. URL-адреса могут меняться в зависимости от настроек приложения.
CDN/прокси-сервер кэширования должны учитывать заголовок «expires». Существуют варианты RUM JavaScript, которые можно кэшировать навсегда (1 год), а другие могут меняться чаще.
Примечание. Если вы используете тип вставки встроенного кода, вам не нужна часть CDN, так как в таких случаях весь код RUM JavaScript вставляется в исходный HTML-код вашего приложения.
Обслуживание RUM JavaScript через CDN
В дополнение к очевидным преимуществам обслуживания RUM JavaScript из вашей CDN, при таком подходе запросы GET для RUM JavaScript направляются в вашу CDN.
Чтобы обслуживать RUM JavaScript из собственного CDN
- Перейдите в « Настройки » > « Общедоступные конечные точки » .
- Введите корневой путь вашей CDN в поле тега CDN для JavaScript (выберите маленький значок карандаша).
Обновлять
Чтобы упростить обновления и изменения конфигурации, вы можете использовать API Dynatrace для получения текущей версии RUM JavaScript.
Исправление проблем
Чтобы исследовать проблемы, с которыми вы можете столкнуться при безагентном мониторинге реальных пользователей, подтвердите следующее:
- Отслеживаемые страницы содержат RUM JavaScript.
- RUM JavaScript правильно загружается браузером (при условии, что вы не используете встроенную инъекцию). Используйте инструменты разработки браузера, чтобы проверить, соответствует ли ответ для RUM JavaScript,
200
а тело ответа содержит RUM JavaScript. - RUM JavaScript загружается из правильного места (
<cdnlocation>/jstag/<tag filename>
). - JavaScript RUM отправляет маяки в
<beaconendpoint>/bf
. - Вы извлекаете и вставляете JavaScript RUM только после полной настройки общедоступной конечной точки, такой как балансировщик нагрузки. Это гарантирует, что общедоступная конечная точка правильно установлена в RUM JavaScript.
- Ответ конечной точки маяка начинается с
OK(BF)
. - Приложение в веб-интерфейсе Dynatrace показывает данные.
Действие пользователя для корреляции распределенной трассировки
Для безагентного мониторинга возможность связывания действий пользователя и распределенных трассировок зависит от технологий, которые использует ваше приложение.
- Если ваше приложение оснащено ЕдиныйАгент, но технология Real User Monitoring не поддерживается для его технологии , то распределенные трассировки, захваченные этим ЕдиныйАгент, не могут быть связаны с действиями пользователя.
- Если ваше приложение выполняет вызовы XHR к AWS Lambda или другому инструментированному веб-серверу или серверу приложений, использующему поддерживаемые технологии , то можно связать действия пользователя и распределенные трассировки. Однако эти веб-запросы обычно являются запросами между источниками, поэтому требуется дополнительная настройка, чтобы добиться корреляции действия пользователя с распределенной трассировкой. Дополнительные сведения см. в разделе Связывание действий пользователя XHR из разных источников и их распределенных трассировок .