Устранение ошибок внутренних служб HTTP 500
ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4
Если вы столкнулись с ошибками HTTP 500, первым шагом для устранения неполадок будет включение Application Insights.
Примеры приложений Аналитика см. в примере luis-with-appinsights C# и примере JS.
Примечание.
Распознавание речи (LUIS) будет прекращен 1 октября 2025 года. Начиная с 1 апреля 2023 года вы не сможете создавать новые ресурсы LUIS. Новая версия распознавания речи теперь доступна как часть языка ИИ Azure.
Распознавание речи (CLU) — это обновленная версия LUIS. Дополнительные сведения о поддержке распознавания речи в пакете SDK Bot Framework см. в разделе "Распознавание естественного языка".
См. подробнее о добавлении Application Insights к существующему боту в инструкциях по использованию телеметрии аналитики бесед.
Включение Аналитика приложения для ASP.NET
Базовая поддержка Application Insights описана в статье Настройка Application Insights для веб-сайта ASP.NET. Bot Framework (начиная с версии 4.2) предоставляет дополнительный уровень телеметрии приложений Аналитика, но не требуется для диагностики ошибок HTTP 500.
Включение Аналитика приложения для Node.js
Базовая поддержка Application Insights описана в статье о мониторинге служб и приложений Node.js с помощью Application Insights. Bot Framework (начиная с версии 4.2) предоставляет дополнительный уровень телеметрии приложений Аналитика, но не требуется для диагностики ошибок HTTP 500.
Запрос исключений
Анализ ошибок с кодом состояния HTTP 500 проще всего начать с исключений.
Следующие запросы возвращают последние исключения:
exceptions
| order by timestamp desc
| project timestamp, operation_Id, appName
Выберите несколько идентификаторов операций из результатов первого запроса и получите по ним дополнительные сведения:
let my_operation_id = "d298f1385197fd438b520e617d58f4fb";
let union_all = () {
union
(traces | where operation_Id == my_operation_id),
(customEvents | where operation_Id == my_operation_id),
(requests | where operation_Id == my_operation_id),
(dependencies | where operation_Id == my_operation_id),
(exceptions | where operation_Id == my_operation_id)
};
union_all
| order by timestamp desc
Если у вас есть exceptions
только данные, проанализируйте сведения и проверьте, соответствуют ли они строкам в коде. Если вы видите только исключения, поступающие из канала Подключение or (Microsoft.Bot.ChannelConnector
), см. раздел "Нет приложений Аналитика событий", чтобы убедиться, что приложение Аналитика настроено правильно, а код — события ведения журнала.
Отсутствие событий Application Insights
Если вы получаете 500 ошибок и нет дополнительных событий в приложении Аналитика от бота, проверка следующее:
Убедитесь, что бот выполняется локально
Сначала протестируйте бот локально с помощью эмулятора Bot Framework.
Проверка копирования файлов конфигурации (только для .NET)
Убедитесь, что файл appsettings.json
и любые другие файлы конфигурации правильно упаковываются в процессе развертывания.
Сборки приложения
Убедитесь, что сборки Application Insights правильно пакуются в процессе развертывания.
- Microsoft.ApplicationInsights
- Microsoft.ApplicationInsights.TraceListener
- Microsoft.AI.Web
- Microsoft.AI.WebServer
- Microsoft.AI.ServeTelemetryChannel
- Microsoft.AI.PerfCounterCollector
- Microsoft.AI.DependencyCollector
- Microsoft.AI.Agent.Intercept
Убедитесь, что файл appsettings.json
и любые другие файлы конфигурации правильно упаковываются в процессе развертывания.
appsettings.json
Убедитесь, что в файле appsettings.json
задан ключ инструментирования.
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
},
"Console": {
"IncludeScopes": "true"
}
}
}
Проверка файла конфигурации
Убедитесь, что в файл конфигурации включен ключ Application Insights.
{
"ApplicationInsights": {
"type": "appInsights",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"resourceGroup": "my resource group",
"name": "my appinsights name",
"serviceName": "my service name",
"instrumentationKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"applicationId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"apiKeys": {},
"id": ""
}
},
Проверка журналов
Бот ASP.NET и узел будут выдавать журналы на уровне сервера, который можно проверить.
Настройка просмотра журналов в браузере
- Откройте бот в портал Azure.
- Откройте страницу Параметры службы приложений > All App service settings (Все параметры службы приложений), чтобы проверить все параметры службы.
- Откройте страницу мониторинга и журналов диагностики для службы приложений.
- Убедитесь, что включен параметр Вход в приложения (файловая система). Не забудьте щелкнуть Сохранить, если придется изменить этот параметр.
- Перейдите на страницу мониторинга и потока журналов.
Выберите журналы веб-сервера и убедитесь, что вы видите сообщение, которое вы подключены. Это выглядит примерно так:
Connecting... 2018-11-14T17:24:51 Welcome, you are now connected to log-streaming service.
Оставьте это окно открытым.
Настройка перезапуска службы бота в браузере
- С помощью отдельного браузера откройте бот в портал Azure.
- Откройте страницу Параметры службы приложений > All App service settings (Все параметры службы приложений), чтобы проверить все параметры службы.
- Перейдите на страницу Обзор для службы приложений и щелкните Перезапуск.
- Он предложит, если вы уверены; Выберите "Да".
- Вернитесь в первое окно браузера и проверьте записи в журналах.
- Убедитесь, что вы получаете новые журналы.
- Если нет действий, повторно разверните бот.
- Теперь перейдите на страницу Журналы приложений и проверьте наличие ошибок.