Устранение неполадок пакета SDK JavaScript для Application Insights
В этой статье описывается, как устранять различные проблемы, связанные с пакетом SDK Для JavaScript Для Application Insights. Темы этой статьи включают сбой загрузки пакета SDK для веб-приложений JavaScript и поддержку карт источника для приложений JavaScript.
Устранение неполадок при загрузке пакета SDK для веб-приложений JavaScript
В следующих разделах рассматриваются симптомы, причины и решения для конкретного сценария сбоя загрузки пакета SDK для веб-приложений JavaScript.
Симптомы
<В головном> элементе веб-страницы, отслеживаемой, фрагмент Кода JavaScript (версия 3 или более поздняя версия) создает и сообщает следующее исключение при обнаружении того, что скрипт SDK не скачал или инициализирует:
Сбой загрузки пакета SDK: не удалось загрузить скрипт пакета SDK Application Insights (дополнительные сведения см. в стеке)
Это сообщение указывает, что клиент пользователя (браузер) не может скачать пакет SDK Application Insights или инициализировать его на указанной странице размещения. Таким образом, вы не видите никаких данных телеметрии или событий.
Примечание.
Это исключение поддерживается во всех основных браузерах, поддерживающих fetch()
API или XMLHttpRequest
. Эти версии браузера исключают Microsoft Internet Explorer 8 и более ранних версий. Таким образом, эти браузеры не будут сообщать об этом типе исключений, если ваша среда не включает в себя заполнение полизаполнения.
Сведения о стеке включают основные сведения о URL-адресах, используемых пользователем.
Имя | Описание |
---|---|
<Конечная точка CDN> | URL-адрес, который был использован (безрезультатно) для загрузки пакета SDK. |
<Ссылка на справку> | URL-адрес, ссылающийся на документацию по устранению неполадок (на этой странице). |
<URL-адрес узла> | Полный URL-адрес страницы, используемой пользователем. |
<URL-адрес конечной точки> | URL-адрес, используемый для отчета об исключении. Это значение может помочь определить, обращается ли общедоступный Интернет или частное облако к странице размещения. |
В следующем списке содержатся наиболее распространенные причины возникновения этого исключения:
Кратковременный сбой сетевого подключения
Сбой сеть доставки содержимого Application Insights (CDN)
Сбой инициализации пакета SDK после загрузки скрипта
Блокировка CDN JavaScript для Application Insights
Периодический сбой сетевого подключения является наиболее распространенной причиной этого исключения, особенно в сценариях мобильного роуминга.
В следующих разделах рассматриваются способы устранения каждой потенциальной первопричины этой ошибки.
Примечание.
Некоторые из этих шагов предполагают, что приложение имеет прямой контроль над <скриптом фрагмента или> тегом и его конфигурацией, возвращаемой в рамках html-страницы размещения. Если эти условия не применяются к вашему сценарию, эти действия также не применяются.
Причина 1. Периодический сбой сетевого подключения
Если у пользователя возникают периодические сбои сетевого подключения, существует меньше возможных решений, чем для других причин. Однако этот сбой обычно решается быстро. Например, если пользователь обновляет страницу для перезагрузки сайта, файлы в конечном итоге скачиваются и кэшируются локально до выпуска обновленной версии.
Решение 1a. Скачивание обновленной версии пакета SDK
Чтобы свести к минимуму периодический сбой сетевого подключения, мы реализовали Cache-Control
заголовки во всех файлах CDN. После скачивания текущей версии пакета SDK браузер пользователя не должен снова скачать его, так как он повторно использует ранее полученную копию. (Узнайте , как работает кэширование.) Если проверка кэширования завершается ошибкой или доступна новая версия, браузер пользователя должен скачать обновленную версию. Таким образом, в сценарии сбоя проверки может появиться фоновый уровень шума . Или вы можете увидеть временный всплеск при возникновении нового выпуска и становится общедоступным (развернутым в CDN).
Решение 1b. Использование пакетов npm для внедрения пакета SDK вместе с приложением в одном пакете
Сохраняется ли исключение сбоя загрузки пакета SDK и возникает ли оно для многих пользователей вместе с сокращением обычной телеметрии клиента? В этом случае периодические проблемы с сетевым подключением, вероятно, не являются истинной причиной проблемы, и следует изучить другие возможные причины.
Примечание.
Распространенный признак того, что эта ошибка возникает для нескольких пользователей, заключается в том, что исключение сообщается на быстром и устойчивом уровне.
В этой ситуации размещение пакета SDK в собственной сети CDN вряд ли будет предоставлять или уменьшать вхождения этого исключения. Эта же проблема влияет на собственную сеть CDN, и она возникает также при использовании пакета SDK через решение пакета npm. Сбой последнего сценария возникает, особенно если Application Insights входит в другой пакет, отличный от того, что отслеживаемое приложение, так как сбой гарантированно возникает по крайней мере в одном из этих пакетов. С точки зрения пользователя, когда это исключение возникает, все приложение не может загрузить или инициализировать, а не только пакет SDK для телеметрии (что пользователи не видят). Таким образом, пользователи, вероятно, будут продолжать обновлять свой сайт, пока он не будет загружен полностью.
Вы можете попытаться использовать пакеты npm для внедрения пакета SDK Application Insights вместе с отслеживаемыми приложениями в одном пакете. Хотя временный сбой может по-прежнему возникать в этом сценарии, объединенный пакет предлагает реальные шансы на устранение проблемы.
Причина 2. Сбой CDN Application Insights
Чтобы убедиться, что произошел сбой CDN Application Insights, попробуйте получить доступ к конечной точке CDN непосредственно из браузера из другого расположения, отличного от расположения пользователей. Например, можно попробовать получить доступ https://js.monitor.azure.com/scripts/b/ai.2.min.js с собственного компьютера разработки. (Предполагается, что ваша организация не заблокировала этот домен.)
Решение 2. Создание запроса в службу поддержки
Если убедиться, что сбой существует, можно создать новый запрос в службу поддержки.
Причина 3. Пакет SDK не инициализировался после загрузки скрипта
Если пакет SDK не инициализирует, <скрипт> / по-прежнему успешно скачан из CDN, но он завершается сбоем во время инициализации. Эта ошибка возникает из-за отсутствия или недопустимых зависимостей или из-за какой-либо формы исключения JavaScript.
Решение 3. Проверка успешного скачивания пакета SDK или исключений JavaScript или включение отладки браузера
Шаг 1. Проверка успешного скачивания пакета SDK
Проверьте, успешно ли скачан пакет SDK. Если скачивание скрипта не произошло, этот сценарий не является причиной исключения сбоя загрузки пакета SDK. Используйте браузер, поддерживающий средства разработчика. Выберите F12, чтобы просмотреть средства разработчика, а затем выберите вкладку "Сеть ". Убедитесь, что скрипт, определенный в конфигурации фрагмента кода src, был скачан. Для этого проверьте код 200
ответа (успешно) или 304
(не изменен). Для просмотра сетевого трафика можно также использовать средство веб-отладки, например Fiddler.
Если пакет SDK не скачать успешно, ознакомьтесь со следующей таблицей, чтобы понять различные параметры отчетности.
Сценарий | Причина | Действие |
---|---|---|
Проблема влияет только на нескольких пользователей и определенную версию браузера или подмножество версий браузера. (Проверьте сведения об обнаруженном исключении.) | Эта проблема, скорее всего, может возникнуть только в том случае, если для конкретных пользователей или сред требуется приложение для предоставления дополнительных polyfill реализаций. |
Отправьте файл проблемы на GitHub. |
Проблема влияет на все приложение и всех пользователей. | Это проблема, связанная с выпуском. | Создайте запрос в службу поддержки. |
Если пакет SDK успешно скачан, ознакомьтесь со следующими разделами, чтобы устранить проблему инициализации пакета SDK.
Шаг 2. Проверка исключений JavaScript
Проверьте наличие исключений JavaScript. Используйте браузер, поддерживающий средства разработчика. Выберите F12, чтобы просмотреть средства разработчика, загрузить страницу и проверить наличие исключений. Вызывает ли скрипт SDK (например, в ai.2.min.js) исключения? В этом случае произошло одно из следующих сценариев:
Конфигурация, передаваемая пакету SDK, содержит непредвиденная конфигурация.
Конфигурация, передаваемая пакету SDK, отсутствует требуемая конфигурация.
Неисправный выпуск был развернут в CDN.
Чтобы проверить неисправную конфигурацию, измените конфигурацию, передаваемую фрагменту кода (если вы еще этого не сделали), чтобы она включила только ключ инструментирования в виде строкового значения. В следующем коде показан пример изменения конфигурации фрагмента кода.
Примечание.
Поддержка приема ключей инструментирования заканчивается 31 марта 2025 г. Прием ключей инструментирования будет и дальше осуществляться, но мы больше не будем предоставлять обновления или поддержку для этой функции. См. раздел "Переход на строка подключения", чтобы воспользоваться преимуществами новых возможностей.
<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "<instrumentation-key-guid>"
}});
</script>
При использовании этой минимальной конфигурации, если в скрипте SDK по-прежнему отображается исключение JavaScript, создайте запрос в службу поддержки. Чтобы устранить проблему, необходимо откатить неисправную сборку. Это связано с тем, что недавно развернутая версия, вероятно, является причиной проблемы.
Если исключение исчезнет, несоответствие типа или неожиданное значение, вероятно, вызывает проблему. Начните устранять неполадки, восстанавливая параметры конфигурации по одному, и тестируйте после каждого изменения до тех пор, пока исключение не возникнет снова. Затем проверьте документацию для элемента, вызывающего проблему. Если документация неясна или вам нужна помощь, отправьте проблему на GitHub.
Была ли ваша конфигурация развернута и работает, но теперь сообщает об этом исключении? В этом случае может возникнуть проблема, которая влияет на только что развернутую версию. Проверьте, влияет ли исключение только на небольшой набор пользователей или браузеров. Отправьте проблему на GitHub или создайте новый запрос в службу поддержки.
Шаг 3. Включение отладки консоли браузера
Если не возникло никаких исключений, следует включить отладку консоли, добавив параметр loggingLevelConsole в конфигурацию, как показано в следующем примере конфигурации фрагмента кода. Это изменение отправляет все ошибки и предупреждения инициализации в консоль браузера. (Чтобы просмотреть консоль браузера, выберите F12, чтобы открыть средства разработчика, а затем выберите Вкладка консоли .) Любые сообщаемые ошибки должны быть самообъяснительными. Если вам нужна дополнительная помощь, отправьте проблему на GitHub.
<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "<instrumentation-key-guid>",
loggingLevelConsole: 2
}});
</script>
Примечание.
Во время инициализации пакет SDK выполняет некоторые основные проверки известных основных зависимостей. Если текущая среда выполнения не предоставляет эти проверки, среда выполнения сообщает о сбоях в виде предупреждений в консоль (но только если loggingLevelConsole
значение параметра больше нуля).
Если пакет SDK по-прежнему не инициализируется, попробуйте включить параметр конфигурации enableDebug. После внесения этого изменения все внутренние ошибки возникают в виде исключений. Это приводит к потере данных телеметрии. Так как этот параметр предназначен только для разработчиков, это, вероятно, приводит к возникновению дополнительных исключений из-за внутренних проверок. Просмотрите каждое исключение, чтобы определить, какая проблема вызывает сбой пакета SDK. Используйте неуправляемую версию скрипта (изменив расширение имени файла с .min.js на только .js). В противном случае исключения недоступны. В следующем коде показан пример изменений конфигурации фрагмента кода.
Предупреждение
Этот параметр только для разработчиков никогда не должен быть включен в полной рабочей среде, так как это приводит к потере телеметрии.
<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.js",
cfg:{
instrumentationKey: "<instrumentation-key-guid>",
enableDebug: true
}});
</script>
Если это действие по-прежнему не предоставляет аналитических сведений, следует подать проблему на GitHub , указав сведения и пример сайта, если вы используете его. Включите сведения о версии браузера, операционной системе и платформе JavaScript, чтобы определить проблему.
Причина 4. Блокировка CDN JavaScript Для Application Insights
Блокировка CDN возможна, если конечная точка CDN пакета SDK Для JavaScript Для Application Insights сообщается или определяется как небезопасная. В этой ситуации конечная точка публично блокируется, и потребители этих списков начинают блокировать весь доступ.
Чтобы устранить эту проблему, владелец конечной точки CDN должен работать с сущностью блокировки, которая помечает конечную точку как небезопасную. Затем сущность блокировки может удалить конечную точку из соответствующего списка.
Проверьте следующие веб-сайты интернет-безопасности, чтобы узнать, определяют ли они конечную точку CDN как небезопасную:
Для устранения этой проблемы может потребоваться много времени. Пользователям или корпоративным ИТ-отделам может потребоваться принудительно обновить или явно разрешить конечные точки CDN. Общее время, необходимое для устранения этой проблемы, зависит от частоты, требуемой приложением, брандмауэром или средой для обновления локальных копий списков.
Если конечная точка CDN определена как небезопасная, создайте запрос в службу поддержки, чтобы устранить проблему как можно скорее.
В следующих разделах подробно описано, как может произойти блокировка и как устранить блокировку.
Причина 4a: блокировка пользователей (браузер, установленный блокировщик или личный брандмауэр)
Проверьте, выполнили ли пользователи какие-либо из следующих действий конфигурации:
Установлен подключаемый модуль браузера (как правило, в виде рекламы, вредоносных программ или блокировщика всплывающих окон)
Заблокированы или запрещены конечные точки CDN Application Insights в браузере или прокси-сервере.
Настройка правила брандмауэра, вызывающего блокировку домена CDN для пакета SDK (или сбой разрешения записи DNS).
Решение 4a. Добавление исключений блокировки для конечных точек CDN
Если пользователи приняли какие-либо из перечисленных действий конфигурации, обратитесь к ним (или предоставьте документацию), чтобы разрешить конечные точки CDN.
Возможно, пользователи установили подключаемые модули, использующие общедоступный список блокировок. В противном случае они, вероятно, используют другое решение, настроенное вручную, или подключаемые модули используют список блокировок частного домена.
Сообщите пользователям разрешить скачивание скриптов из конечных точек CDN Application Insights, включив конечные точки в список исключений подключаемых модулей или правил брандмауэра в браузере. Эти списки зависят от пользовательской среды.
Ниже приведен пример этой ситуации, в который показано, как настроить Google Chrome, чтобы разрешить или заблокировать доступ к веб-сайтам.
Причина 4b. Блокировка корпоративного брандмауэра
Если пользователи находятся в корпоративной сети, корпоративный брандмауэр, скорее всего, является источником блокировки CDN. Корпоративный ИТ-отдел, вероятно, реализовал некоторую форму системы фильтрации Интернета.
Решение 4b1. Добавление исключений для конечных точек CDN для корпораций
Внимание
Используют ли пользователи частное облако и не имеют доступа к общедоступному Интернету? В этом случае необходимо либо использовать пакеты npm Application Insights для внедрения пакета SDK, либо разместить пакет SDK Application Insights в собственном CDN.
Обратитесь к ИТ-отделу вашей компании, чтобы разрешить необходимые правила для пользователей. Это решение аналогично добавлению исключений для пользователей. Настроите ИТ-отдел конечные точки CDN Application Insights для скачивания, включая (или удаляя) их в любом списке заблокированных доменов или службах разрешенного списка разрешений.
Решение 4b2. Размещение пакета SDK в собственной сети CDN
Вместо того, чтобы пользователи скачали пакет SDK Application Insights из общедоступной сети CDN, вы можете разместить пакет SDK Application Insights в собственной конечной точке CDN. Мы рекомендуем использовать определенную версию пакета SDK (ai.2.#.#.min.js), чтобы упростить определение используемой версии. Кроме того, регулярно обновляйте пакет SDK до текущей версии (ai.2.min.js), чтобы можно было использовать любые исправления ошибок и новые функции, которые становятся доступными.
Решение 4b3. Использование пакетов npm для внедрения пакета SDK Application Insights
Вместо использования фрагмента кода и добавления общедоступных конечных точек CDN можно использовать пакеты npm для включения пакета SDK в состав собственных файлов JavaScript. Пакет SDK становится просто другим пакетом в собственных скриптах. Дополнительные сведения см. в разделе установки на основе npm на странице GitHub пакета SDK для Application Insights для JavaScript.
Примечание.
Мы рекомендуем использовать пакеты npm, а также использовать некоторую форму пакета JavaScript, чтобы помочь вам выполнить разделение кода и минификации.
Как и в фрагменте кода, те же блокирующие проблемы, которые отображаются здесь, могут повлиять на собственные скрипты (с помощью пакетов npm пакета SDK или без нее). В зависимости от приложения, пользователей и платформы вы можете реализовать что-то подобное логике в фрагменте кода, чтобы обнаружить и сообщить об этих проблемах.
Устранение неполадок с поддержкой карты источника для приложений JavaScript
В следующей таблице описываются некоторые проблемы, которые включают поддержку карты источника для приложений JavaScript, и она предлагает стратегии для устранения этих проблем.
Проблема | Описание |
---|---|
Обязательные параметры управления доступом на основе ролей Azure (Azure RBAC) в контейнере BLOB-объектов | Любой пользователь на портале, использующий эту функцию, должен быть назначен по крайней мере роль чтения данных BLOB-объектов хранилища для контейнера BLOB-объектов . Эту роль необходимо назначить любому, кто хочет использовать исходные карты с помощью этой функции. В зависимости от того, как был создан контейнер, эта роль может не быть автоматически назначена вам или вашей команде. |
Отсутствие сопоставителей с исходным кодом | Чтобы устранить эту проблему, выполните следующие действия.
|
Исправление предупреждения "Щелкните строки событий без значения parentId"
При использовании Application Insights и подключаемого модуля автоматической коллекции Click Analytics в приложении в книге Application Insights может появиться следующее предупреждение телеметрии: "Щелкните строки событий без значения parentId".
Причина
Эта проблема может возникать, если родительский идентификатор не указан в родительском HTML-элементе. Это условие приводит к активации события во всех его родительских элементах.
Решение
Чтобы устранить эту проблему, добавьте data-parentid
элемент или data-<customPrefix>-parentid
атрибут в родительский HTML-элемент. Ниже приведен пример HTML-кода:
<div data-heart-id="demo Header" data-heart-parentid="demo.Header" data-heart-parent-group="demo.Header.Group">
Следующие шаги
- Получение дополнительной помощи путем отправки проблемы на GitHub
- Отслеживать использование веб-страниц
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.