Durable Task Scheduler ダッシュボードを使用してオーケストレーションをデバッグおよび管理する

Durable Task Scheduler ダッシュボードを使用すると、実行中のオーケストレーションを観察したり、実行履歴とアクティビティの入力/出力を検査したり、オーケストレーションのライフサイクル (一時停止、再開、終了) をブラウザーから管理したりできます。

ダッシュボードは、次の 2 つの環境で使用できます。

Environment URL 認証
ローカル エミュレーター http://localhost:8082 必要なし
Azure https://dashboard.durabletask.io/?endpoint=<SCHEDULER_ENDPOINT>&taskhub=<TASK_HUB_NAME> Durable Task データ共同作成者ロールが必要です。

エミュレーターの詳細については、 ローカル開発用のエミュレーターを参照してください。

この記事では、次の方法について説明します。

  • ダッシュボードにローカルまたはAzureでアクセスします。
  • Durable Task データ共同作成者ロールを開発者の ID に割り当てます。
  • オーケストレーションの状態を監視し、インスタンスをフィルター処理し、実行履歴を検査します。
  • オーケストレーションの管理 (一時停止、再開、終了、イベントをトリガーする)。

前提条件

開始する前に、次の手順を実行します。

ダッシュボードにローカルでアクセスする

Durable Task Scheduler エミュレーターを使用している場合は、次のダッシュボードを使用できます。

http://localhost:8082

ローカル開発に認証またはロールの割り当ては必要ありません。

ダッシュボード アクセス ロールの割り当て (Azure)

