Настройка автоматического внедрения
После развёртывания OneAgent в режиме полного мониторинга (full-stack monitoring) на хосте он по умолчанию автоматически внедряет RUM JavaScript в HTML ваших веб-приложений для технологий, перечисленных в Поддержка технологий — Real User Monitoring — Веб-серверы и приложения. Чтобы инициировать внедрение, просто перезапустите процессы вашего веб-сервера после установки OneAgent.
По умолчанию внедрение выполняется в соответствии с набором встроенных правил автоматического внедрения, но существуют сценарии, когда вам может потребоваться определить пользовательское правило внедрения для осуществления внедрения. Пользовательские правила внедрения также поддерживают исключение определённых страниц из внедрения, что позволяет настроить ручную вставку для страниц автоматически внедряемого приложения.
RUM JavaScript отвечает за сбор данных RUM из браузеров ваших клиентов. Он отправляет эти данные в виде XHR POST-запросов на конечную точку маяка (beacon endpoint), которая выполняет первичную валидацию перед пересылкой данных в Dynatrace. Конечная точка маяка по умолчанию в сценариях автоматического внедрения предоставляется OneAgent, инструментирующим ваш веб-сервер или сервер приложений, но возможны альтернативные настройки, см. Настройка конечной точки маяка для веб-приложений.
Фрагмент RUM JavaScript, внедряемый в HTML вашего приложения, может иметь различные форматы, каждый из которых предназначен для определённых требований, как описано в Выбор формата фрагмента. Чтобы настроить формат, используемый для автоматического внедрения, обратитесь к разделу Настройка формата фрагмента.
OneAgent внедряет RUM JavaScript на каждую страницу на основе текущей конфигурации каждый раз, когда инструментированный веб-сервер или сервер приложений доставляет страницу. Однако политика кэширования страницы определяет, как часто OneAgent имеет возможность выполнять это внедрение. Для решения этой проблемы OneAgent включает функцию, которая оптимизирует заголовки управления кэшем. Подробнее о работе этой функции и её ограничениях см. в разделе Оптимизация заголовков управления кэшем.
Если у вас нет доступа к веб-серверу, на котором размещено ваше приложение, и вы не можете установить OneAgent, вы можете мониторить ваше приложение с помощью безагентного RUM.
Встроенные правила автоматического внедрения¶
OneAgent обнаруживает ответы, содержащие HTML-контент, и внедряет RUM JavaScript в секцию head каждой страницы. Он не изменяет другие ресурсы, такие как изображения, CSS-файлы, JSON- или XML-документы, или обычный текст.
OneAgent пытается внедрить RUM JavaScript как первый скрипт на странице, что помогает обеспечить надёжные результаты мониторинга. Внедрение работает только с валидным HTML, соответствующим базовым лучшим практикам — например, все элементы должны быть правильно открыты и закрыты. OneAgent следует встроенным правилам, указанным ниже, чтобы определить наиболее подходящее место в HTML-документе для внедрения RUM JavaScript.
Спецификация правил автоматического внедрения¶
Если вы не уверены, был ли RUM JavaScript успешно внедрён, или у вас возникли проблемы с настройкой RUM, обратитесь к Веб-приложения: проблемы с RUM JavaScript.
Явное указание места внедрения RUM JavaScript¶
В некоторых случаях OneAgent может быть не в состоянии выполнить внедрение с помощью встроенных правил. Обычно это связано с некорректным HTML, хотя другие редкие условия также могут помешать набору правил определить подходящую точку внедрения. В таких сценариях вы можете осуществить автоматическое внедрение, определив пользовательское правило внедрения, которое явно указывает, где RUM JavaScript должен быть внедрён в HTML-документе.
Создание пользовательского правила внедрения, указывающего точку внедрения в HTML-документе
- Перейдите в Web.
- Выберите приложение, которое вы хотите настроить.
- В верхнем правом углу страницы обзора приложения выберите More (…) > Edit.
- В настройках приложения выберите Injection > Custom injection rules.
- В разделе Define custom injection rules выберите Add custom rule.
- Определите Operator и, при необходимости, соответствующий URL pattern, чтобы управлять тем, к каким страницам применяется ваше пользовательское правило внедрения.
- В разделе Rule выберите Before specific HTML или After specific HTML и введите соответствующий HTML-шаблон.
- Выберите Save changes для создания пользовательского правила внедрения.
Отключение внедрения для определённых страниц¶
Отключение внедрения для одной или нескольких страниц вашего приложения
- Перейдите в Web.
- Выберите приложение, которое вы хотите настроить.
- В верхнем правом углу страницы обзора приложения выберите More (…) > Edit.
- В настройках приложения выберите Injection > Custom injection rules.
- В разделе Define custom injection rules выберите Add custom rule.
- Определите Operator и, при необходимости, соответствующий URL pattern, чтобы управлять тем, к каким страницам применяется ваше пользовательское правило внедрения.
- В разделе Rule выберите Do not inject.
- Выберите Save changes для создания пользовательского правила внедрения.
Это правило отключает только внедрение и оптимизацию заголовков управления кэшем; оно не полностью отключает функциональность RUM. Например, файлы cookie могут по-прежнему устанавливаться. Если вы ищете способ выборочного включения RUM, обратитесь к инструкциям в Выборочное развёртывание RUM для ваших приложений.
Настройка формата фрагмента¶
Настройка формата фрагмента для автоматического внедрения
- Перейдите в Web.
- Выберите приложение, которое вы хотите настроить.
- В верхнем правом углу страницы обзора приложения выберите More (…) > Edit.
- В настройках приложения выберите Injection > Automatic injection.
- В разделе Snippet format выберите нужный формат.
Чтобы узнать больше о различных форматах фрагментов, обратитесь к Выбор формата фрагмента.
Оптимизация заголовков управления кэшем¶
Включено по умолчанию
Политика кэширования вашего приложения напрямую влияет на то, как часто OneAgent может внедрять RUM JavaScript на страницу с использованием текущей конфигурации. Для обеспечения своевременного применения изменений конфигурации функция оптимизации заголовков управления кэшем модифицирует HTTP-заголовки таким образом, чтобы условные запросы приводили к промаху кэша при изменении конфигурации RUM, давая OneAgent возможность выполнить внедрение. Подробности этих оптимизаций и конкретных модификаций заголовков приведены ниже.
Спецификация оптимизации заголовков управления кэшем
Когда оптимизация заголовков управления кэшем включена и конфигурация RUM была изменена, запросы, которые в противном случае привели бы к ответу 304 Not Modified, отвечают с 200 OK, давая OneAgent возможность внедрить RUM JavaScript в HTML-код вашего приложения. Если конфигурация RUM не была изменена, запросы возвращают ответ 304 Not Modified.
Модифицируемые заголовки¶
OneAgent модифицирует следующие заголовки ответов и запросов:
Заголовки ответов¶
ETagLast-Modified
Заголовки запросов¶
1
Не модифицируется для запросов диапазонов (range requests), которые обычно исключены из мониторинга RUM.
Вот как OneAgent модифицирует заголовки управления кэшем.
При изменении конфигурации RUM¶
- Входящие заголовки запроса
If-None-MatchиIf-Modified-Sinceудаляются. - Модификации, внесённые в заголовки
If-Unmodified-SinceиIf-Match, удаляются. -
Когда используются оба заголовка
ETagиLast-Modified: -
К заголовку
ETagдобавляется суффикс. - Из заголовка
Last-Modifiedвычитается одна секунда. -
Когда используется только заголовок
ETag: -
К заголовку
ETagдобавляется суффикс. -
Когда используется только заголовок
Last-Modified: -
Создаётся заголовок
ETag. - Из заголовка
Last-Modifiedвычитается одна секунда.
Когда конфигурация RUM не изменена¶
- Перед обработкой запроса веб-сервером или сервером приложений модификации, внесённые в заголовки, удаляются, чтобы веб-сервер или сервер приложений не видел изменений.
Когда приложение состоит из нескольких инструментированных уровней, изменения заголовков ETag и Last-Modified применяются на каждом уровне.
OneAgent не изменяет заголовки Expires и Cache-Control, которые явно определяют время истечения срока действия ресурсов. Для обеспечения своевременных обновлений мы рекомендуем устанавливать более короткие сроки действия в этих заголовках.
Отключение оптимизации заголовков управления кэшем¶
В редких случаях оптимизация заголовков управления кэшем может мешать работе вашего приложения. Если это произойдёт, вы можете отключить эту функцию. При отключении развёртывание новых конфигураций RUM будет полностью зависеть от существующего поведения кэширования вашего приложения.
Отключение оптимизации заголовков управления кэшем
- Перейдите в Web.
- Выберите приложение, которое вы хотите настроить.
- В верхнем правом углу страницы обзора приложения выберите More (…) > Edit.
- В настройках приложения выберите Injection > Automatic injection.
- Отключите Optimize the value of cache control headers for use with Dynatrace Real User Monitoring.
- Выберите Save changes.
Отключение оптимизации заголовков управления кэшем для не-HTML ресурсов¶
В некоторых случаях OneAgent может модифицировать заголовки управления кэшем для не-HTML ресурсов. Это происходит потому, что модификации заголовков применяются до определения точного типа контента. Хотя OneAgent исключает определённые ресурсы из оптимизации заголовков управления кэшем на основе суффикса их URI, невозможно учесть все типы не-HTML контента.
Если вы хотите предотвратить модификацию заголовков управления кэшем для определённых не-HTML ресурсов, вы можете создать пользовательское правило внедрения, которое отключает внедрение для этих ресурсов.
Использование ручной вставки для страниц автоматически внедряемого приложения¶
Если OneAgent развёрнут на ваших группах процессов и автоматическое внедрение поддерживается для вашей технологии, то OneAgent по умолчанию внедряет RUM JavaScript автоматически. Однако при необходимости вы можете вставить его вручную на все или определённые страницы.
Сначала необходимо подавить автоматическое внедрение, как описано в разделе Отключение внедрения для определённых страниц. Затем для ручной вставки RUM JavaScript
- Перейдите в Web.
- Выберите приложение, которое вы хотите настроить.
- В верхнем правом углу страницы обзора приложения выберите More (…) > Edit.
- В настройках приложения выберите Injection > Manual insertion.
- Выберите нужный формат фрагмента и скопируйте предоставленный фрагмент.
- Вставьте фрагмент в ваш HTML перед любыми другими скриптами.
Кроме того, вы можете получить фрагмент через API, что позволяет интегрировать его вставку в процесс сборки. Это гарантирует, что ваше приложение постоянно работает с последней конфигурацией.