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


Устранение ошибок внутренних служб 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 и узел будут выдавать журналы на уровне сервера, который можно проверить.

Настройка просмотра журналов в браузере

  1. Откройте бот в портал Azure.
  2. Откройте страницу Параметры службы приложений > All App service settings (Все параметры службы приложений), чтобы проверить все параметры службы.
  3. Откройте страницу мониторинга и журналов диагностики для службы приложений.
    • Убедитесь, что включен параметр Вход в приложения (файловая система). Не забудьте щелкнуть Сохранить, если придется изменить этот параметр.
  4. Перейдите на страницу мониторинга и потока журналов.
    • Выберите журналы веб-сервера и убедитесь, что вы видите сообщение, которое вы подключены. Это выглядит примерно так:

      Connecting...
      2018-11-14T17:24:51  Welcome, you are now connected to log-streaming service.
      

      Оставьте это окно открытым.

Настройка перезапуска службы бота в браузере

  1. С помощью отдельного браузера откройте бот в портал Azure.
  2. Откройте страницу Параметры службы приложений > All App service settings (Все параметры службы приложений), чтобы проверить все параметры службы.
  3. Перейдите на страницу Обзор для службы приложений и щелкните Перезапуск.
    • Он предложит, если вы уверены; Выберите "Да".
  4. Вернитесь в первое окно браузера и проверьте записи в журналах.
  5. Убедитесь, что вы получаете новые журналы.
    • Если нет действий, повторно разверните бот.
    • Теперь перейдите на страницу Журналы приложений и проверьте наличие ошибок.

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