Azureホスト型スケジューラのダッシュボードにアクセスするには、Durable Task Data Contributor ロールを開発者 ID (電子メール) に割り当てます。

  1. 担当者を開発者 ID に設定します。

    assignee=$(az ad user show --id "someone@microsoft.com" --query "id" --output tsv)
    
  2. スコープを設定します。 スケジューラ スコープにアクセス権を付与すると、そのスケジューラ 内のすべての タスク ハブにアクセスできるようになります。

    タスク ハブ

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME/taskHubs/TASK_HUB_NAME"
    

    Scheduler

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  3. アクセス権を付与します。 次のコマンドを実行して、ロールの割り当てを作成し、アクセス権を付与します。

    az role assignment create \
      --assignee "$assignee" \
      --role "Durable Task Data Contributor" \
      --scope "$scope"
    

    想定される出力

    次の出力例は、 スケジューラ レベルで Durable Task Data Contributor ロールが割り当てられた開発者 ID を示しています。

    {
      "condition": null,
      "conditionVersion": null,
      "createdBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "createdOn": "2024-12-20T01:36:45.022356+00:00",
      "delegatedManagedIdentityResourceId": null,
      "description": null,
      "id": "/subscriptions/YOUR_SUBSCRIPTION_ID/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID",
      "name": "ROLE_ASSIGNMENT_ID",
      "principalId": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "principalName": "YOUR_EMAIL",
      "principalType": "User",
      "resourceGroup": "YOUR_RESOURCE_GROUP",
      "roleDefinitionId": "/subscriptions/YOUR_SUBSCRIPTION/providers/Microsoft.Authorization/roleDefinitions/ROLE_DEFINITION_ID",
      "roleDefinitionName": "Durable Task Data Contributor",
      "scope": "/subscriptions/YOUR_SUBSCRIPTION/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME",
      "type": "Microsoft.Authorization/roleAssignments",
      "updatedBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "updatedOn": "2024-12-20T01:36:45.022356+00:00"
    }
    
  4. アクセス権を付与したら、次のダッシュボードを開きます。

    https://dashboard.durabletask.io/?endpoint=<SCHEDULER_ENDPOINT>&taskhub=<TASK_HUB_NAME>
    

    <SCHEDULER_ENDPOINT>をスケジューラのエンドポイント (https://myscheduler.westus2.durabletask.io など) に置き換え、<TASK_HUB_NAME>をタスク ハブの名前に置き換えます。

    または、 https://dashboard.durabletask.io/ に移動し、接続フォームにスケジューラ エンドポイントとタスク ハブ名を入力します。

次の手順は、特定のタスク ハブを対象としたロールの割り当てを示しています。 スケジューラ 内のすべての タスク ハブにアクセスする必要がある場合は、スケジューラ レベルで割り当てを実行します。

  1. ポータルで Durable Task Scheduler リソースに移動します。

  2. タスク ハブ名をクリックします。

  3. 左側のメニューで [アクセス制御 (IAM)] を選択します。

  4. [ 追加] をクリックしてロールの割り当てを追加します。

    ポータルのAccess Control ペインにロールの割り当てを追加する画面。

  5. [永続タスク データ共同作成者] を検索して選択します。 [次へ] をクリックします。

    ポータルで Durable Task Data Contributor ロールの割り当てを選択するスクリーンショット。

  6. [ メンバー ] タブの [ アクセスの割り当て] で、[ ユーザー、グループ、またはサービス プリンシパル] を選択します。

  7. [メンバー] の場合は、[+ メンバーの選択] をクリックします。

  8. [ メンバーの選択 ] ウィンドウで、自分の名前または電子メールを検索します。

    ポータルでユーザー割り当てマネージド ID の種類を選択するスクリーンショット。

  9. メールを選び、[ 選択 ] ボタンをクリックします。

  10. [ 確認と割り当て ] をクリックしてロールの割り当てを完了します。

  11. ロールが割り当てられたら、タスク ハブ リソースの左側のメニューで [ 概要 ] をクリックし、上部の [要点 ] セクションにあるダッシュボードの URL に移動します。

ダッシュボードを使用してタスク ハブを監視する

ダッシュボードを使用すると、オーケストレーションの進行状況を監視し、実行履歴を確認できます。 ダッシュボードのホーム ページから、タスク ハブのオーケストレーション、エンティティ、スケジュール、worker とメトリック、AI エージェント (現在プレビュー段階) を見つけることができます。

[オーケストレーションの概要] ウィンドウ

オーケストレーションを表示するには、タスク ハブ名またはサイド メニューの Orchestrations をクリックします。

タスク ハブ、オーケストレーション履歴、エンティティ、スケジュール、worker、メトリック、AI エージェントへのリンクを含むダッシュボードのホーム ページのスクリーンショット。

[オーケストレーションの概要] ウィンドウでは、次のことができます。

  • オーケストレーション インスタンスの一覧を確認します。
  • 検索バーまたはフィルターを使用してオーケストレーションを絞り込みます。
  • 新しいオーケストレーションを作成します。
  • 共有可能なリンクをダッシュボードにコピーします。
  • オーケストレーション リストの自動更新間隔を設定します。

オーケストレーションを一覧表示するダッシュボードのスクリーンショット。

オーケストレーション情報には、次の既定の列が表示されます。

カテゴリ Description
インスタンス ID 一意の ID で特定のオーケストレーション インスタンスを検索します。
名前 オーケストレーションの種類名でフィルター処理します。
地位 ランタイムの状態 (実行中、完了、失敗、終了、保留中、中断) でフィルター処理します。
タグ オーケストレーション インスタンスに適用されるタグでフィルター処理します。
作成済 オーケストレーションが作成された日時。

オーケストレーション リストは、次の条件を使用してフィルター処理できます。

フィルター オプションを含むオーケストレーション履歴と状態を一覧表示するダッシュボードのスクリーンショット。

カテゴリ Description
オーケストレーション名 オーケストレーションの種類名でフィルター処理します。
ランタイムの状態 ランタイムの状態 (実行中、完了、失敗、終了、保留中、中断) でフィルター処理します。
タグ フィルター タグ キー または 値でオーケストレーションを検索します。
作成日 (開始)/作成日 (終了) 結果を時間枠に絞り込みます。

次の方法でオーケストレーション リストの更新をトリガーします。

  • 手動更新の更新アイコンをクリックします。

  • [自動] を切り替え、[間隔] を選択すると、一覧が自動的に更新されます。

    autorefresh トグルと手動更新アイコンのスクリーンショット。

新しいオーケストレーションを作成する

Durable Task Scheduler ダッシュボードから新しいオーケストレーションを作成できます。

  1. [ オーケストレーション の概要] ウィンドウで、[ + 新しいオーケストレーション] をクリックします。

  2. [新しいオーケストレーション] フォームに情報を入力します。

    [Create new orchestration]\(新しいオーケストレーションの作成\) フォームのスクリーンショット。

    フィールド Description
    オーケストレーション名 ドロップダウンからオーケストレーションを選択するか、カスタム オーケストレーション名を入力します。
    インスタンス ID Optional. インスタンス ID は自動生成されます。 自分で作成するか自動生成させるかにかかわらず、インスタンス ID は ASCII 形式です。
    バージョン Optional. 該当するバージョン番号を入力します。
    入力 Optional. JSON 形式で入力します。
    開始予定 Optional. オーケストレーションの開始日時を選択します。
    タグ Optional. オーケストレーションに関連付けられているキータグまたは値タグを入力します。
  3. Create をクリックしてください。

    一覧で新しいオーケストレーションを確認できます。

オーケストレーションの詳細

オーケストレーション インスタンスをクリックして問題を診断するか、オーケストレーションの状態を把握します。

[タイムライン]、[履歴]、[フロー] タブを使用して、実行の詳細とアクティビティの進行状況を表示します。 既定では、[タイムライン] タブが開いています。

  • [タイムライン] タブには、実行中のオーケストレーションの間隔が表示されます。

    オーケストレーション実行タイムラインのスクリーンショット。

    アクティビティを選択して、その入力と出力を表示します。

    アクティビティの入力、出力、状態を表示できるペインのスクリーンショット。

  • [ 履歴 ] タブには、タイムスタンプを含むオーケストレーション内のすべてのイベントのフィードが表示されます。

    個々のオーケストレーションのイベント履歴を示すダッシュボードのスクリーンショット。

  • [ フロー ] タブでは、オーケストレーションの実行フローが視覚的にプロットされます。

    個々のオーケストレーションのイベント フローのスクリーンショット。

    [表示] をクリックして、アクティビティの入力と出力を 表示することもできます。

    フロー ビューを使用してアクティビティの入力、出力、状態を表示できるペインのスクリーンショット。

オーケストレーションの管理

ダッシュボードを使用してオーケストレーションのライフサイクルを管理できます。 [ オーケストレーション ] ウィンドウで、インスタンス ID を選択して、次のアクションにアクセスします。

オーケストレーションを管理するための [消去]、[再起動]、[終了]、[中断]、および [再開] ボタンを示すダッシュボードのスクリーンショット。

  • 再開: 以前に中断されたオーケストレーションを続行します。
  • 中断: 実行中のオーケストレーションを一時停止します。 メモリ内に残りますが、再開されるまでイベントの処理を停止します。
  • 再起動: 以前に実行中のオーケストレーションを再起動します。
  • 終了: 省略可能な理由文字列を使用してオーケストレーションを直ちに停止します。
  • パージ: オーケストレーション インスタンスを消去します。

個々のオーケストレーションを展開して、Raise イベント アクションにアクセスします。 このアクションは、(省略可能な JSON ペイロードを持つ) 名前付き外部イベントを実行中または中断されたオーケストレーションに送信します。

オーケストレーションを管理するための [消去]、[再起動]、[終了]、[イベントの発生] ボタンを示すダッシュボードのスクリーンショット。

エンティティ

左側のメニューから [エンティティ ] を選択して、作成したエンティティを表示します。

作成したエンティティとその一部の管理ツールのスクリーンショット。

一覧から個々のエンティティをクリックすると、その詳細が表示されます。 ここから、次の内容を確認できます。

  • 最終更新日時
  • 最後の操作が実行されたとき
  • ロックされているかどうかと、ロックしたユーザー
  • バックログのサイズ
  • JSON または生コードのエンティティの状態

Durable Task Scheduler ダッシュボードで追跡されている個々のエンティティのスクリーンショット。

エンティティにシグナルを送信することもできます。 右上隅にある [ シグナル ] をクリックし、シグナル メッセージを作成します。

個々のエンティティにシグナルを送信するためのウィンドウのスクリーンショット。

エージェント (プレビュー)

Durable Task Scheduler ダッシュボードを使用したエージェント セッションの確認は、現在プレビュー段階です。

左側のメニューから [エージェント ] を選択して、スケジューラでアプリケーションによってトリガーされたエージェント セッションを監視します。 エージェント セッションをクリックして、次のようなトークン使用状況データを表示します。

  • 使用したプロンプト トークンの数。
  • 使用した完了トークンの数。
  • エージェント セッション中に使用されたトークンの合計数。

エージェントのチャット履歴とタイムラインを表示することもできます。

アプリケーションによってトリガーされたエージェント セッションのスクリーンショット。

スケジュール

左側のメニューから [スケジュール ] を選択して、作成したスケジュールを表示します。 スケジュール ウィンドウでは、スケジュールを一時停止、再開、または削除できます。 [+ スケジュールの作成] をクリックして、ダッシュボード UI を使用してスケジュールを作成することもできます。

作成したスケジュールとその一部の管理ツールのスクリーンショット。

ワーカーとメトリクス

左側のメニューからワーカーとメトリクスを選択して、次を表示します:

  • 保留中、実行中、または保存済みのすべてのアクティビティ、オーケストレーター、エンティティ。
  • コネクテッドワーカー。

作業項目キューと接続されたワーカーの概要のスクリーンショット。

次のステップ

Durable Functions に対応する Durable Task Scheduler (永続タスク スケジューラー) の場合:

Durable Task SDK 用の永続タスク スケジューラーの場合: