Поделиться через


Конфигурация пакета SDK JavaScript для Microsoft Azure Monitor Application Insights

Пакет SDK javaScript для приложение Azure Insights предоставляет конфигурацию для отслеживания, мониторинга и отладки веб-приложений.

Конфигурация пакета SDK

Эти поля конфигурации являются необязательными и по умолчанию имеют значение false, если иное не указано.

Инструкции по добавлению конфигурации пакета SDK см. в разделе "Добавление конфигурации пакета SDK".

Имя. Тип По умолчанию.
id учетной записи

Необязательный идентификатор учетной записи, если ваше приложение группирует пользователей по учетным записям. Без пробелов, запятых, точек с запятой, знаков равенства и вертикальных линий
строка ноль
добавитьКонтекстЗапроса

Предоставьте способ обогащения журналов зависимостей контекстом в начале вызова API. Значение по умолчанию не определено. Необходимо проверить, существует xhr ли xhr контекст. Необходимо проверить, существует ли и fetch request существует, если fetch response вы настроите fetch связанный контекст. В противном случае вы можете не получить необходимые данные.
(контекстЗапроса: IRequestionContext) => {[ключ: строка]: любой} не определено
ajaxPerfLookupDelay

Значение по умолчанию — 25 мс. Время ожидания перед повторной попыткой найти временные данные windows.performance для запроса Ajax; время указывается в миллисекундах и передается непосредственно в setTimeout().
числовой двадцать пять
идентификатор приложения (appId)

AppId используется для корреляции между клиентскими зависимостями AJAX с серверными запросами. Если API маяков включен, его нельзя использовать автоматически, но его можно задать вручную в конфигурации. Значение по умолчанию равно NULL
строка ноль
автоОтслеживаниеВремениПосещенияСтраницы

Если задано значение true, то при просмотре страницы фиксируется и отправляется в виде данных телеметрии время просмотра предыдущей инструментированной страницы, а для текущего просмотра запускается новый таймер. Это отправляется в качестве пользовательской метрики PageVisitTime в milliseconds и вычисляется с помощью функции Date now() (если она доступна) или возвращается к (new Date()).getTime(), если now() недоступна (IE8 или более ранняя версия). По умолчанию — false.
булевый ложь
ПреобразоватьНеопределено

Предоставьте пользователю возможность преобразовать неопределенное поле в определяемое пользователем значение.
any не определено
cookieCfg

По умолчанию использование cookie включено (полных список значений по умолчанию см. в описании параметров ICookieCfgConfig).
ICookieCfgConfig
[Необязательный параметр]
(с версии 2.6.0)
не определено
домен куки

Настраиваемый домен cookie. Полезно предоставить общий доступ к файлам cookie Application Insights в поддоменах.
(с версии 2.6.0) Если cookieCfg.domain он определен, он имеет приоритет над этим значением.
Псевдоним для cookieCfg.domain
[Необязательный параметр]
ноль
путь к файлу cookie

Настраиваемый путь к файлам cookie. Полезно, если вы хотите поделиться файлами cookie Application Insights через шлюз приложений.
Если cookieCfg.path он определен, он имеет приоритет.
Псевдоним для cookieCfg.path
[Необязательный параметр]
(с версии 2.6.0)
ноль
доменыЗаголовкаКорреляции

Включение заголовков корреляции для определенных доменов.
строка[] не определено
correlationHeaderExcludedDomains (исключенные домены заголовка корреляции)

Отключение заголовков корреляции для определенных доменов.
строка[] не определено
шаблоны исключения заголовков корреляции

Отключение заголовков корреляции с помощью регулярных выражений.
regex[] не определено
createPerfMgr

Функция обратного вызова, вызываемая для создания экземпляра IPerfManager по мере необходимости, когда enablePerfMgr включен, позволяет вам переопределить создание PerfManager() по умолчанию без необходимости setPerfMgr() после инициализации.
(ядро: IAppInsightsCore, notificationManager: INotificationManager) => IPerfManager не определено
customHeaders

Возможность пользователя предоставлять дополнительные заголовки при использовании настраиваемой конечной точки. Пользовательские хедеры не добавляются в момент завершения работы браузера при использовании отправителя маяка. Добавление пользовательских заголовков не поддерживается в IE9 или более ранних версиях.
[{header: string, value: string}] не определено
diagnosticLogInterval

(Внутренний параметр.) Интервал опроса (в мс) для внутренней очереди логирования.
числовой 10 000
отключить отслеживание AJAX

Если это значение равно true, автоматический сбор вызовов AJAX не производится. По умолчанию — false.
булевый ложь
Отключить использование файлов cookie

По умолчанию false. Логическое значение, указывающее, следует ли отключить использование файлов cookie пакетом SDK. Если значение true, пакет SDK не сохраняет или считывает данные из файлов cookie.
(с версии 2.6.0) Если cookieCfg.enabled определен, он имеет приоритет. Использование файлов cookie можно повторно включить после инициализации с помощью core.getCookieMgr().setEnabled(true).
Псевдоним для cookieCfg.enabled
[Необязательный параметр]
ложь
отключить заголовки корреляции

