Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как определить шаг в конвейере обработки, который приводит к отсутствием телеметрии путем тестирования приема подключений и телеметрии с помощью PowerShell или curl.
Портал Azure не может извлечь или отобразить записи, которые вы пытаетесь просмотреть.
Если конечная точка сбора данных Application Insights настроена на использование идентификатора Microsoft Entra (ранее Azure AD) для проверки подлинности, приложение также должно быть настроено для проверки подлинности с помощью идентификатора Microsoft Entra. В этом сценарии приложение отвечает за проверку подлинности с помощью идентификатора Microsoft Entra. Если приложение настроено неправильно, данные телеметрии отклоняются и не отображаются на портале Azure, даже если инструментирование отображается правильно, и приложение создает данные телеметрии.
Чтобы настроить приложение для проверки подлинности с помощью идентификатора Microsoft Entra ID, выполните действия, описанные в разделе "Включить проверку подлинности Microsoft Entra ID (прежнее название — Azure AD).
Действия, которые могут привести к отсутствием телеметрии
На следующем рисунке показаны шаги, в которых телеметрия может быть отсутствует во время приема и потребления:
Если данные телеметрии приложения не отображаются в портал Azure, ошибки в конвейере обработки могут быть причиной:
- Пакет SDK или агент Application Insights неправильно настроен и не отправляет данные телеметрии приложения в конечную точку приема.
- Пакет SDK или агент настроен правильно, но сетевые блоки вызывают конечную точку приема.
- Конечная точка приема удаляет или регулирует входящие данные телеметрии.
- Конвейер приема снижается или сильно замедляет телеметрию в процессе обработки из-за работоспособности службы.
- (редко) Log Analytics сталкивается с проблемами работоспособности службы при сохранении записей телеметрии.
- (редко) API запросов при
api.applicationinsights.ioсбое при запросе записей из Log Analytics. - Другие возможные причины и решения рассматриваются в статье "Устранение неполадок с отсутствующими данными телеметрии приложений в Azure Monitor Application Insights".
Подсказка
Группы поддержки Application Insights не могут помочь с проблемами в сети. При отправке запроса в службу поддержки для сетевых проблем, которые препятствуют получению данных телеметрии Application Insights, таких как сбои разрешения DNS, убедитесь, что вы указали сеть Azure или Приватный канал Azure в продукте или описании проблемы на портале Azure. Это гарантирует правильность маршрутизации вашего обращения в службу поддержки.
Определение шага путем отправки образца записи телеметрии
Проблемы конфигурации или временные проблемы могут возникать в любом месте службы Application Insights. Чтобы определить шаг в конвейере обработки, который вызывает симптомы отсутствия данных или отсутствующих данных, отправьте образец записи телеметрии с помощью PowerShell или curl. Для скрипта PowerShell или команды curl перейдите к следующим разделам:
- Скрипт PowerShell для отправки результатов теста доступности
- Команда Curl для отправки результата теста доступности
- Скрипт PowerShell для отправки записи телеметрии запроса
Если веб-приложение выполняется на локальном сервере или виртуальной машине Azure, подключитесь к серверу или виртуальной машине и отправьте одну запись телеметрии в экземпляр службы Application Insights с помощью PowerShell. Если веб-приложение с проблемами отправки телеметрии выполняется в Kudu, выполните следующий сценарий из консоли отладки Kudu PowerShell в Azure веб-приложения.
$ProgressPreference = "SilentlyContinue"
Invoke-WebRequest -Uri $url -Method POST -Body $availabilityData -UseBasicParsing
Примечание.
- Перед выполнением командлета
Invoke-WebRequest$ProgressPreference = "SilentlyContinue"выполните командлет. - Вы не можете использовать
-Verboseили-Debug. Используйте-UseBasicParsing.
После отправки примера записи телеметрии с помощью PowerShell перейдите на вкладку "Журналы Application Insights" в портал Azure и проверьте, поступает ли она. Если показана образец записи телеметрии, то удаляется большая часть конвейера обработки.
Пример записи телеметрии, правильно сохраненной и отображаемой:
- Локальный сервер или виртуальная машина имеет DNS, разрешающий правильный IP-адрес.
- Сеть доставила пример в конечную точку приема без блокировки или удаления.
- Конечная точка приема приняла пример полезных данных и обработала его через конвейер приема.
- Log Analytics правильно сохранил пример записи.
- Вкладка "Журналы портал Azure" может запрашивать API (
api.applicationinsights.io) и отображать пример записи в портал Azure.
Если созданный образец записи поступает в экземпляр Application Insights, и вы можете запросить данный образец через меню ресурса Logs, устраните неполадки в SDK или агенте Application Insights. Теперь вы можете собирать журналы SDK, журналы самостоятельной диагностики или трассировки профилирования в зависимости от версии SDK или агента.
В следующих разделах содержатся сведения о отправке примера записи телеметрии с помощью PowerShell или curl.
Скрипт PowerShell для отправки результатов теста доступности
Результаты теста доступности — это идеальный тип телеметрии для тестирования. Причина заключается в том, что конвейер приема никогда не выборки результатов теста доступности. Если вы отправляете запись телеметрии запроса, она может получить выборку при включенной выборке приема. Начните с примера результата теста доступности, а затем попробуйте другие типы телеметрии по мере необходимости.
Ниже приведен пример скрипта PowerShell, который отправляет результат теста доступности:
# Info: Provide either the connection string or ikey for your Application Insights resource
$ConnectionString = ""
$InstrumentationKey = ""
function ParseConnectionString {
param ([string]$ConnectionString)
$Map = @{}
foreach ($Part in $ConnectionString.Split(";")) {
$KeyValue = $Part.Split("=")
$Map.Add($KeyValue[0], $KeyValue[1])
}
return $Map
}
# If ikey is the only parameter supplied, we'll send telemetry to the global ingestion endpoint instead of regional endpoint found in connection strings
If (($InstrumentationKey) -and ("" -eq $ConnectionString)) {
$ConnectionString = "InstrumentationKey=$InstrumentationKey;IngestionEndpoint=https://dc.services.visualstudio.com/"
}
$map = ParseConnectionString($ConnectionString)
$url = $map["IngestionEndpoint"] + "v2/track"
$ikey = $map["InstrumentationKey"]
$lmUrl = $map["LiveEndpoint"]
$time = (Get-Date).ToUniversalTime().ToString("o")
$availabilityData = @"
{
"data": {
"baseData": {
"ver": 2,
"id": "SampleRunId",
"name": "Microsoft Support Sample Webtest Result",
"duration": "00.00:00:10",
"success": true,
"runLocation": "Region Name",
"message": "Sample Webtest Result",
"properties": {
"Sample Property": "Sample Value"
}
},
"baseType": "AvailabilityData"
},
"ver": 1,
"name": "Microsoft.ApplicationInsights.Metric",
"time": "$time",
"sampleRate": 100,
"iKey": "$ikey",
"flags": 0
}
"@
# Uncomment one or more of the following lines to test client TLS/SSL protocols other than the machine default option
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::SSL3
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS11
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS12
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS13
$ProgressPreference = "SilentlyContinue"
Invoke-WebRequest -Uri $url -Method POST -Body $availabilityData -UseBasicParsing
Этот скрипт создает необработанный запрос REST для доставки одного результата теста доступности компоненту Application Insights. При использовании этого скрипта укажите $ConnectionString или $InstrumentationKey параметр.
- Если указан только параметр строки подключения, данные телеметрии отправляются в региональную конечную точку в строке подключения.
- Если указан только параметр ключа инструментирования (ikey), данные телеметрии отправляются в глобальную конечную точку приема.
- Если указаны и строка подключения, и параметры ikey, скрипт отправляет данные телеметрии на региональную конечную точку, указанную в строке подключения.
Примечание.
- Проверьте подключение, сделанное приложением. Если включить Application Insights в портал Azure, скорее всего, следует полагаться на строка подключения с региональными конечными точками
https://<region>.in.applicationinsights.azure.com. Если конфигурация пакета SDK предоставляет только ikey, вы используете глобальную конечную точкуhttps://dc.applicationinsights.azure.com. Обязательно заполните параметр скрипта, соответствующий конфигурации пакета SDK для веб-приложений, предоставляя строка подключения или ikey. - 31 марта 2025 г. поддержка приема ключей инструментирования закончилась. Прием ключей инструментирования продолжает работать, но мы больше не предоставляем обновления или поддержку этой функции. Перейдите на строки подключения, чтобы использовать новые возможности.
Проще всего запустить этот скрипт из среды isE PowerShell в экземпляре масштабируемого набора виртуальных машин Azure или IaaS. Вы также можете скопировать и вставить скрипт в консоль отладки интерфейса Kudu Служба приложений Интерфейс Kudu, а затем запустить его.
При выполнении скрипта найдите ответ HTTP 200 и просмотрите сведения об ответе. В рамках полезных данных JSON ответа ожидается следующее:
- Число
itemsReceivedсоответствует числуitemsAccepted. - Конечная точка приема сообщает клиенту: вы отправили одну запись телеметрии, и мы приняли одну запись телеметрии.
См. следующий снимок экрана:
Команда Curl для отправки результата теста доступности
Если вы используете виртуальные машины Linux, используйте curl вместо PowerShell для отправки аналогичного запроса REST. Необходимо настроить имя узла конечной точки приема, iKey значение и time значения. Конечная точка приема Application Insights не принимает записи старше 48 часов.
Ниже приведены примеры команд curl, которые отправляют один результат теста доступности:
Команда Curl для Linux и MacOS:
curl -H "Content-Type: application/json" -X POST -d '{"data":{"baseData":{"ver":2,"id":"SampleRunId","name":"MicrosoftSupportSampleWebtestResultUsingCurl","duration":"00.00:00:10","success":true,"runLocation":"RegionName","message":"SampleWebtestResult","properties":{"SampleProperty":"SampleValue"}},"baseType":"AvailabilityData"},"ver":1,"name":"Microsoft.ApplicationInsights.Metric","time":"2022-09-01T12:00:00.0000000Z","sampleRate":100,"iKey":"########-####-####-####-############","flags":0}' https://dc.applicationinsights.azure.com/v2.1/trackКоманда Curl для Windows:
curl -H "Content-Type: application/json" -X POST -d {\"data\":{\"baseData\":{\"ver\":2,\"id\":\"SampleRunId\",\"name\":\"MicrosoftSupportSampleWebtestResultUsingCurl\",\"duration\":\"00.00:00:10\",\"success\":true,\"runLocation\":\"RegionName\",\"message\":\"SampleWebtestResult\",\"properties\":{\"SampleProperty\":\"SampleValue\"}},\"baseType\":\"AvailabilityData\"},\"ver\":1,\"name\":\"Microsoft.ApplicationInsights.Metric\",\"time\":\"2021-10-05T22:00:00.0000000Z\",\"sampleRate\":100,\"iKey\":\"########-####-####-####-############\",\"flags\":0} https://dc.applicationinsights.azure.com/v2/track
Скрипт PowerShell для отправки записи телеметрии запроса
Чтобы устранить неполадки с отсутствующими данными телеметрии запросов, используйте следующий сценарий PowerShell для проверки отправки одной записи телеметрии запроса. Этот тип телеметрии подвержен конфигурации выборки на стороне сервера. Убедитесь, что выборка приема отключена, чтобы убедиться, что запись теста сохранена правильно.
# Info: Provide either the connection string or ikey for your Application Insights resource
$ConnectionString = ""
$InstrumentationKey = ""
function ParseConnectionString {
param ([string]$ConnectionString)
$Map = @{}
foreach ($Part in $ConnectionString.Split(";")) {
$KeyValue = $Part.Split("=")
$Map.Add($KeyValue[0], $KeyValue[1])
}
return $Map
}
# If ikey is the only parameter supplied, we'll send telemetry to the global ingestion endpoint instead of regional endpoint found in connection strings
If (($InstrumentationKey) -and ("" -eq $ConnectionString)) {
$ConnectionString = "InstrumentationKey=$InstrumentationKey;IngestionEndpoint=https://dc.services.visualstudio.com/"
}
$map = ParseConnectionString($ConnectionString)
$url = $map["IngestionEndpoint"] + "v2/track"
$ikey = $map["InstrumentationKey"]
$lmUrl = $map["LiveEndpoint"]
$time = (Get-Date).ToUniversalTime().ToString("o")
$requestData = @"
{
"data": {
"baseType": "RequestData",
"baseData": {
"ver": 2,
"id": "22093920382029384",
"name": "GET /msftsupport/requestdata/",
"starttime": "$time",
"duration": "00:00:01.0000000",
"success": true,
"responseCode": "200",
"url": "https://localhost:8080/requestData/sampleurl",
"httpMethod": "GET"
}
},
"ver": 1,
"iKey": "$ikey",
"name": "Microsoft.ApplicationInsights.Request",
"time": "$time",
"sampleRate": 100,
"flags": 0
}
"@
# Uncomment one or more of the following lines to test client TLS/SSL protocols other than the machine default option
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::SSL3
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS11
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS12
# [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS13
$ProgressPreference = "SilentlyContinue"
Invoke-WebRequest -Uri $url -Method POST -Body $requestData -UseBasicParsing
Устранение неполадок с конфигурацией SSL или TLS
Если эти скрипты завершаются ошибкой, устраните проблемы с конфигурацией SSL или TLS. Большинство конечных точек приема требует от клиентов использовать TLS 1.2 и определенные наборы шифров. В этом случае настройте, как PowerShell участвует в качестве клиента в протоколе SSL или TLS. Включите следующие фрагменты кода, если необходимо диагностировать безопасный канал в рамках подключения между клиентской виртуальной машиной и конечными точками приема.
Вариант 1. Управление протоколом SSL или TLS, используемым PowerShell для подключения к конечной точке приема.
Раскомментируйте любую из следующих строк, удалив
#символ и добавьте их перед командлетомInvoke-WebRequestв скрипте PowerShell для управления протоколом, используемым в тестовом запросе REST:# Uncomment one or more of these lines to test TLS/SSL protocols other than the machine default option # [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::SSL3 # [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS # [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS11 # [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS12 # [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::TLS13Вариант 2. Игнорировать все проблемы с проверкой SSL-сертификата.
Если у вас есть брандмауэр или прокси-сервер, участвующий в разгрузке SSL-сертификата, игнорируйте все проблемы с SSL-сертификатами, добавив следующий фрагмент кода непосредственно перед командлетом
Invoke-WebRequest:# Ignore mismatched SSL certificate add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class TrustAllCertsPolicy : ICertificatePolicy { public bool CheckValidationResult( ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
Если приложение по умолчанию использует параметры TLS системы или сервера по умолчанию, измените эти параметры по умолчанию в реестре на компьютерах Windows. Дополнительные сведения см. в разделе параметров реестра TLS.
Если необходимо изменить протокол TLS/SSL по умолчанию, используемый приложением .NET, следуйте рекомендациям по использованию протокола TLS с помощью платформа .NET Framework.
Устранение неполадок при установке или настройке пакета SDK для Application Insights или агента
Если отправка данных телеметрии с хост-компьютера приложения с помощью PowerShell или curl выполнена успешно, из-за проблем с настройкой или настройкой пакета SDK или агента Application Insights может возникнуть ошибка телеметрии. Включите мониторинг Application Insights для узла приложения и языка программирования, чтобы убедиться, что все конфигурации или код соответствуют соответствующим рекомендациям и примерам.
Если тесты, выполняемые с помощью PowerShell или curl, не могут отправлять данные телеметрии в конечную точку приема, проверьте несколько распространенных проблем, связанных с клиентом, которые могут способствовать этой проблеме:
- DNS в сети не удается разрешить конечную точку приема в правильный IP-адрес.
- TCP-подключение с сервера приложений к конечной точке приема может быть заблокировано брандмауэрами или устройствами шлюза.
- Конечная точка приема, к которому подключается пакет SDK, может потребоваться TLS 1.2, но ваше приложение может по умолчанию использовать TLS 1.0 или TLS 1.1.
- У вас может быть несколько Приватный канал Azure Monitor, влияющих на частную сеть, что может перезаписать записи DNS для разрешения конечной точки приема на неправильный частный IP-адрес.
Устранение проблем с проверкой подлинности Microsoft Entra
В этом разделе приводятся различные сценарии устранения неполадок и действия по устранению проблем с проверкой подлинности Microsoft Entra перед обращением в службу поддержки Майкрософт.
Ошибки HTTP при приеме
Служба обработки данных возвращает определенные ошибки независимо от языка SDK. Сетевой трафик можно собирать с помощью такого средства, как Fiddler. Убедитесь, что вы фильтруете трафик в конечную точку приема, заданную в строке подключения.
HTTP/1.1 400 Аутентификация не поддерживается
Эта ошибка показывает, что ресурс задан только для Microsoft Entra.
Проверьте и настройте пакет SDK правильно, так как он отправляется в неправильный API.
Примечание.
v2/track не поддерживает идентификатор Microsoft Entra. Если пакет SDK настроен правильно, данные телеметрии отправляются в v2.1/track.
HTTP/1.1 401 Требуется авторизация
Эта ошибка указывает, что пакет SDK настроен правильно, но не может получить допустимый маркер. Эта ошибка может указывать на то, что проблема, влияющая на идентификатор Microsoft Entra ID, существует.
Определите исключения в журналах SDK или сетевые ошибки, связанные с сервисом Azure Identity.
HTTP/1.1 403 Запрещён
Эта ошибка означает, что пакет SDK использует учетные данные без разрешения для ресурса Или подписки Application Insights.
Проверьте управление доступом для ресурса Application Insights. Необходимо убедиться, что удостоверение, используемое пакетом SDK, было назначено на роль издателя метрик мониторинга.
Устранение неполадок, связанных с языком
Включение журналов ошибок
Пакет SDK Application Insights для .NET генерирует журналы ошибок, используя источник событий. Дополнительные сведения о сборе журналов источников событий см. в статье "Устранение неполадок без данных" — сбор журналов с помощью PerfView.
Если SDK не получает токен, сообщение об исключении регистрируется как "Не удалось получить токен AAD." Сообщение об ошибке".