지속성 작업 SDK의 진단

지속성 작업 SDK 관련 문제를 진단하는 옵션은 사용 중인 Azure 컴퓨팅(예: Azure Container Apps, Azure Kubernetes Service 클러스터 또는 Azure App Service 앱)에 따라 달라집니다. Application Insights지속성 작업 스케줄러 모니터링 대시보드를 모두 사용하도록 설정하여 오케스트레이션 상태 및 실패에 대한 전체 가시성을 얻는 것이 좋습니다.

Application Insights (애플리케이션 인사이트)

Application Insights 는 지속성 작업 SDK에서 실행되는 앱을 모니터링하는 권장 방법입니다. Azure 포털에서 Application Insights Analytics 도구를 사용하여 이러한 추적 이벤트를 찾아 쿼리할 수 있습니다.

오케스트레이션 인스턴스의 각 수명 주기 이벤트는 Application Insights의 추적 컬렉션에 추적 이벤트를 씁니다. 이러한 이벤트의 사용자 지정 차원(예: prop__instanceId, prop__nameprop__runtimeStatus)을 사용하여 특정 오케스트레이션을 필터링하고 쿼리합니다.

컴퓨팅 서비스 진단 로깅 지침
Azure Container Apps (Azure 컨테이너 애플리케이션) Azure Container Apps에서 Log Analytics로 로그를 모니터링하기
Azure App Service Azure App Service 앱에 진단 로깅을 활성화합니다
Azure Kubernetes Service Azure Kubernetes Service를 모니터링하기

예제 쿼리

Application Insights를 사용하도록 설정하면 로그에서 다음 KQL 쿼리를 사용하여 오케스트레이션 동작을 조사 합니다 .

실패한 오케스트레이션 찾기:

traces
| where customDimensions.prop__runtimeStatus == "Failed"
| project timestamp, customDimensions.prop__instanceId, customDimensions.prop__name, message
| order by timestamp desc
| take 50

이름별 오케스트레이션 기간(지난 24시간):

traces
| where timestamp > ago(24h)
| where customDimensions.prop__runtimeStatus == "Completed"
| extend duration = todatetime(customDimensions.prop__completedTime) - todatetime(customDimensions.prop__createdTime)
| summarize avg(duration), max(duration), count() by tostring(customDimensions.prop__name)

OpenTelemetry를 사용하여 분산 추적

Durable Task SDK는 OpenTelemetry 분산 추적을 지원하여, 오케스트레이션, 활동 및 하위 오케스트레이션 전반에 걸쳐 연결된 범위로 엔드 투 엔드 가시성을 제공합니다. Application Insights, Jaeger 또는 Zipkin을 포함하여 OpenTelemetry 호환 백 엔드로 추적을 내보낼 수 있습니다.

지원되는 모든 언어의 코드 샘플이 포함된 설치 지침은 지속성 작업 스케줄러를 사용한 OpenTelemetry 및 분산 추적을 참조하세요.

지속성 작업 스케줄러 모니터링 대시보드

지속성 작업 스케줄러 대시보드를 사용하면 오케스트레이션 상태를 모니터링하고, 입력/출력을 검사하고, 실행 타임라인을 보고, 오케스트레이션(시작, 일시 중지, 다시 시작, 종료)을 관리할 수 있습니다. 로컬 에뮬레이터와 Azure 호스팅 스케줄러 모두에서 사용할 수 있습니다.

대시보드에 액세스

전체 설정 및 사용 지침은 지속성 작업 스케줄러 대시보드를 사용하여 오케스트레이션 디버그 및 관리를 참조하세요.

일반적인 문제

증상 가능한 원인 해결 방법
오케스트레이션이 "Running" 상태에 정체됨 작업이 처리되지 않은 예외를 발생시켰으며 재시도 정책이 구성되지 않았습니다. Application Insights에서 예외 세부 정보를 확인합니다. 오케스트레이터에서 재시도 정책 또는 try/catch 추가
작업은 무기한 재시도를 유지합니다. 재시도 정책에 제한이 없음 maxNumberOfAttempts 재시도 정책 구성에서 최대 재시도 횟수 설정
오케스트레이션이 시작되지 않음 작업자가 올바른 작업 허브를 확인하지 않음 연결 문자열 작업 허브 이름이 스케줄러 리소스와 일치하는지 확인합니다.
Application Insights에 추적 없음 연결 문자열이 구성되지 않았거나 SDK에서 원격 분석을 내보내지 않음 APPLICATIONINSIGHTS_CONNECTION_STRING 설정되었는지 확인합니다. OpenTelemetry Microsoft.DurableTask 원본이 등록되었는지 확인합니다.
대시보드에 오케스트레이션이 표시되지 않음 역할 할당이 누락되었거나 잘못된 작업 허브가 선택됨 지속성 작업 데이터 기여자 역할이 있는지 확인합니다. 대시보드 URL에서 작업 허브 이름 확인
오케스트레이션이 완료되었지만 결과가 비어 있음 작업이 null을(를) 반환했거나 직렬화에 실패했습니다. 대시보드의 기록 보기에서 활동 출력을 검사합니다. serializer 구성 확인

다음 단계