지속성 작업 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__name및 prop__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 호스팅 스케줄러 모두에서 사용할 수 있습니다.
대시보드에 액세스
-
로컬 에뮬레이터: 인증이 필요하지 않습니다. 대시보드는
http://localhost:8082에서 사용할 수 있습니다. -
Azure 호스팅 스케줄러: 귀하의 ID에 Durable Task 데이터 기여자 역할을 할당한 후 Azure 포털 또는
https://dashboard.durabletask.io/작업 허브의 엔드포인트 URL을 통해 대시보드에 접근하세요.
전체 설정 및 사용 지침은 지속성 작업 스케줄러 대시보드를 사용하여 오케스트레이션 디버그 및 관리를 참조하세요.
일반적인 문제
| 증상 | 가능한 원인 | 해결 방법 |
|---|---|---|
| 오케스트레이션이 "Running" 상태에 정체됨 | 작업이 처리되지 않은 예외를 발생시켰으며 재시도 정책이 구성되지 않았습니다. | Application Insights에서 예외 세부 정보를 확인합니다. 오케스트레이터에서 재시도 정책 또는 try/catch 추가 |
| 작업은 무기한 재시도를 유지합니다. | 재시도 정책에 제한이 없음 maxNumberOfAttempts |
재시도 정책 구성에서 최대 재시도 횟수 설정 |
| 오케스트레이션이 시작되지 않음 | 작업자가 올바른 작업 허브를 확인하지 않음 | 연결 문자열 작업 허브 이름이 스케줄러 리소스와 일치하는지 확인합니다. |
| Application Insights에 추적 없음 | 연결 문자열이 구성되지 않았거나 SDK에서 원격 분석을 내보내지 않음 |
APPLICATIONINSIGHTS_CONNECTION_STRING 설정되었는지 확인합니다. OpenTelemetry Microsoft.DurableTask 원본이 등록되었는지 확인합니다. |
| 대시보드에 오케스트레이션이 표시되지 않음 | 역할 할당이 누락되었거나 잘못된 작업 허브가 선택됨 | 지속성 작업 데이터 기여자 역할이 있는지 확인합니다. 대시보드 URL에서 작업 허브 이름 확인 |
| 오케스트레이션이 완료되었지만 결과가 비어 있음 | 작업이 null을(를) 반환했거나 직렬화에 실패했습니다. |
대시보드의 기록 보기에서 활동 출력을 검사합니다. serializer 구성 확인 |