エラーの詳細を取得/通知

Author: Asao Nakamura 326 views

この記事では、「エラー時に実行するワークフロー」として実行されたワークフロー内にて、エラー元ワークフローの詳細情報を取得する方法を紹介します。

【できるようになること】

  • エラーオブジェクト(エラーの詳細)の取得
  • エラー詳細をSlackに通知
エラー情報を利用する場面

RoboticCrowdの運用に役立てることが可能です。
取得したエラー情報には、エラーの発生したワークフロー名や時刻(UTC)が含まれます。これらの情報をSlackやChatworkで通知したり、エラーログとしてスプレッドシートに残すことが可能になります。

 エラーオブジェクト

起動されたワークフロー側で、${error}と設定するとエラーになったワークフローのエラー詳細が取得できます。

  • 起動先ワークフローにて${error}と記述すると、以下の内容が取得されます。
{
  "workflow": {
    "name": "some workflow", // エラーが発生したワークフローの名前
    "id": 123, // エラーが発生したワークフローのID
  },
  "message": "Error: something went wrong.", // エラーメッセージ
  "task_name": "+open_browser_1", // エラーが発生したタスクの名前
  "session_time": "2020-01-14T12:09:00+09:00", // エラーが発生したセッションの開始時刻
  "session_queue_id": 111, // エラーが発生したセッションのID
  "session_url":   "https://console.autoro.io/projects/1/workflows/23/attempts/365", // セッション詳細(ログ)画面のURL
}

 ワークフローの設定例

下記手順にてワークフローを設定します。

通知メッセージの本文にエラー内容を組み込みます。

  • Textアクションを設置します。
  • 任意の通知文を書き込みます。
  • ${error}に格納された情報を本文内に反映する構文を書き込みます。
    ワークフロー名:${error.workflow.name}
    ワークフローID:${error.workflow.id}
    エラーメッセージ:${error.message}
    エラー発生時刻:${error.session_time}
    セッションログURL:${error.session_url}
 

Slackにメッセージを送信する方法については、こちらもご覧ください。

  • SlackSendMessageを設置します
  • メッセージ内容(Textパラメータ)に、先程作成したTextアクションのアウトプットを指定します。
  • 任意のプロバイダID,チャンネル名を指定します
  • 「ワークフローの編集」をクリックします。
  • 「エラー時に実行するワークフロー」をクリックし、上の手順で作成したワークフローを選択します。
  • 「更新」をクリックします。

Try(エラーを捕捉する)の範囲外に、Kill_Atempt(強制終了)を設置すると、そのワークフローをエラー終了扱いにできます。

# テキストを作成
+text_1:
  action>: Text
  text: "以下のワークフローでエラーが発生しました。\n\nワークフロー名:${error.workflow.name}\nワークフローID:${error.workflow.id}\nエラーメッセージ:${error.message}\nエラー発生時刻:${error.session_time}\nセッションログURL:${error.session_url}"

# Slackでメッセージを送信
+send_slack_message_1:
  action>: SendSlackMessage
  provider: ''
  channel: ''
  text: +text_1
  send_select: false
  response_message: false
  meta:
    display:
<エラーの詳細>エラーの詳細を取得/通知

このページは役に立ちましたか?