Почему я не вижу свои приложения или данные мониторинга?

Материал из Dynatrace
Версия от 17:56, 22 января 2023; ENetrebin (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

На этой странице объясняется, что делать, если Real User Monitoring не работает в вашей среде.

Прежде чем приступать к устранению неполадок, попробуйте проверить страницу проверки работоспособности вашего приложения .

Общее устранение неполадок

Чтобы убедиться, что процесс веб-интерфейса вашего приложения отслеживается, выберите « Настройки » > « Мониторинг » > « Обзор мониторинга» , перейдите на вкладку « Группы процессов » и найдите нужную группу процессов. На этой странице перечислены все отслеживаемые процессы.

Если данные RUM попадают в неправильное приложение, убедитесь, что вы правильно настроили правила обнаружения приложений. Дополнительные сведения см. в разделе Проверка правил обнаружения приложений или Подход к правилам обнаружения приложений .

Если вы не видите какие-либо приложения или данные мониторинга реальных пользователей в Dynatrace, начните с подтверждения наличия трафика в ваших интерфейсных веб-процессах (веб-сервер, Java, Node.js и т. д.). Для этого взаимодействуйте с одной из страниц вашего приложения, чтобы генерировать трафик.

Убедившись, что в интерфейсных веб-процессах есть трафик, проверьте следующее, чтобы определить причину проблемы:

  • Подтвердите, что RUM JavaScript был правильно внедрен в HTML вашего приложения.
  • Убедитесь, что RUM JavaScript загружен правильно.
  • Убедитесь, что данные мониторинга RUM отправляются в Dynatrace.

Дополнительные сведения о подтверждении этих пунктов см. в расширяемых разделах ниже.

В редких случаях JavaScript-код Dynatrace RUM, внедряемый на каждую страницу приложения, может отрицательно сказаться на его функциональности. По этой причине после установки ЕдиныйАгент убедитесь, что страницы вашего приложения по-прежнему отображаются правильно. Если некоторые страницы вашего приложения кажутся поврежденными, отключите мониторинг и свяжитесь со специалистом по продуктам Dynatrace ONE , нажав кнопку чата в правом верхнем углу строки меню Dynatrace.

Как я могу убедиться, что RUM JavaScript введен правильно?

Первое, что нужно сделать для проверки правильности настройки Real User Monitoring, — это найти код JavaScript Dynatrace RUM в HTML-коде вашего приложения.

Загрузите одну из своих страниц, проверьте ее исходный код в веб-браузере и убедитесь, что <HEAD>элемент содержит ссылку на RUM JavaScript. Если вы не можете найти RUM JavaScript, убедитесь, что вы используете правильный HTML с открывающими и закрывающими тегами для <HTML>и <HEAD>. Для получения дополнительной информации о том, соответствует ли ваш HTML требованиям для автоматической инъекции, посетите веб-сайт RUM JavaScript инъекции .

Для стандартных установок ЕдиныйАгент (автоматическое внедрение RUM JavaScript)

В зависимости от выбранного вами формата внедрения , разные форматы RUM JavaScript выглядят по-разному, но их всех объединяет data-dtconfigатрибут.

Найдите скрипт, который содержит data-dtconfigатрибут в теге.

<script type="text/javascript" src="/ruxitagentjs_[...]_[...].js" data-dtconfig="[...]"></script>

Для безагентного мониторинга (без ЕдиныйАгент, без автоматического внедрения)

Если вы используете фрагмент кода , встроенный код или формат внедрения тега JavaScript ЕдиныйАгент , найдите сценарий, который содержит data-dtconfigатрибут в теге.

Если вы используете формат внедрения тегов JavaScript , найдите сценарий, который заканчивается _complete.jsстрокой и загружается из js-cdn.Dynatrace.comвашей собственной CDN или домена в Dynatrace Managed (рекомендуется CDN).

<script type="text/javascript" src="https://js-cdn.ruscomtech.ru/jstag/[...]/[...]/[...]_complete.js"></script>

В приведенном выше примере [...]указывает переменный элемент URL, например идентификатор приложения или параметр конфигурации.

Если вы не видите код JavaScript RUM, автоматически внедренный ЕдиныйАгент, возможно, это произошло по одной из следующих причин:

  • Dynatrace ЕдиныйАгент не смог идентифицировать содержимое как HTML или отменил попытку внедрения из-за недопустимой структуры HTML или неправильных кодировок. См. раздел Внедрение RUM JavaScript, чтобы узнать, как ЕдиныйАгент внедряет RUM JavaScript в ваше приложение.
  • Запрос сопоставляется с другим приложением, чем ожидалось, поскольку обнаружение приложений было настроено неправильно. Либо шаблон неверен, либо связанные веб-серверы работают за прокси-серверами или другими компонентами, которые перезаписывают URL-адрес. Дополнительные сведения см. в разделе Что делать, если неинструментальный компонент перезаписывает части URL-адреса? .
  • Приложение, обнаруженное ЕдиныйАгент на первом инструментированном уровне, не распространяется на последующие ЕдиныйАгент, поскольку x-Dynatrace-applicationзаголовок удаляется брандмауэром или прокси-сервером.
  • Вы определили правила исключения для браузеров, роботов и поисковых роботов .

Как я могу подтвердить, что RUM JavaScript успешно загружен?

JavaScript Dynatrace RUM для вашего приложения загружается вместе со всеми другими ресурсами веб-страницы. Вы можете подтвердить, что загрузка прошла успешно, с помощью инструментов разработки, доступных в вашем браузере (например, DevTools в Chrome) или с помощью такого инструмента, как Fiddler.

Откройте предпочитаемый инструмент разработки, перейдите в раздел « Сеть» или « Сеть » и загрузите страницу своего приложения в браузере. В разделе Сеть вы должны увидеть список сетевых операций и их статусы. Найдите следующее:

  • Ответы, содержащие RUM JavaScript.
  • Ответы должны иметь 200 OKили 304 Not Modifiedстатус. Файл сценария может исходить из кеша.
  • Существование объекта JavaScript dT_. Для этого перейдите в консоль разработчика браузера, введите dT_и нажмите Enter . В результате объект должен быть возвращен.

См. примеры ниже для Google Chrome, которые показывают ответы сервера, содержащие правильное содержимое скрипта:

Есть несколько причин, по которым RUM JavaScript может быть недоступен для загрузки.

  • Для безагентного мониторинга
    • Неверный код JavaScript RUM.
    • Правила Content Security Policy предотвращают загрузку RUM JavaScript.
    • Хост RUM JavaScript ( https://js-cdn.Dynatrace.comв Dynatrace SaaS; ваш собственный CDN или домен в Dynatrace Managed) недоступен для клиентских браузеров из-за правил брандмауэра или конфигурации прокси-сервера. Соединения с хостом должны быть разрешены.
  • Для автоматического внедрения на веб-серверах
    • Правила брандмауэров, балансировщиков нагрузки или прокси-серверов не настроены на разрешение загрузки RUM JavaScript.
  • Для автоматического внедрения на серверах приложений Java
    • Корневое приложение не существует. RUM JavaScript обычно загружается из корневого пути веб-сервера ( .../ruxitagentjs_...).
    • Ваш сервер приложений Java обслуживает статическое содержимое без использования стека сервлетов. В таких случаях загрузка RUM JavaScript невозможна.

Чтобы решить проблему с загрузкой JavaScript, вызванную отсутствием корневого приложения:

  1. В меню Dynatrace выберите Web .
  2. Выберите приложение, которое вы хотите настроить.
  3. В правом верхнем углу страницы обзора приложения выберите Дополнительно ( … ) > Изменить .
  1. В настройках приложения перейдите в « Захват » > « Дополнительные настройки » .
  1. Прокрутите вниз до раздела библиотеки JavaScript .
  2. Укажите исходный путь для размещения файла библиотеки JavaScript вашего приложения в поле Укажите местоположение для файла библиотеки JavaScript . Этот путь должен указывать на место, где доступен RUM JavaScript (например, действительный путь сервлета).

Как я могу убедиться, что RUM JavaScript передает данные на сервер?

RUM JavaScript сообщает данные через запросы XHR или CORS POST. Вы можете просмотреть эти запросы среди сетевых операций, используя средства разработки браузера.

Для безагентного мониторинга

запросы CORS к инфраструктуре Dynatrace должны быть видны. Найдите следующее:

  • Шаблон URL:http(s)://[...].live.Dynatrace.com/bf
  • Шаблон URL для Dynatrace Managed: илиhttp(s)://[...]/bf/[...]
  • Ответы должны иметь 200 OKстатус, а содержимое ответа должно начинаться с "OK".

Для автоматической инъекции

XHR-запросы обратно на сервер должны быть видны. Найдите следующее:

  • URL относится к текущему местоположению страницы и начинается сrb_
  • Ответы должны иметь 200 OKстатус, а содержимое ответа должно начинаться с "OK".

Если содержимое ответа начинается с "FL", маяк был отклонен и не перенаправлен на сервер. Ответ содержит дополнительную информацию о проблеме. Одна из возможных основных причин заключается в том, что Dynatrace ограничивает скорость захвата вашего приложения.

Возможные причины отказа

Причины этого аналогичны причинам, по которым может не загружаться RUM JavaScript:

  • Возможно, потребуется адаптировать правила для брандмауэров, балансировщиков нагрузки или прокси-серверов.
  • Возможно, потребуется адаптировать параметры политики безопасности контента.
  • Настройка сервера приложений Java может потребовать адаптации.
  • Для безагентного мониторинга ваш браузер может не поддерживать запросы CORS. Данные могут передаваться только через браузеры, поддерживающие CORS.

Что делать, если RUM JavaScript не выполняется?

Содержимое, доставляемое в формате XHTML (тип содержимого application/xhtml+xml), может вызвать проблемы с внедренным кодом RUM JavaScript. Комментарии CDATA ( //<![CDATA['...) не вводятся, так как XHTML объявлен устаревшим, но это все еще может привести к тому, что браузеры не выполнят RUM JavaScript. Вы должны вручную добавить правильные CDATAкомментарии для правильного выполнения RUM JavaScript.

Могу ли я установить флаг «HttpOnly» для файлов cookie Dynatrace?

Корреляция RUM требует, чтобы файлы cookie dtCookieи dtPCнаходились в веб-запросах, чтобы связать их с действиями пользователя. Однако, поскольку dtCookieэто часть маяка и поскольку RUM JavaScript устанавливает и изменяет эти файлы cookie, они не поддерживают HttpOnlyфлаг. Подробную информацию см. в разделе « Файлы cookie ».

Могу ли я проверить, проходит ли сигнал монитора через мою инфраструктуру?

Чтобы убедиться, что сигнал монитора правильно проходит через вашу инфраструктуру в ЕдиныйАгент, вы должны вызвать форму URL <your hostname>/rb_<Your external Environment ID>?$.

Чтобы получить URL-адрес вашей среды для проверки сигнала монитора

  1. Откройте инструменты разработчика вашего браузера и найдите XHR Postзапрос, начинающийся rb_<ID>, например, с https://www.mydomain.com/rb_bf24977vwq.
  2. Скопируйте URL-адрес этого запроса и добавьте ?type=checkстроку запроса, например, https://www.mydomain.com/rb_bf24977vwq?type=check.
  3. Нажмите Enter , чтобы выполнить URL-адрес в вашем браузере.

Вы должны получить ответ с status 200текстом вроде "state=ok&agentType=nginx&agentVersion=1.121.170.20170703-101146". Пока state=okотображается строка (вместе с другим текстом и статусом HTTP), вы знаете, что сигнал маяка проходит через ваши серверы, и вы должны получать данные мониторинга реальных пользователей.

Если эти предложения не помогли решить вашу проблему, обратитесь к специалисту по продуктам Dynatrace ONE, нажав кнопку чата в правом верхнем углу строки меню Dynatrace.

После настройки ЕдиныйАгент для мониторинга реальных пользователей мое приложение не работает. Что я могу сделать?

Если ваше приложение не работает в этом сценарии, проверьте, работает ли приложение с отключенным RUM JavaScript. Для этого заблокируйте запрос с помощью Fiddler или Chrome DevTools.

  1. В Chrome DevTools перейдите на вкладку « Сеть ».
  2. Выберите Дополнительно ( … ) > Блокировка сетевых запросов .
  3. Выберите Включить блокировку сетевых запросов и введите часть URL-адреса RUM JavaScript, например, ruxitagent. Обратите внимание, что это не работает для встроенного RUM JavaScript.

Если приложение не работает с отключенным RUM JavaScript, проблема, скорее всего, связана с приложением или вызвана ЕдиныйАгент. Однако, если приложение работает после отключения RUM JavaScript, снова включите RUM JavaScript, но отключите все модули. Пробуйте включать модули по одному, пока приложение не перестанет работать. Используйте эту информацию при обращении в Dynatrace ONE, так как она помогает сузить проблему до определенного модуля.

Почему возникает задержка в отображении новых данных сеанса пользователя?

О новых пользовательских сеансах не сообщается в режиме реального времени. Существует задержка в 5–6 минут с момента начала нового сеанса пользователя до момента, когда сеанс пользователя отображается в диаграммах и других аналитических представлениях в веб-интерфейсе Dynatrace. Эта задержка приводит к небольшому уменьшению количества пользовательских сеансов, которые регистрируются в конце каждого временного интервала, в течение которого запускаются новые пользовательские сеансы.

Устранение неполадок, связанных с действиями

Что делать, если я знаю, что данные о действиях пользователя RUM отсутствуют?

Если данные о действиях пользователя отсутствуют в отслеживаемом веб-приложении, вы можете выполнить следующие проверки в Google Chrome с открытым Chrome DevTools , а затем использовать Chrome DevTools, чтобы убедиться, что определенные данные существуют, чтобы убедиться, что данные о действиях пользователя собираются правильно. Нажмите F12 , чтобы открыть Chrome DevTools в Chrome.

  • Убедитесь, что действие пользователя запускает сетевой трафик . Откройте вкладку « Сеть » в Chrome DevTools, а затем удалите все запросы. Выполните действие, которое вы хотите проверить, и проверьте сетевой трафик действия. Для этого проверьте столбец Тип на вкладке Сеть . Если запросов нет xhrили нет fetch, это не действие, и RUM JavaScript не сообщит об этом. Изображения и информация CSS не учитываются xhrи fetchне вызывают генерацию действия. Если вы не видите запросов xhrили нет fetch, используйте JavaScript API , чтобы вручную отслеживать это действие.
  • Убедитесь, что действие не используетsetTimeout(async) . Выполните действие, которое вы хотите проверить, и используйте Chrome DevTools, чтобы убедиться, что на вкладке « Сетьxhr » есть запрос . Если запрос существует, наведите указатель мыши на столбец « Инициатор » в этой строке и проверьте, есть ли строка с надписью . Если это так, посмотрите, помогает ли включение этого действия. Если это не работает или если инициатор содержит или , необходима ручная настройка.xhrsetTimeout(async)Timed action supportsetInterval(async)Promise(async)

На следующем изображении показан типичный xhrзапрос в Chrome DevTools с setTimeout(async)данными инициатора.

  • Убедитесь, что активированы правильные модули . Выполните действие и используйте Chrome DevTools, чтобы увидеть, содержит ли вкладка « Сеть » запрос с типом fetchили xhr. Включите правильный модуль — выборку или более специализированный модуль для выборки, BasicXHR или более специализированный модуль для действий XHR.

Что делать, если веб-запрос не связан с соответствующим действием пользователя?

Если связь между действием пользователя и его распределенной трассировкой отсутствует , проверьте следующее:

  • Убедитесь, что веб-запросы перехватываются. Убедитесь, что сервер, обрабатывающий веб-запросы, оснащен ЕдиныйАгент, а веб-запрос виден в Dynatrace. Если некоторые ожидаемые распределенные трассировки отсутствуют, проверьте, скорректировал ли ЕдиныйАгент объем данных, отправляемых на сервер Dynatrace из-за большой нагрузки. Дополнительные сведения см. в разделе Адаптивное управление и контроль трафика .
  • Убедитесь, что технология RUM поддерживается . Как правило, чтобы распределенные трассировки могли быть связаны с их действиями пользователя, технология на первом уровне инструментированных приложений должна быть одной из технологий, перечисленных в разделе Поддержка технологий — Мониторинг реальных пользователей — Веб-серверы и приложения . или, для вызовов XHR, также в разделе «Развернуть ЕдиныйАгент как расширение AWS Lambda» .
  • Убедитесь, что RUM включен в группе процессов : вы должны включить RUM в группе процессов, которая обрабатывает запрос. Если ваше приложение состоит из нескольких уровней, включите RUM по крайней мере на первом уровне (уровень, ближайший к браузеру). Подробнее см. в разделе Мониторинг реальных пользователей для групп процессов .
  • Проверьте, является ли веб-запрос запросом из разных источников . Если это так, следуйте инструкциям в разделе Связывание действий пользователя XHR между источниками и их распределенных трассировок .
  • Проверьте, нет ли проблемы с доменом cookie : проблемы с определением имени хоста могут помешать автоматическому определению домена cookie, или домен cookie мог быть неправильно настроен вручную. Дополнительные сведения см. в разделе Настройка домена cookie RUM .
  • Убедитесь, что ваши брандмауэры и прокси-серверы пропускают файлы cookie и заголовки RUM. Дополнительные сведения см. в разделе Ограничения брандмауэра для RUM .
  • Если вы настроили свою инфраструктуру для добавления HttpOnlyатрибута в dtCookie, удалите этот атрибут; он не поддерживается для файлов cookie RUM. Подробнее см . в разделе « Файлы cookie ».

Что делать, если сеансы пользователей случайным образом разбиваются на более короткие сеансы?

  • Если вы настроили домен cookie вручную, убедитесь, что он не пересекается с доменом cookie другого приложения. Дополнительные сведения см. в разделе Настройка домена файлов cookie RUM .
  • Убедитесь, что ваши брандмауэры и прокси-серверы пропускают файлы cookie RUM. Дополнительные сведения см. в разделе Ограничения брандмауэра для RUM .
  • Если вы настроили свою инфраструктуру для добавления HttpOnlyатрибута в dtCookie, удалите этот атрибут; он не поддерживается для файлов cookie RUM. Подробнее см . в разделе « Файлы cookie ».

Как узнать, с каким действием должен быть связан данный веб-запрос?

Когда действие активно с пользовательским вводом и XHR, RUM JavaScript устанавливает dtPCзначение файла cookie запроса. Это значение содержит pageIdи actionIdможет также содержать serveridи visitidзначения в строке значения. Чтобы увидеть значение, используйте Chrome DevTools. Чтобы увидеть dtPCзначение файла cookie запроса, выполните нужное действие в своем приложении, перейдите на вкладку « Сеть » и найдите имя запроса в столбце « Имя ». Выберите имя запроса, перейдите на вкладку Cookies и проверьте значение dtPCфайла cookie запроса, как показано на следующем рисунке. Формат значений dtPCcookie запроса Dynatrace: <serverId>$<pageId>h<actionId>v<visitId>.

Что делать, если у действий XHR нет информации о времени?

Если ваша страница запрашивает ресурсы из других доменов, необходимо установить HTTP-заголовок ответа Timing-Allow-Origin . В противном случае браузер не сможет указать значения, и они не смогут отобразиться на диаграмме разбивки участников . Если это произойдет, в области диаграммы появится сообщение о том, что сетевое время и время сервера не могут быть рассчитаны, поскольку Dynatrace не получил тайминги ресурсов W3C.

Устранение неполадок, связанных с метаданными

Что делать, если метаданные отсутствуют?

Проверьте следующие вещи, если некоторые необходимые метаданные отсутствуют.

  1. Посмотрите, сможет ли RUM JavaScript зафиксировать значение прямо сейчас . RUM JavaScript предлагает dtrum.getAndEvaluateMetaData()функцию, которая фиксирует все настроенные метаданные и перечисляет текущие значения. Если метаданные не были захвачены, функция указывает причину этого.
    • Если выражение метаданных отсутствует в списке, возможно, страница, на которой вы сейчас находитесь, не соответствует правильному приложению.
    • Если выражение метаданных показывает данные, которые вы намеревались захватить, данные могут быть недоступны, когда RUM JavaScript захватывает их. Данные фиксируются всякий раз, когда действие завершено, поэтому, если данные доступны только после этого, RUM JavaScript не может захватывать эти значения.
  2. Посмотрите, содержится ли переменная JavaScript или элемент DOM во фрейме или IFrame . IFrames и Frames имеют собственный контекст JavaScript, поэтому невозможно получить доступ к переменным, доступным только в другом фрейме. Элементы DOM также должны быть доступны во фрейме или IFrame, в который внедрен RUM JavaScript, потому что IFrames могут иметь ограничения доступа. Вы можете использовать Chrome DevTools для проверки захвата переменных JavaScript или элементов DOM. Для этого выполните нужное действие в приложении. Затем перейдите на вкладку « Консоль » в Chrome DevTools и проверьте журнал на наличие записей DOM Element valueи . Variable valueУбедитесь, что эти записи имеют допустимые значения. На следующем изображении показан доступ к элементу DOM в IFrame, содержащем элемент DOM: На этом изображении показан доступ к элементу DOM в IFrame, который не содержит элемент DOM:
  3. Проверьте, неверный ли селектор DOM или недоступен querySelector . Выполните следующие действия, чтобы убедиться в правильности селектора DOM:
    • Убедитесь, что document.querySelectorон доступен, введя его в консоль Chrome DevTools. Если он недоступен, вы не сможете фиксировать значения в этом браузере. Однако это маловероятно, так как document.querySelectorподдерживается даже более старыми версиями браузеров.
    • Убедитесь, что document.querySelector('yourselector')возвращает значение, которое вы хотите захватить. Если нет, то вы queryselectorошиблись, и RUM JavaScript не сообщает данные. Дополнительные сведения о queryselector. Чтобы проверить возвращаемое значение для document.querySelector, выполните нужное действие в приложении. Затем в Chrome DevTools перейдите на вкладку « Элементы », выполните поиск строки document.querySelectorи проверьте возвращаемое значение. На следующем изображении показаны данные, правильно возвращенные из document.querySelector:
  4. Посмотрите, используют ли файлы cookie HttpOnly . Если для файлов cookie установлен HttpOnlyфлаг, RUM JavaScript не может получить доступ к его значениям, и значение не сообщается, как показано на следующем рисунке. Вы можете проверить, установлен ли HttpOnlyфлаг для файлов cookie, на вкладке « Приложение » Chrome DevTools.
  5. Убедитесь, что файлы cookie установлены в правильном домене . Иногда файлы cookie не устанавливаются в правильном домене, даже если они отображаются в Chrome DevTools. Это означает, что вы можете увидеть значение файла cookie в Chrome DevTools, но файл cookie недоступен из RUM JavaScript. Чтобы попробовать это, вы можете найти document.cookieстроку в консоли Chrome DevTools и проверить, содержит ли возвращаемая строка файл cookie, который вы хотите захватить.

Что делать, если сеансы помечены неправильно или отсутствуют метаданные?

Если вы заметили, что ваши сеансы неправильно помечены или у вас отсутствуют метаданные, это, вероятно, связано с настройкой конфиденциальности данных приложения под названием «Не отслеживать » .

Для этого параметра параметр Записывать анонимные данные сеанса пользователя для браузеров с включенной функцией «Не отслеживать» включен по умолчанию, что является важным элементом конфиденциальности данных RUM. Этот параметр гарантирует, что Dynatrace фиксирует только анонимные сеансы, когда в браузерах пользователей обнаружена настройка «Не отслеживать».

Вы можете изменить параметр « Не отслеживать » для своего приложения. Обратите внимание, что если вы выберете параметр « Отключить мониторинг реальных пользователей для браузеров с включенной функцией «Не отслеживать» , RUM отключится при обнаружении параметра «Не отслеживать» в браузерах пользователей.

Подробные инструкции см. в разделе Настройка мониторинга реальных пользователей в соответствии с GDPR > Не отслеживать .