Если значение false, пакет SDK добавляет два заголовка ("Request-Id" и "Request-Context" для всех запросов зависимостей, чтобы сопоставить их с соответствующими запросами на стороне сервера. По умолчанию — false.
булевый ложь
отключитьАнализПотериДанных

Если значение false, внутренние буферы системы телеметрии проверяются при запуске для не отправленных элементов.
булевый правда
отключитьОтслеживаниеИсключений

Если это значение равно true, автоматический сбор исключений не производится. По умолчанию — false.
булевый ложь
disableFetchTracking

Значение по умолчанию для disableFetchTracking - false, что означает, что он включен. Однако в версиях до версии 2.8.10 она была отключена по умолчанию. Если установить значение true, запросы Fetch не будут собираться автоматически. Параметр по умолчанию изменился с true на false в версии 2.8.0.
булевый ложь
отключитьСбросПриUnload

По умолчанию false. Если это правда, метод flush не вызывается при возникновении события onBeforeUnload.
булевый ложь
disableIkeyDeprecationMessage

Отключите сообщение об ошибке о прекращении использования ключа инструментирования. Если значение true, сообщения об ошибках не отправляются.
булевый правда
ОтключитьПроверкуКлючаИнструментации (disableInstrumentationKeyValidation)

Если это значение равно true, проверка ключа инструментирования пропускается. По умолчанию используется значение false.
булевый ложь
отключить телеметрию

Если это значение равно true, данные телеметрии не собираются и не отправляются. По умолчанию — false.
булевый ложь
disableXhr (отключить XHR)

Не используйте XMLHttpRequest или XDomainRequest (для Internet Explorer < версии 9) по умолчанию попытайтесь использовать fetch() или sendBeacon. Если другой транспорт недоступен, он использует XMLHttpRequest
булевый ложь
режим распределённого трассирования (distributedTracingMode)

Задает режим распределенной трассировки. Если задан режим AI_AND_W3C или режим W3C, заголовки контекста трассировки W3C (traceparent/tracestate) создаются и включаются во все исходящие запросы. AI_AND_W3C обеспечивает обратную совместимость со всеми устаревшими службами, инструментированными с помощью Application Insights.
числовой или DistributedTracingModes DistributedTracing Modes.AI_AND_W3C
enableAjaxErrorStatusText

По умолчанию false. Если задано значение true, включите текст данных об ошибке ответа в событие зависимости от неудачных запросов AJAX.
булевый ложь
Включить отслеживание производительности Ajax

По умолчанию false. Флаг для включения возможности поиска и включения дополнительных временных метрик производительности окна браузера в сообщаемых метриках Ajax (XHR и fetch).
булевый ложь
включитьАвтоматическоеОтслеживаниеМаршрута

Автоматическое отслеживание изменений маршрута в одностраничных приложениях (SPA). Если задано значение true, каждое изменение маршрута отправляет новое представление Страницы в Application Insights. Изменения маршрута хэша (example.com/foo#bar) также регистрируются как новые просмотры страниц.
Примечание: Если включить это поле, не включайте history объект для конфигурации маршрутизатора React, так как вы получите несколько событий представления страниц.
булевый ложь
Включить CorsCorrelation

Если задано значение true, пакет SDK добавляет два заголовка ("Request-Id" и "Request-Context" для всех запросов CORS для сопоставления исходящих зависимостей AJAX с соответствующими запросами на стороне сервера. Значение по умолчанию — false.
булевый ложь
включитьОтладку

Если это значение равно true, для внутренних данных отладки выдаются исключения (они не заносятся в журнал) независимо от параметров журналирования пакета SDK. По умолчанию — false.
Примечание. Включение этого параметра приводит к удалению телеметрии при возникновении внутренней ошибки. Это может быть полезно для быстрого выявления проблем с конфигурацией или использованием пакета SDK. Если вы не хотите терять данные телеметрии во время отладки, использовать loggingLevelConsole или loggingLevelTelemetry вместо enableDebug.
булевый ложь
enablePerfMgr

При включении (true) он создает локальные perfEvents для кода, который был подготовлен и модифицирован для генерации perfEvents через вспомогательную функцию doPerf(). Его можно использовать для выявления проблем с производительностью в пакете SDK в зависимости от вашего использования или при необходимости в вашем собственном инструментированном коде.
булевый ложь
ВключитьОтслеживаниеЗаголовковЗапросов

Если задано значение true, заголовки запросов AJAX и Fetch отслеживаются, значение по умолчанию равно false. Если параметр ignoreHeaders не настроен, заголовки Authorization и X-API-Key не регистрируются.
булевый ложь
включить отслеживание заголовков ответов

Если задано значение true, заголовки ответа запроса AJAX и Fetch отслеживаются, значение по умолчанию равно false. Если параметр ignoreHeaders не настроен, заголовок WWW-Authenticate не логгируется.
булевый ложь
enableSessionStorageBuffer

Значение true по умолчанию. Если это значение равно true, в хранилище сеанса находится буфер со всеми неотправленными данными телеметрии. Буфер восстанавливается при загрузке страницы.
булевый правда
включитьОтслеживаниеНеперехваченныхОтклоненийОбещаний

Если значение true, необработанные отказы от обещаний автоматически обрабатываются как ошибка JavaScript. Если disableExceptionTracking имеет значение true (не отслеживайте исключения), значение конфигурации игнорируется и необработанные отказы от обещаний не сообщаются.
булевый ложь
Ограничение событий в памяти

Количество событий, которые можно хранить в памяти, прежде чем пакет SDK начнет удалять события, если не используется хранилище сеансов (по умолчанию).
число/номер 10 000
Исключить запрос из шаблонов автоматического отслеживания

Укажите способ исключения определенного маршрута из автоматического отслеживания для запроса XMLHttpRequest или Fetch. Если URL-адрес запроса Ajax или fetch соответствует шаблонам регулярных выражений, автоматическое отслеживание отключается. Значение по умолчанию не определено.
string[] | RegExp[] не определено
функцияВключение

Настройка сведений о выборе компонента.

Это поле конфигурации доступно только в версии 3.0.3 и более поздних версиях.
IFeatureOptIn не определено
длина идентификатора

Определяет длину по умолчанию, используемую для создания новых случайных сеансов и идентификаторов пользователей. Значение по умолчанию равно 22, предыдущее значение по умолчанию равно 5 (версия 2.5.8 или меньше), если необходимо сохранить предыдущую максимальную длину, необходимо задать значение 5.
числовой двадцать два
игнорировать заголовки

Заголовки запросов и ответов AJAX и ответов, которые следует игнорировать в данных журнала. Чтобы переопределить или отменить значение по умолчанию, добавьте массив со всеми заголовками, которые следует исключить или пустой массив в конфигурацию.
строка[] [«Авторизация», «Икс-Эй-Пи-Ай-Ключ», «Вэ-Дабл-Ю-Вэ-Дабл-Ю-Аутентификация»]
isBeaconApiDisabled

Если условие имеет значение false, пакет SDK отправляет все данные телеметрии с помощью Beacon API.
булевый правда
isBrowserLinkTrackingEnabled (Включено ли отслеживание ссылок в браузере)

По умолчанию — false. Если значение true, пакет SDK отслеживает все Browser Link запросы.
булевый ложь
отключенаПовторнаяПопытка

По умолчанию false. Если false, повторите попытку при кодах 206 (частично успешное завершение), 408 (истекло время ожидания), 429 (слишком много запросов), 500 (внутренняя ошибка сервера), 503 (служба недоступна) и 0 (вне сети, только в случае обнаружения).
булевый ложь
использованиеХранилищаВыключено

Если значение true, пакет SDK не сохраняет или считывает данные из локального и сеансового хранилища. По умолчанию — false.
булевый ложь
Уровень логирования консоли

Вывод внутренних ошибок Application Insights на консоль.
0: выкл.,
1. Критические ошибки, только
2: все (ошибки и предупреждения)
числовой 0
уровень ведения журнала телеметрии

Отправка внутренних ошибок Application Insights в качестве данных телеметрии.
0: выкл.,
1. Критические ошибки, только
2: все (ошибки и предупреждения)
числовой 1
maxAjaxCallsPerView (максимальное количество вызовов AJAX на просмотр)

По умолчанию 500 — контролирует количество вызовов Ajax, отслеживаемых для каждого представления страницы. Задайте значение -1, чтобы отслеживать все вызовы AJAX на странице (без ограничений).
числовой 500
maxAjaxPerfLookupAttempts

Значение по умолчанию — 3. Максимальное количество раз, когда требуется искать время выполнения window.performance (если доступно). Не все браузеры заполняют окно.performance, прежде чем сообщать о завершении запроса XHR. Для запросов на получение он добавляется после завершения.
числовой 3
максимальный интервал пакетирования

Продолжительность пакетного сбора данных телеметрии перед отправкой (в миллисекундах).
числовой 15000
максимальный размер пакета в байтах

Максимальный размер пакета телеметрии. Если размер пакета превышает этот лимит, он немедленно отправляется и запускается новый пакет.
числовой 10 000
префикс имени

Необязательное значение, используемое в качестве суффикса имени для localStorage и имени cookie сессии.
строка не определено
onunloadDisableBeacon

По умолчанию false. При закрытии вкладки пакет SDK отправляет все оставшиеся данные телеметрии с помощью API Маяка.
булевый ложь
onunloadDisableFetch

Если поддерживается функция keepalive в fetch, не используйте её для отправки событий во время выгрузки, так как она всё равно может вернуться к fetch() без keepalive.
булевый ложь
переопределитьПродолжительностьПросмотраСтраницы

Если это значение равно true, trackPageView по умолчанию записывает окончание интервала сеанса просмотра страницы при вызове trackPageView. Если это значение равно false и для trackPageView не задана пользовательское значение длительности, то характеристики просмотра страницы вычисляются с помощью API времени навигации. По умолчанию — false.
булевый ложь
perfEvtsSendAll

Если включен параметр enablePerfMgr и IPerfManager инициирует INotificationManager.perfEvent(), этот флаг определяет, инициируется ли (и отправляется всем прослушивателям) событие для всех (true) или только для "родительских" (значение false, вариант <по умолчанию>) событий.
Родительское событие IPerfEvent — это событие, где в момент его создания никакое другое событие IPerfEvent не выполняется, и его свойство родительское не равно null и не неопределено. С версии 2.5.7
булевый ложь
Процент выборки

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

Задает имя расширения пакета SDK. Допускаются только алфавитные буквы. Имя расширения добавляется в качестве префикса к тегу ai.internal.sdkVersion (например, ext_javascript:2.0.0). Значение по умолчанию — null.
строка ноль
sessionCookiePostfix

Необязательное значение, которое используется в качестве постфикса для имени cookie сеанса. Если не задано, префикс имени используется в качестве суффикса для имени cookie сеанса.
строка не определено
истечениеСессииМс

Сеанс регистрируется, если он продолжался в течение этого времени в миллисекундах. Значение по умолчанию — 24 часа
числовой 86400000
ОбновлениеСессииМс

Сеанс регистрируется, если пользователь неактивен в течение этого периода времени в миллисекундах. Значение по умолчанию — 30 минут.
числовой 1800000
ThrottleMgrCfg

Задайте конфигурацию throttle mgr по ключу.

Это поле конфигурации доступно только в версии 3.0.3 и более поздних версиях.
{[key: number]: IThrottleMgrConfig} не определено
userCookiePostfix

Необязательное значение, которое используется в качестве суффикса имени пользовательского куки. Если не определено, к имени файла cookie пользователя не добавляется постфикс.
строка не определено

Распределенная трассировка

Современные архитектуры облачных и микрослужб включили простые, независимо развертываемые службы, которые сокращают затраты при увеличении доступности и пропускной способности. Тем не менее, это сделало всю систему более сложной для анализа и отладки. Распределенная трассировка решает эту проблему, предоставляя профилировщик производительности, который работает как стеки вызовов для облачных архитектур и архитектур микросервисов.

Azure Monitor предоставляет два способа использования распределенных данных трассировки: представление диагностики транзакций для одной транзакции или запроса и представления карты приложения , чтобы показать, как системы взаимодействуют.

Application Insights может отслеживать каждый компонент отдельно и обнаруживать, какой компонент отвечает за сбои или снижение производительности с помощью корреляции распределенной телеметрии. В этой статье объясняется модель данных, методы распространения контекста, протоколы и реализация тактики корреляции на разных языках и платформах, используемых Application Insights.

Активировать распределенную трассировку через Application Insights с помощью автоинструментации или SDK.

Агенты Application Insights и пакеты SDK для .NET, .NET Core, Java, Node.jsи JavaScript поддерживают собственную распределенную трассировку.

Если SDK Application Insights установлено и настроено правильно, то данные трассировки автоматически собираются для популярных фреймворков, библиотек и технологий с помощью автоматических сборщиков зависимостей SDK. Полный список поддерживаемых технологий доступен в документации по автоколлекции зависимостей.

Любые технологии также можно отслеживать вручную с помощью вызова TrackDependency в TelemetryClient.

Модель данных для корреляции телеметрии

Application Insights определяет модель данных для корреляции распределенной телеметрии. Для связывания телеметрии с логической операцией каждый элемент телеметрии имеет поле operation_Idконтекста. Каждый элемент телеметрии в распределенной трассировке использует этот идентификатор. Таким образом, даже если вы теряете данные телеметрии из одного слоя, вы по-прежнему можете связать данные телеметрии, сообщаемые другими компонентами.

Распределенная логическая операция обычно состоит из набора небольших операций, обрабатываемых одним из компонентов. Запрос телеметрии определяет эти операции. Каждый элемент телеметрии запроса имеет свой собственный id идентификатор, определяющий его уникально и глобально. И все элементы телеметрии (например, трассировки и исключения), связанные с запросом, должны установить operation_parentId в значение запроса id.

Телеметрия зависимостей представляет каждую исходящую операцию, например вызов HTTP к другому компоненту. Он также определяет свой собственный id, который является глобально уникальным. Запрос телеметрии, инициированный этим вызовом зависимостей, использует это id как его operation_parentId.

Вы можете создать представление распределенной логической операции с помощью operation_Id, operation_parentId, request.id и dependency.id. Эти поля также определяют причинно-следственный порядок вызовов телеметрии.

В среде микрослужб трассировки из компонентов могут направляться в разные элементы хранилища. Каждый компонент может иметь собственную строку подключения в Application Insights. Чтобы получить данные телеметрии для логической операции, Application Insights запрашивает данные из каждого элемента хранилища.

Если количество элементов хранилища значительное, вам потребуется указание о том, где искать дальше. Модель данных Application Insights определяет два поля для решения этой проблемы: request.source и dependency.target. Первое поле определяет компонент, инициирующий запрос зависимостей. Второе поле определяет, какой компонент вернул ответ вызова зависимостей.

Сведения о запросах из нескольких разрозненных экземпляров см. в разделе "Запрос данных в рабочих пространствах Log Analytics, приложениях и ресурсах в Azure Monitor".

Example

Рассмотрим пример. Приложение под названием "Цены акций" показывает текущую рыночную цену акций с помощью внешнего API с именем Stock. Приложение "Цены на акции" имеет страницу с именем "Фондовая страница", которая открывается в веб-браузере клиента с помощью GET /Home/Stock. Приложение запрашивает API stock с помощью http-вызова GET /api/stock/value.

Чтобы проанализировать полученную телеметрию, выполните запрос:

(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id

В результатах все элементы телеметрии используют общий корень operation_Id. При вызове Ajax на странице новый уникальный идентификатор (qJSXU) назначается телеметрии зависимостей, а идентификатор pageView используется как operation_ParentId. Затем запрос сервера использует идентификатор Ajax в качестве operation_ParentId.

тип элемента имя Идентификатор operation_ParentId идентификатор_операции
pageView Страница акций STYz STYz
зависимость GET /Home/Stock qJSXU STYz STYz
request GET Главная/Запасы KqKwlrSt9PA= qJSXU STYz
зависимость GET /api/stock/value bBrf2L7mm2g= KqKwlrSt9PA= STYz

При вызове GET /api/stock/value внешней службы необходимо знать идентификацию сервера, чтобы можно было соответствующим образом установить поле dependency.target. Если внешняя служба не поддерживает мониторинг, target устанавливается в имя узла службы. Примером является stock-prices-api.com. Но если служба идентифицирует себя путем возврата предопределенного заголовка HTTP, target содержит удостоверение службы, позволяющее Application Insights создавать распределенную трассировку путем запроса телеметрии из этой службы.

Заголовки корреляции с помощью W3C TraceContext

Application Insights переходит в контекст трассировки W3C, который определяет:

  • traceparent: содержит глобальный уникальный идентификатор операции и уникальный идентификатор вызова.
  • tracestate: содержит контекст трассировки для конкретной системы.

Последняя версия пакета SDK Application Insights поддерживает протокол Trace-Context, но может потребоваться принять его. (Поддерживается обратная совместимость с предыдущим протоколом корреляции, поддерживаемым пакетом SDK Application Insights.)

Протокол HTTP корреляции, также называемый Request-Id, устарел. Этот протокол определяет два заголовка:

  • Request-Id: несет глобально уникальный идентификатор вызова.
  • Correlation-Context: содержит коллекцию пар "имя-значение" свойств распределенной трассировки.

Application Insights также определяет расширение для протокола HTTP корреляции. Он использует Request-Context пары "имя-значение" для распространения коллекции свойств, используемых непосредственным вызывающим или вызываемой стороной. Пакет SDK Application Insights использует этот заголовок для задания полей dependency.target и request.source.

Модели данных W3C Trace-Context и Application Insights сопоставляются следующим образом:

Application Insights W3C TraceContext
Id и RequestDependency parent-id
Operation_Id trace-id
Operation_ParentId родительский идентификатор родительского диапазона этого диапазона. Это поле должно быть пустым, если это корневой диапазон.

Дополнительные сведения см. в модели данных телеметрии Application Insights.

Включение поддержки распределенной трассировки W3C

Эта функция включена по умолчанию для JavaScript, а заголовки автоматически включаются, когда домен страницы размещения совпадает с доменом, в который отправляются запросы (например, страница размещения и example.com запросы Ajax отправляются в example.com). Чтобы изменить режим распределенной трассировки, используйте distributedTracingMode поле конфигурации. AI_AND_W3C предоставляется по умолчанию для обратной совместимости с любыми устаревшими службами, инструментируемыми Application Insights.

Если запросы XMLHttpRequest или Fetch Ajax отправляются другому узлу домена, включая поддомены, заголовки корреляции по умолчанию не включаются. Чтобы включить эту функцию, задайте значение в поле конфигурации enableCorsCorrelation как true. Если задано значение enableCorsCorrelationtrue, все запросы XMLHttpRequest и Fetch Ajax включают заголовки корреляции. В результате, если приложение на сервере, который вызывается, не поддерживает traceparent заголовок, запрос может завершиться ошибкой в зависимости от того, может ли браузер или версия проверить запрос на основе того, какие заголовки принимает сервер. Можно использовать correlationHeaderExcludedDomains поле конфигурации для исключения домена сервера из внедрения заголовка корреляции между компонентами. Например, вы можете использовать correlationHeaderExcludedDomains: ['*.auth0.com'] для исключения заголовков корреляции из запросов, отправляемых поставщику удостоверений Auth0.

Это важно

Сведения обо всех конфигурациях, необходимых для включения корреляции, см. в документации по корреляции JavaScript.

Фильтрация и предварительная обработка телеметрии

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

  • Фильтрация может изменять или удалять данные телеметрии перед отправкой из пакета SDK путем реализации ITelemetryProcessor. Например, можно уменьшить объем телеметрии, исключив запросы от роботов. В отличие от выборки, у вас есть полный контроль над отправкой или отбрасыванием данных, но это влияет на любые метрики, основанные на агрегированных журналах. В зависимости от способа удаления элементов вы также можете потерять возможность перемещаться между связанными элементами.

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

  • Выборка уменьшает объем данных телеметрии, не влияя на статистику. Он объединяет связанные точки данных, чтобы можно было перемещаться между ними при диагностике проблемы. На портале общие показатели умножаются, чтобы компенсировать отклонения выборки.

Замечание

API пакета SDK используется для отправки пользовательских событий и метрик.

Filtering

Этот метод обеспечивает прямой контроль над тем, что включается или исключается из потока телеметрии. Фильтрация может использоваться для исключения элементов телеметрии из передачи в Application Insights. Фильтрацию можно использовать с сэмплированием или отдельно.

Чтобы отфильтровать данные телеметрии, необходимо написать обработчик телеметрии и зарегистрировать его в TelemetryConfiguration. Все данные телеметрии проходят через процессор. Вы можете удалить его из потока или передать его следующему процессору в цепочке. Данные телеметрии из стандартных модулей, таких как сборщик HTTP-запросов и сборщик зависимостей, а также данные телеметрии, которые вы отслеживали самостоятельно. Например, можно отфильтровать данные телеметрии о запросах от роботов или успешных вызовов зависимостей.

Предупреждение

Фильтрация данных телеметрии, отправляемой из SDK с помощью процессоров, может исказить статистику, которую вы видите на портале, и затруднить отслеживание связанных элементов.

Вместо этого рекомендуется использовать выборку.

Веб-приложения JavaScript

Данные телеметрии можно фильтровать из веб-приложений JavaScript с помощью ITelemetryInitializer.

  1. Создайте функцию обратного вызова инициализатора телеметрии. Функция обратного вызова принимает ITelemetryItem в качестве параметра, который является событием, которое обрабатывается. Возврат false из этого обратного вызова приводит к тому, что элемент телеметрии отфильтровывается.

    var filteringFunction = (envelope) => {
      if (envelope.data.someField === 'tobefilteredout') {
        return false;
      }
      return true;
    };
    
  2. Добавьте обратный вызов инициализатора телеметрии:

    appInsights.addTelemetryInitializer(filteringFunction);
    

ITelemetryProcessor и ITelemetryInitializer

Какова разница между процессорами телеметрии и инициализаторами телеметрии?

  • Есть некоторые пересечения в том, что вы можете делать с ними. Их можно использовать для добавления или изменения свойств телеметрии, хотя мы рекомендуем использовать инициализаторы для этой цели.
  • Инициализаторы телеметрии всегда выполняются перед процессорами телеметрии.
  • Инициализаторы телеметрии могут вызываться несколько раз. По соглашению они не задают какое-либо свойство, которое уже было задано.
  • Процессоры телеметрии позволяют полностью заменить или отменить элемент телеметрии.
  • Все зарегистрированные инициализаторы телеметрии вызываются для каждого элемента телеметрии. Для процессоров телеметрии пакет SDK гарантирует вызов первого процессора телеметрии. Определение того, будут ли вызваны остальные процессоры, осуществляется предыдущими процессорами телеметрии.
  • Инициализаторы телеметрии используются для обогащения телеметрии дополнительными свойствами или переопределения существующей. Используйте обработчик телеметрии для фильтрации телеметрии.

Добавление и изменение свойств

Инициализаторы телеметрии используются для обогащения телеметрии дополнительными сведениями или переопределения свойств телеметрии, заданных стандартными модулями телеметрии.

Например, Application Insights для веб-пакета собирает данные телеметрии о HTTP-запросах. По умолчанию он помечает любой запрос с кодом ответа >>=400 как неудачный. Если вместо этого вы хотите рассматривать 400 как успешный, можно предоставить инициализатор телеметрии, который задает свойство успешности.

Если вы предоставляете инициализатор телеметрии, он вызывается всякий раз, когда вызывается любой из методов Track*(). Этот инициализатор включает Track() методы, вызываемые стандартными модулями телеметрии. По соглашению эти модули не задают никаких свойств, которые уже были заданы инициализатором. Инициализаторы телеметрии вызываются перед вызовом процессоров телеметрии, поэтому любые обогащения, выполненные инициализаторами, видны процессорам.

Инициализаторы телеметрии JavaScript

При необходимости вставьте инициализатор телеметрии JavaScript. Дополнительные сведения о инициализаторах телеметрии для пакета SDK JavaScript Application Insights см. в разделе " Инициализаторы телеметрии".

Вставьте инициализатор телеметрии, добавив функцию обратного вызова onInit в конфигурацию скрипта загрузчика пакета SDK JavaScript (Web):

<script type="text/javascript">
!(function (cfg){function e(){cfg.onInit&&cfg.onInit(n)}var x,w,D,t,E,n,C=window,O=document,b=C.location,q="script",I="ingestionendpoint",L="disableExceptionTracking",j="ai.device.";"instrumentationKey"[x="toLowerCase"](),w="crossOrigin",D="POST",t="appInsightsSDK",E=cfg.name||"appInsights",(cfg.name||C[t])&&(C[t]=E),n=C[E]||function(g){var f=!1,m=!1,h={initialize:!0,queue:[],sv:"8",version:2,config:g};function v(e,t){var n={},i="Browser";function a(e){e=""+e;return 1===e.length?"0"+e:e}return n[j+"id"]=i[x](),n[j+"type"]=i,n["ai.operation.name"]=b&&b.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(h.sv||h.version),{time:(i=new Date).getUTCFullYear()+"-"+a(1+i.getUTCMonth())+"-"+a(i.getUTCDate())+"T"+a(i.getUTCHours())+":"+a(i.getUTCMinutes())+":"+a(i.getUTCSeconds())+"."+(i.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z",iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}},ver:undefined,seq:"1",aiDataContract:undefined}}var n,i,t,a,y=-1,T=0,S=["js.monitor.azure.com","js.cdn.applicationinsights.io","js.cdn.monitor.azure.com","js0.cdn.applicationinsights.io","js0.cdn.monitor.azure.com","js2.cdn.applicationinsights.io","js2.cdn.monitor.azure.com","az416426.vo.msecnd.net"],o=g.url||cfg.src,r=function(){return s(o,null)};function s(d,t){if((n=navigator)&&(~(n=(n.userAgent||"").toLowerCase()).indexOf("msie")||~n.indexOf("trident/"))&&~d.indexOf("ai.3")&&(d=d.replace(/(\/)(ai\.3\.)([^\d]*)$/,function(e,t,n){return t+"ai.2"+n})),!1!==cfg.cr)for(var e=0;e<S.length;e++)if(0<d.indexOf(S[e])){y=e;break}var n,i=function(e){var a,t,n,i,o,r,s,c,u,l;h.queue=[],m||(0<=y&&T+1<S.length?(a=(y+T+1)%S.length,p(d.replace(/^(.*\/\/)([\w\.]*)(\/.*)$/,function(e,t,n,i){return t+S[a]+i})),T+=1):(f=m=!0,s=d,!0!==cfg.dle&&(c=(t=function(){var e,t={},n=g.connectionString;if(n)for(var i=n.split(";"),a=0;a<i.length;a++){var o=i[a].split("=");2===o.length&&(t[o[0][x]()]=o[1])}return t[I]||(e=(n=t.endpointsuffix)?t.location:null,t[I]="https://"+(e?e+".":"")+"dc."+(n||"services.visualstudio.com")),t}()).instrumentationkey||g.instrumentationKey||"",t=(t=(t=t[I])&&"/"===t.slice(-1)?t.slice(0,-1):t)?t+"/v2/track":g.endpointUrl,t=g.userOverrideEndpointUrl||t,(n=[]).push((i="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",o=s,u=t,(l=(r=v(c,"Exception")).data).baseType="ExceptionData",l.baseData.exceptions=[{typeName:"SDKLoadFailed",message:i.replace(/\./g,"-"),hasFullStack:!1,stack:i+"\nSnippet failed to load ["+o+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(b&&b.pathname||"_unknown_")+"\nEndpoint: "+u,parsedStack:[]}],r)),n.push((l=s,i=t,(u=(o=v(c,"Message")).data).baseType="MessageData",(r=u.baseData).message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+l+")").replace(/\"/g,"")+'"',r.properties={endpoint:i},o)),s=n,c=t,JSON&&((u=C.fetch)&&!cfg.useXhr?u(c,{method:D,body:JSON.stringify(s),mode:"cors"}):XMLHttpRequest&&((l=new XMLHttpRequest).open(D,c),l.setRequestHeader("Content-type","application/json"),l.send(JSON.stringify(s)))))))},a=function(e,t){m||setTimeout(function(){!t&&h.core||i()},500),f=!1},p=function(e){var n=O.createElement(q),e=(n.src=e,t&&(n.integrity=t),n.setAttribute("data-ai-name",E),cfg[w]);return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=a,n.onerror=i,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||a(0,t)},cfg.ld&&cfg.ld<0?O.getElementsByTagName("head")[0].appendChild(n):setTimeout(function(){O.getElementsByTagName(q)[0].parentNode.appendChild(n)},cfg.ld||0),n};p(d)}cfg.sri&&(n=o.match(/^((http[s]?:\/\/.*\/)\w+(\.\d+){1,5})\.(([\w]+\.){0,2}js)$/))&&6===n.length?(d="".concat(n[1],".integrity.json"),i="@".concat(n[4]),l=window.fetch,t=function(e){if(!e.ext||!e.ext[i]||!e.ext[i].file)throw Error("Error Loading JSON response");var t=e.ext[i].integrity||null;s(o=n[2]+e.ext[i].file,t)},l&&!cfg.useXhr?l(d,{method:"GET",mode:"cors"}).then(function(e){return e.json()["catch"](function(){return{}})}).then(t)["catch"](r):XMLHttpRequest&&((a=new XMLHttpRequest).open("GET",d),a.onreadystatechange=function(){if(a.readyState===XMLHttpRequest.DONE)if(200===a.status)try{t(JSON.parse(a.responseText))}catch(e){r()}else r()},a.send())):o&&r();try{h.cookie=O.cookie}catch(k){}function e(e){for(;e.length;)!function(t){h[t]=function(){var e=arguments;f||h.queue.push(function(){h[t].apply(h,e)})}}(e.pop())}var c,u,l="track",d="TrackPage",p="TrackEvent",l=(e([l+"Event",l+"PageView",l+"Exception",l+"Trace",l+"DependencyData",l+"Metric",l+"PageViewPerformance","start"+d,"stop"+d,"start"+p,"stop"+p,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),h.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4},(g.extensionConfig||{}).ApplicationInsightsAnalytics||{});return!0!==g[L]&&!0!==l[L]&&(e(["_"+(c="onerror")]),u=C[c],C[c]=function(e,t,n,i,a){var o=u&&u(e,t,n,i,a);return!0!==o&&h["_"+c]({message:e,url:t,lineNumber:n,columnNumber:i,error:a,evt:C.event}),o},g.autoExceptionInstrumented=!0),h}(cfg.cfg),(C[E]=n).queue&&0===n.queue.length?(n.queue.push(e),n.trackPageView({})):e();})({
src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
onInit: function (sdk) {
    sdk.addTelemetryInitializer(function (envelope) {
    envelope.data = envelope.data || {};
    envelope.data.someField = 'This item passed through my telemetry initializer';
    });
}, // Once the application insights instance has loaded and initialized this method will be called
// sri: false, // Custom optional value to specify whether fetching the snippet from integrity file and do integrity check
cfg: { // Application Insights Configuration
    connectionString: "YOUR_CONNECTION_STRING"
}});
</script>

Сводку по нестандартным свойствам, доступным в элементе телеметрии, см. в статье Application Insights Export Data Model.

Вы можете добавить столько инициализаторов, сколько вам нравится. Они вызываются в том порядке, в котором добавлены.

Добавьте имя облачной роли и экземпляр облачной роли

Используйте инициализатор телеметрии для установки тегов ai.cloud.role и ai.cloud.roleInstance. Эти теги определяют, как компонент отображается в схеме приложений в Azure Monitor.

appInsights.queue.push(() => {
appInsights.addTelemetryInitializer((envelope) => {
  envelope.tags["ai.cloud.role"] = "your role name";
  envelope.tags["ai.cloud.roleInstance"] = "your role instance";
});
});

Начиная с версии 2.6.0, SDK JavaScript Azure Application Insights предоставляет управление куками на основе экземпляров, которое можно отключить и повторно включить после инициализации.

Если вы отключили файлы cookie при инициализации с помощью конфигураций disableCookiesUsage или cookieCfg.enabled, вы можете снова включить их, используя функцию setEnabled объекта ICookieMgr.

Управление файлами cookie на основе экземпляров заменяет предыдущие глобальные функции disableCookies()CoreUtils , а setCookie()getCookie()deleteCookie()также .

Чтобы воспользоваться преимуществами оптимизации кода, представленными в версии 2.6.0, рекомендуется больше не использовать глобальные функции.

ICookieMgrConfig — это конфигурация для управления файлами cookie на основе экземпляров, добавленная в версии 2.6.0. Указанные параметры позволяют включить или отключить использование файлов cookie пакетом SDK. Вы также можете настроить пользовательские домены и пути cookie, а также настроить функции для получения, настройки и удаления файлов cookie.

Параметры ICookieMgrConfig определены в следующей таблице.

Имя. Тип По умолчанию. Описание
включена булевый правда Текущий экземпляр пакета SDK использует это логическое значение, чтобы указать, включен ли использование файлов cookie. Если значение false, экземпляр пакета SDK, инициализированный этой конфигурацией, не сохраняет или считывает данные из файлов cookie.
домен строка ноль Настраиваемый домен cookie. Полезно предоставить общий доступ к файлам cookie Application Insights в поддоменах. Если это значение не указано, используется значение корневого параметра cookieDomain.
путь строка / Указывает путь для использования в файле cookie; если путь не задан, используется значение по умолчанию из корня cookiePath.
игнорироватьКуки строка[] не определено Укажите имена файлов cookie, которые следует игнорировать, это приводит к тому, что любое соответствующее имя файла cookie никогда не считывается или не записывается. Они по-прежнему могут быть явно удалены или удалены. Вам не нужно повторять имя в blockedCookies конфигурации. (с версии 2.8.8)
заблокированныеcookies строка[] не определено Укажите имена файлов cookie, которые никогда не записываются. Он предотвращает создание или обновление любого имени файла cookie, но они по-прежнему могут быть прочитаны, если они также не включены в ignoreCookies. Они по-прежнему могут быть удалены или удалены явным образом. Если он не указан, по умолчанию выбирается тот же список в ignoreCookies. (с версии 2.8.8)
getCookie (name: string) => string ноль Функция для получения именованного значения cookie, если она не указана, использует внутренний анализ файлов cookie или кэширование.
установитьКуки (name: string, value: string) => void ноль Функция для установки именованного файла cookie с указанным значением. Вызывается только при добавлении или обновлении файла cookie.
delCookie (name: string, value: string) => void ноль Функция для удаления именованного файла cookie с указанным значением. Отделена от функции setCookie, чтобы избежать необходимости анализировать значение на предмет того, добавляется или удаляется файл cookie. Если это не предоставлено, используется внутренний разбор и кэширование файлов cookie.

Исходная карта

Поддержка исходной карты помогает отлаживать минифицированный код JavaScript с возможностью отмены минифицированного вызова телеметрии исключений.

  • Совместимы со всеми текущими интеграциями на панели Сведения об исключении
  • Поддерживает все текущие и будущие пакеты SDK JavaScript, включая Node.JS, без необходимости обновления пакета SDK

Application Insights поддерживает загрузку карт источников в контейнер блобов учетной записи хранения Azure. С помощью карт исходного кода можно преобразовать стеки вызовов из минифицированного вида, найденные на странице сведений о сквозных транзакциях. Вы также можете использовать карты источников, чтобы отменить любое исключение, отправленное пакетом SDK JavaScript или пакетом SDK для Node.js.

Снимок экрана, показывающий выбор параметра для разминифицирования стека вызовов путем подключения к учетной записи хранения.

Создание учетной записи для хранения и контейнера для блобов

Если у вас уже есть учетная запись хранения или BLOB-контейнер, вы можете пропустить этот шаг.

  1. Создайте новую учетную запись хранения.

  2. Создайте контейнер объектов blob в вашей учетной записи хранения. Установите уровень общего доступа на Приватный, чтобы ваши исходные карты не были доступны публично.

    Снимок экрана: установка уровня доступа к контейнеру для private.

Отправьте исходные карты в контейнер с BLOB-объектами

Интегрируйте конвейер непрерывного развертывания с вашей учетной записью хранения, настроив его для автоматической отправки карт исходного кода в настроенный контейнер объектов BLOB.

Вы можете передать исходные карты в контейнер Хранилище BLOB-объектов Azure с той же структурой папок, с которыми они были скомпилированы и развернуты. Распространенный вариант использования — добавлять версию перед названием папки развертывания, например 1.2.3/static/js/main.js. При развертывании минифицированного кода через контейнер Azure Blob под названием sourcemaps, конвейер пытается получить исходную карту, расположенную по адресу sourcemaps/1.2.3/static/js/main.js.map.

Если вы используете Azure Pipelines для непрерывной сборки и развертывания приложения, добавьте задачу копирования файлов Azure в конвейер для автоматической отправки исходных карт.

Снимок экрана: добавление задачи копирования файлов Azure в конвейер для отправки исходных карт в Хранилище BLOB-объектов Azure.

Настройте ресурс Application Insights с учетной записью хранения исходных карт.

У вас есть два варианта настройки ресурса Application Insights с учетной записью хранения карт исходного кода.

Вкладка "Информация о сквозных транзакциях от начала до конца"

На вкладке Детали сквозной транзакции выберите Деминифицировать. Настройте ресурс, если он не настроен.

  1. На портале Azure просмотрите сведения о минимизированном исключении.
  2. Выберите Unminify.
  3. Если ресурс не настроен, настройте его.
Вкладка Свойства

Чтобы настроить или изменить учетную запись хранения или контейнер BLOB-объектов, связанный с ресурсом Application Insights:

  1. Перейдите на вкладку "Свойства " ресурса Application Insights.

  2. Выберите "Изменить исходный контейнер Blob".

  3. Выберите другой контейнер Blob в качестве контейнера карты источника.

  4. Выберите Применить.

    Снимок экрана: перенастройка выбранного контейнера BLOB-объектов Azure на панели

Просмотр нераминифицированного стека вызовов

Чтобы просмотреть не минифицированный стек вызовов, выберите элемент телеметрии исключений в портале Azure, найдите исходные карты, соответствующие стеку вызовов, и перетащите исходные карты в стек вызовов в портале Azure. Исходная карта должна иметь то же имя, что и исходный файл кадра стека, но с расширением map .

Если возникают проблемы, связанные с поддержкой карт источника для приложений JavaScript, см. статью "Устранение неполадок с поддержкой карты источника" для приложений JavaScript.

Анимация, демонстрирующая функцию unminify.

Древовидная тряска

Древовидная тряска устраняет неиспользуемый код из окончательного пакета JavaScript.

Чтобы воспользоваться преимуществами тряски дерева, импортируйте только необходимые компоненты пакета SDK в код. Таким образом, неиспользуемый код не включается в окончательный пакет, уменьшая его размер и повышая производительность.

Усовершенствования и рекомендации по древовидной тряски

В версии 2.6.0 мы объявили устаревшими и удалили внутреннее использование этих статических вспомогательных классов, чтобы улучшить поддержку алгоритмов tree-shaking. Он позволяет пакетам npm безопасно удалять неиспользуемый код.

  • CoreUtils
  • EventHelper
  • Util
  • UrlHelper
  • DateTimeUtils
  • ConnectionStringParser

Теперь функции экспортируются в виде корней верхнего уровня из модулей, что упрощает рефакторинг кода для улучшения тряски дерева.

Статические классы были изменены на константные объекты, ссылающиеся на новые экспортированные функции, и будущие изменения планируются для дальнейшего рефакторинга ссылок.

Оптимизация кода с удалением устаревших функций и их замены.

Этот раздел применяется только к вам, если вы используете устаревшие функции и хотите оптимизировать размер пакета. Мы рекомендуем использовать функции замены для уменьшения размера и поддержки всех версий Internet Explorer.

Существующий Замена
CoreUtils @microsoft/applicationinsights-core-js
CoreUtils._canUseCookies Нет. Не используйте это, так как это приводит к включению всех компонентов CoreUtils в окончательный код.
Рефакторируйте обработку файлов cookie, чтобы использовать appInsights.getCookieMgr().setEnabled(true/false) для задания значения и appInsights.getCookieMgr().isEnabled() для проверки значения.
CoreUtils.isTypeof isTypeof
CoreUtils.isUndefined я_неопределён
CoreUtils.isNullOrUndefined (Функция для проверки является ли значение null или undefined) являетсяNullИлиНеопределено
CoreUtils.hasOwnProperty метод hasOwnProperty
CoreUtils.isFunction isFunction
CoreUtils.isObject являетсяОбъектом
CoreUtils.isDate isDate
CoreUtils.isArray isArray
CoreUtils.isError Ошибка
CoreUtils.isString isString
CoreUtils.isNumber isNumber
CoreUtils.isBoolean isBoolean
CoreUtils.toISOString toISOString или getISOString
CoreUtils.arrForEach arrForEach
CoreUtils.arrIndexOf arrIndexOf
CoreUtils.arrMap arrMap
CoreUtils.arrReduce arrReduce
CoreUtils.strTrim strTrim
CoreUtils.objCreate objCreateFn
CoreUtils.objKeys objKeys
CoreUtils.objDefineAccessors objDefineAccessors (определить доступ к свойствам объекта)
CoreUtils.addEventHandler добавитьОбработчикСобытий
CoreUtils.dateNow текущая дата
CoreUtils.isIE isIE
CoreUtils.отключение файлов cookie disableCookies
Ссылка либо приводит к тому, что CoreUtils будет использоваться для обеспечения обратной совместимости.
Рефакторинг обработки файлов cookie для использования appInsights.getCookieMgr().setEnabled(false)
CoreUtils.newGuid newGuid
CoreUtils.perfNow perfNow
CoreUtils.newId newId
CoreUtils.randomValue случайноеЗначение
CoreUtils.random32 random32
CoreUtils.mwcRandomSeed mwcRandomSeed
CoreUtils.mwcRandom32 mwcRandom32
CoreUtils.generateW3CId generateW3CId
EventHelper @microsoft/applicationinsights-core-js
EventHelper.Attach привязатьСобытие
EventHelper.AttachEvent привязатьСобытие
EventHelper.Detach detachEvent
EventHelper.DetachEvent detachEvent
Util @microsoft/applicationinsights-common-js
Util.NotSpecified strНеУказано
Util.createDomEvent (функция для создания DOM события) createDomEvent
Util.disableStorage utlDisableStorage
Util.isInternalApplicationInsightsEndpoint этоВнутреннийКонечныйПунктApplicationInsights
Util.canUseLocalStorage utlМожетИспользоватьLocalStorage
Util.getStorage utlGetLocalStorage
Util.setStorage utlSetLocalStorage
Удалить хранилище с использованием Util.removeStorage utlRemoveStorage
Util.canUseSessionStorage (может использовать хранилище сеансов) utlCanUseSessionStorage
Util.getSessionStorageKeys utlGetSessionStorageKeys (получить ключи хранилища сеанса)
Util.getSessionStorage (получить сохранённые данные сеанса) utlGetSessionStorage
Util.setSessionStorage utlSetSessionStorage
Util.removeSessionStorage (удаление данных из sessionStorage) utlRemoveSessionStorage
Util.disableCookies disableCookies
Ссылка либо приводит к тому, что CoreUtils будет использоваться для обеспечения обратной совместимости.
Рефакторинг обработки файлов cookie для использования appInsights.getCookieMgr().setEnabled(false)
Util.canUseCookies можноИспользоватьКуки
Ссылка либо приводит к тому, что CoreUtils будет использоваться для обеспечения обратной совместимости.
Рефакторинг обработки файлов cookie для использования appInsights.getCookieMgr().isEnabled()
Util.disallowsSameSiteNone Недопустимо использование SameSiteNone в ua
Util.setCookie coreSetCookie
Ссылка приводит к тому, что CoreUtils будет ссылаться на обратную совместимость.
Рефакторинг обработки файлов cookie для использования appInsights.getCookieMgr().set(name: string, value: string)
Util.stringToBoolOrDefault строкаВБулевоИлиПоУмолчанию
Util.getCookie coreGetCookie
Ссылка приводит к тому, что CoreUtils будет ссылаться на обратную совместимость.
Рефакторинг обработки файлов cookie для использования appInsights.getCookieMgr().get(name: string)
Util.deleteCookie coreУдалитьКуки
Ссылка приводит к тому, что CoreUtils будет ссылаться на обратную совместимость.
Рефакторинг обработки файлов cookie для использования appInsights.getCookieMgr().del(name: string, path?: string)
Util.trim strTrim
Util.newId newId
Util.random32 ---
Нет замены, рефакторинг кода для использования core random32(true)
Util.generateW3CId generateW3CId
Util.isArray isArray
Util.isError Ошибка
Util.isDate isDate
Util.toISOStringForIE8 toISOString
Util.getIEVersion ПолучитьВерсиюIE
Util.msToTimeSpan msToTimeSpan
Util.isCrossOriginError isCrossOriginError
Util.dump (утилита выгрузки) dumpObj
Util.getExceptionName getExceptionName
Util.addEventHandler привязатьСобытие
Util.IsBeaconApiSupported ЯвляетсяЛиПоддержкаAPIМаяка
Util.getExtension getExtensionByName
UrlHelper @microsoft/applicationinsights-common-js
UrlHelper.parseUrl (разбор URL) urlParseUrl
UrlHelper.getAbsoluteUrl urlGetAbsoluteUrl
UrlHelper.getPathName urlGetPathName
UrlHelper.getCompeteUrl urlGetCompleteUrl
UrlHelper.parseHost urlParseHost
UrlHelper.parseFullHost (функция для полного парсинга хоста) urlParseFullHost (функция для полного анализа хоста URL)
DateTimeUtils @microsoft/applicationinsights-common-js
DateTimeUtils.Now dateTimeUtilsNow
DateTimeUtils.GetDuration dateTimeUtilsDuration
ConnectionStringParser @microsoft/applicationinsights-common-js
ConnectionStringParser.parse parseConnectionString

Уведомления службы

Уведомления службы — это функция, встроенная в пакет SDK для предоставления практических рекомендаций, которые помогут обеспечить непрерывность потоков телеметрии в Application Insights. Уведомления можно просмотреть как сообщение об исключении в Application Insights. Мы обеспечиваем, чтобы уведомления были актуальны для вас в соответствии с настройками вашего SDK, и корректируем степень подробности на основе срочности рекомендации. Мы рекомендуем оставлять уведомления о сервисе включенными, однако вы можете отключить их через конфигурацию featureOptIn.

В настоящее время активные уведомления не отправляются.

Уведомления службы управляются пакетом SDK JavaScript, который регулярно опрашивает общедоступный JSON-файл для управления и обновления этих уведомлений. Чтобы отключить опросы, выполняемые SDK для JavaScript, отключите режим featureOptIn.

Устранение неполадок

См. специальные инструкции по устранению неполадок.

Следующие шаги