【UiPath】Insights（アラートを管理）を利用して長時間実行されたジョブを検知しよう

# １．はじめに
　Orchestratorのジョブが長時間実行され、後続ジョブに影響を与えてしまうという悩みを抱えている方がいらっしゃると思います。今回はInsightsのサービス内にある「アラートを管理」機能を利用して、長時間実行されたジョブを検知したいと思います。
　本題に入る前に、一般的にジョブ実行に対して重要な時間的要素として、ウィンドウタイムがあります。ウィンドウタイムには私自身最低2種類あると考えており、通常ウィンドウタイムと最大ウィンドウタイムがあると思っています。通常ウィンドウタイムは、皆さんご想像の通り通常時の想定実行時間となります。ここは日頃のジョブ管理（Orchestrator上ではトリガー機能が主な対象）でも意識されていると思います。一方で、最大ウィンドウタイムは、異常時を考慮した最大の許容時間となります。ここの意識が低いと、1つのジョブがほかのジョブの実行に大きく影響を及ぼしてしまう状況となります。今回の「アラートを管理」機能は最大ウィンドウタイムを考えるのが非常に重要です。
　参考までにウィンドウタイムを整理したので、考える際の参考にしていただければと思います。
| **項目** | **通常ウィンドウタイム** | **最大ウィンドウタイム** |
| :--- | :--- | :--- |
| **目的** | 定常的なジョブ実行時間の確保 | ジョブ実行の上限時間を制御するため |
| **柔軟性** | スケジュール内で調整可能 | 固定される（システム保護のため） |
| **影響範囲** | 通常の負荷管理 | 異常事態や障害発生時のリカバリに焦点 |
| **設定基準** | 標準的な負荷やリソース使用量を基に設定 | 最悪ケースを想定したタイムアウト時間を設定 |

# ２．Insightsのサービス内にある「アラートを管理」機能とは？
　Insightsの「アラートを管理」機能は、ユーザーが特定の条件（ジョブ、キュー、マシンに関連）に基づいてカスタムアラートを作成し、重要度やメール通知先を設定できる機能となります。フォルダーやプロセスごとなど細かい単位でしきい値となる数値や時間を設定することが可能となります。
　参考までに一例として、以下のようなアラート通知を送信することが可能となります。（実行中のプロセスが実行時間を超過した際の例）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/c28cac81-7f1d-0e30-8589-dc5a19fd9a6e.png)
 公式Docについては以下をご参照ください。
　https://docs.uipath.com/ja/insights/automation-cloud/latest/user-guide/manage-alerts

:::note warn
本機能は、経験則上数分通知が遅れる場合もあるため、完全リアルタイムではないことにご注意ください。
:::
 
# ３．設定をしてみよう
### (1) 前提条件
　本機能を利用するにはInsightsのライセンスが必要となります。また、Insightsのアクセス権として「管理者」のみが利用可能となります。

### (2) 想定するユースケース
　プロセスAを実行するトリガーAとプロセスBを実行するトリガーBが存在する状況を仮定します。
| **プロセス** | **トリガー時間** | **通常ウィンドウタイム** | **最大ウィンドウタイム** |
| :--- | :--- | :--- | :--- |
| **プロセスA（トリガーA）** | 15:00 | 30分 | 60分 |
| **プロセスB（トリガーB）** | 16:00 | 10分 | 30分 |

　上記状況で今回は45分にWARNとして検知する設定を考えていきたいと思います。なお、最大ウィンドウタイムで検知するとリカバリーや対処が遅れ、後続に影響を及ぼすためにWARNなどレベルを分けて検知するのが望ましいと考えています。WARN以降も10分前にERROR通知、さらに強制終了を5分まえに設定するなど行うことが想定されます。さらに、最終的に停止状態を検知して通知することで見逃しを防止することが可能と考えています。
　停止状態を検知する方法は以下の記事なども参考にしていただければと思います。
　https://qiita.com/tomohiroArai/items/3869f81fa19444e59542

### (3) 設定方法
　①「Insights」のサービスに移動後、「リアルタイムの監視」タブに移動する
　②「アラートを管理」をクリック後、「アラートを作成」をクリックする
　③必要事項を記入します。
　④「作成」ボタンを押す
| **#**  | **項目**              | **設定値** | **備考** |
| :--- | :--- | :--- | :--- |
| 1      | 名前                 | 「プロセスA（トリガーA）の長時間実行警告」を入力（任意の名前を設定） |  |
| 2      | 型                   | 「プロセスのアラート」を選択 |  |
| 3      | しきい値を設定        | 「ジョブが未完了ステータスにある時間」を選択 |  |
| 4      | ステータス            | 「実行中」を選択 |  |
| 5      | 分                   | 「45」を設定（単位：分） |  |
| 6      | スヌーズ              | 「なし」を選択（必要に応じて設定ください） |  |
| 7      | 重要度               | 「WARN」を選択 |  |
| 8      | フォルダーのフィルター | 「ジョブ実行先フォルダー」を選択 |  |
| 9      | プロセス名のフィルター | 「プロセスA」を選択 | 一度でもジョブ実行されたものが選択可 |
| 10     | アラートの送信先       | 「メールアドレス」を入力後、選択 | AutomationCloudに存在するユーザーまたはグループが対象 |


### (4) 結果
実行結果は以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/5d984b5a-a805-c914-73db-d1fab62d6e9d.png)

詳細な部分は下表の通りとなります。
| #  | 項目                              | 説明                                             |
|----|-----------------------------------|--------------------------------------------------|
| 1  | Organization Name                | 組織URL                                         |
| 2  | Tenant Name                      | テナント名                                      |
| 3  | Alert Type                       | 型（アラートのタイプ）ジョブ実行時間を示す      |
| 4  | Target State                     | 条件となるステータス                            |
| 5  | Alert Triggering Folder Name     | 実行フォルダ名                                  |
| 6  | Alert Triggering Process Name    | 実行プロセス名                                  |
| 7  | Alert Triggering Host Name       | 実行マシンテンプレート名                        |
| 8  | Alert Triggering Machine Name    | 実行ホストID（Orchestrator側の識別情報）        |
| 9  | Alert Triggering Robot Name      | 実行ロボット名（-より前がロボットアカウント名） |

# ４．さいごに
 今回はInsightsの「アラートを管理」を利用して長時間実行されたジョブを検知する方法を紹介しました。皆様の運用が少しでも便利になればと思っています。
　本記事はあくまでも個人の見解を述べているものとなりますので、参考情報として頂ければと存じます。