Durable Task SDK 内の診断

Durable Task SDK の問題を診断するためのオプションは、Azure Container Apps、Azure Kubernetes Service クラスター、Azure App Service アプリなど、使用しているAzureコンピューティングによって異なります。 Application InsightsDurable Task Scheduler 監視ダッシュボードの両方を有効にして、オーケストレーションの状態とエラーを完全に把握することをお勧めします。

Application Insights

Application Insights は、Durable Task SDK で実行されているアプリを監視するための推奨される方法です。 これらの追跡イベントの検索とクエリは、Azure ポータルの Application Insights Analytics ツールを使用して実行できます。

オーケストレーション インスタンスの各ライフサイクル イベントは、Application Insights の トレース コレクションに追跡イベントを書き込みます。 これらのイベントのカスタム ディメンション ( prop__instanceIdprop__nameprop__runtimeStatusなど) を使用して、特定のオーケストレーションをフィルター処理し、クエリを実行します。

コンピューティング サービス 診断ログの手順
Azure Container Apps 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 と互換性のあるバックエンドにトレースをエクスポートできます。

サポートされているすべての言語のコード サンプルを使用したセットアップ手順については、「 Durable Task Scheduler を使用した OpenTelemetry と分散トレース」を参照してください。

Durable Task Scheduler の監視ダッシュボード

Durable Task Scheduler ダッシュボードを使用すると、オーケストレーションの状態の監視、入力/出力の検査、実行タイムラインの表示、オーケストレーションの管理 (開始、一時停止、再開、終了) を行うことができます。 ローカル エミュレーターとAzureホステッド スケジューラの両方で使用できます。

ダッシュボードにアクセスする

  • ローカル エミュレーター: 認証は必要ありません。 ダッシュボードは、 http://localhost:8082で使用できます。
  • Azure ホスト型スケジューラ: Durable Task Data Contributor ロールを ID に割り当 次に、Azure ポータルまたは https://dashboard.durabletask.io/ でタスク ハブのエンドポイント URL を使用してダッシュボードにアクセスします。

完全なセットアップと使用方法の手順については、「 Durable Task Scheduler ダッシュボードを使用したオーケストレーションのデバッグと管理」を参照してください。

一般的な問題

症状: 考えられる原因 Resolution
オーケストレーションが "実行中" で停止する アクティビティが未処理の例外をスローし、再試行ポリシーが構成されていない Application Insights で例外の詳細を確認します。再試行ポリシーを追加するか、オーケストレーターで try/catch を実行する
アクティビティは無期限に再試行を続ける 再試行ポリシーに maxNumberOfAttempts 制限がない 再試行ポリシー構成で最大再試行回数を設定する
オーケストレーションが開始されない ワーカーが正しいタスク ハブをポーリングしていない 接続文字列タスク ハブ名がスケジューラ リソースと一致するかどうかを確認する
Application Insights にトレースがない 接続文字列が構成されていないか、SDK がテレメトリを出力していない APPLICATIONINSIGHTS_CONNECTION_STRINGが設定されていることを確認します。OpenTelemetry Microsoft.DurableTask ソースが登録されていることを確認する
ダッシュボードにオーケストレーションが表示されない ロールの割り当てが見つからないか、間違ったタスク ハブが選択されている Durable Task Data Contributor ロールがあることを確認します。ダッシュボードの URL でタスク ハブ名を確認する
オーケストレーションは完了しましたが、結果は空です null返されたアクティビティまたはシリアル化に失敗しました ダッシュボードの履歴ビューでアクティビティの出力を検査する。シリアライザーの構成を確認する

次のステップ