HTTP 500 내부 서비스 오류 문제 해결

적용 대상: SDK v4

500 오류 문제를 해결하는 첫 번째 단계는 Application Insights를 사용하도록 설정하는 것입니다.

AppInsights 샘플은 luis-with-appinsights C# 샘플 및 JS 샘플을 참조하세요.

참고 항목

LUIS(Language Understanding)는 2025년 10월 1일에 사용 중지됩니다. 2023년 4월 1일부터 새 LUIS 리소스를 만들 수 없습니다. 이제 최신 버전의 언어 이해가 Azure AI Language의 일부로 제공됩니다.

Azure AI Language의 기능인 CLU(대화형 언어 이해)는 업데이트된 LUIS 버전입니다. Bot Framework SDK의 언어 이해 지원에 대한 자세한 내용은 자연어 이해를 참조하세요.

기존 봇에 Application Insights를 추가하는 방법에 대한 자세한 내용은 대화 분석 원격 분석을 참조하세요.

ASP.NET Application Insights 사용

기본 Application Insights 지원은 ASP.NET 웹 사이트에 대한 Application Insights를 설정하는 방법을 참조하세요. Bot Framework(v4.2부터)는 추가 수준의 Application Insights 원격 분석을 제공하지만 HTTP 500 오류를 진단하는 데는 필요하지 않습니다.

Node.js에 Application Insights 사용

기본 Application Insights 지원은 Application Insights를 사용하여 Node.js 서비스 및 앱을 모니터링하는 방법을 참조하세요. Bot Framework(v4.2부터)는 추가 수준의 Application Insights 원격 분석을 제공하지만 HTTP 500 오류를 진단하는 데는 필요하지 않습니다.

예외 쿼리

HTTP 상태 코드 500 오류를 분석하는 가장 쉬운 방법은 예외로 시작하는 것입니다.

다음 쿼리는 가장 최근의 예외를 알려줍니다.

exceptions
| order by timestamp desc
| project timestamp, operation_Id, appName

첫 번째 쿼리에서 몇 가지 작업 ID를 선택하고 자세한 내용을 찾습니다.

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세부 정보를 분석하고 코드의 줄에 해당하는지 확인합니다. Channel 커넥트or(Microsoft.Bot.ChannelConnector)에서만 예외가 발생하는 경우 Application Insights가 올바르게 설정되고 코드가 이벤트를 로깅하는지 확인하려면 Application Insights 이벤트 없음을 참조하세요.

Application Insights 이벤트

500개의 오류가 수신되고 봇의 Application Insights 내에 추가 이벤트가 없는 경우 다음을 검사.

봇이 로컬로 실행되는지 확인

먼저 Bot Framework Emulator를 사용하여 로컬로 봇을 테스트합니다.

구성 파일이 복사되고 있는지 확인(.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 Portal에서 봇을 엽니다.
  2. App Service 설정/모든 App Service 설정 페이지를 열어 모든 서비스 설정을 확인합니다.
  3. 앱 서비스에 대한 모니터링/진단 로그 페이지를 엽니다.
    • 애플리케이션 로깅(파일 시스템)이 사용하도록 설정되어 있는지 확인합니다. 이 설정을 변경하면 저장을 클릭해야 합니다.
  4. 모니터링/로그 스트림 페이지로 전환합니다.
    • 웹 서버 로그를 선택하고 연결된 메시지가 표시되는지 확인합니다 . 다음과 유사해야 합니다.

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

      이 창을 열어 두세요.

봇 서비스를 다시 시작하도록 브라우저 설정

  1. 별도의 브라우저를 사용하여 Azure Portal에서 봇을 엽니다.
  2. App Service 설정/모든 App Service 설정 페이지를 열어 모든 서비스 설정을 확인합니다.
  3. 앱 서비스의 개요 페이지로 전환하고 다시 시작을 클릭합니다.
    • 확실한 경우 메시지가 표시됩니다. 예를 선택합니다.
  4. 첫 번째 브라우저 창으로 돌아가서 로그를 확인합니다.
  5. 새 로그를 수신하고 있는지 확인합니다.
    • 활동이 없으면 봇을 다시 배포합니다.
    • 그런 다음 애플리케이션 로그 페이지로 전환하고 오류를 찾습니다.

다음 단계