Kibanaを用いたRPA稼働実績の可視化
目次
はじめに
RPA導入による業務効率化を推進されている方、こんなお困りごとはないでしょうか。
- 毎月、どのロボがどれくらい稼働したのか集計したい
- ロボごとのエラーの発生率、回数、原因などを可視化して保守に活用したい
- 現状のRPA実行用ライセンスの数が、業務量に対して適正なのか判断できるようにしたい
RPAの運用を進めていくと、このようなRPAの稼働実績の高度な可視化が求められるケースが増えてくるのではないでしょうか。
こちらの記事では、代表的なRPAツールの一つであるUiPath、およびその管理ツールであるUiPath Orchestrator(以降OC)と、Elastic社のデータ可視化ツールであるKibanaを用いた、RPA稼働実績の可視化の例について紹介していきます。
Kibanaとは
Elastic Stackについて
Kibanaの説明をする前に、Elastic Stackについて紹介します。Elastic Stackとは、Elasticsearch、Kibana、Beats、Logstashなどのツールで構成される、データ取得、検索、分析、可視化のためのElastic社製ソリューションです。Kibanaは、その中でもデータの可視化を担うツールとなります。また、OCのロボット実行ログをもとにKibanaでの可視化を行うためには、データの検索・分析を行うElasticsearchが併せて必要となります。
Kibanaの導入方法
Elasticsearch、Kibanaを導入するために必要な準備は以下のようになります。公式サイトの手順を見ながらインストール、設定を進めていくだけでよいので、結構シンプルです。
- Elastic社の公式サイトからElasticsearchのインストール
- 必要な各種プラグインのインストール
- Elastic社の公式サイトからKibanaのインストール
- Kibana↔Elasticsearchの接続設定(設定ファイル編集)
参考:https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html
RPAの稼働情報を取り込む
Elasticsearch、Kibanaが使えるようになりましたら、いよいよRPAの稼働情報を取り込ませたいと思います。下記のような手順を踏むことで、OCの実行ログをElasticsearchに取り込み、Kibanaで可視化することができるようになります。
- Elasticsearch↔OC間の接続設定(設定ファイル編集)
- Kibana上でindex patternの設定
※参考:https://docs.uipath.com/ja/orchestrator/standalone/2022.4/installation-guide/creating-an-index-pattern-to-connect-to-elasticsearch
OCの実行ログには、fieldと呼ばれる様々な要素が含まれており、可視化のカギとして利用することができます。よく使われるのは下記のfieldです。
- jobId:実行されたジョブごとに固有のID。ロボごとの稼働情報を集計する際のキーとなる。
- processName:実行されたジョブのプロセス名。
- timestamp:ログが出力された時間。
- totalExecutionTime:ジョブの開始から終了までの所要時間。
- windowsIdentity:ジョブを実行したユーザーの名前。
また、UiPath.Core.ActivitiesのAddLogFieldsアクティビティを用いて、可視化に活用できそうな要素をfieldに追加することも可能です。例えば、ロボがエラーで異常終了した場合に、人為的なオペレーションミスによるもの(ビジネスエラー)なのか、システム起因のもの(システムエラー)なのかを記録するようなfieldを追加することで、ロボのエラー原因の割合をKibanaで可視化することができるようになります。
OCのダッシュボードだけでも、ロボ単位やジョブ単位での稼働実績は収集することが可能ですが、ロボ横断的(エラー原因別、実行者別など)な分析や、多種類のグラフを用いた高度な可視化には、Kibanaの存在が必要となってきます。
RPA稼働実績の可視化①~ロボごとの稼働情報集計~
まずは、ロボごとの稼働情報(稼働時間・ジョブ実行回数など)を集計して可視化してみようと思います。
Kibanaのメニューから [Dashboard] を開き、Dashboardの作成を行います。
KibanaのDashboardは、Visualizeと呼ばれる可視化用のパーツを組み合わせて作成します。Visualizeには円・棒・折れ線といったグラフやテーブルなど、様々な種類が存在します。
今回は、ロボごとの稼働時間の割合が視覚的にわかりやすい円グラフと、データをCSVファイルにエクスポートできるテーブルの2パターンで可視化してみます。
Dashboard上から [Create Visualization] を選択し、[Pie] を選択します。
セットアップ時に作成したindex patternを選択すると、グラフに用いるfieldを選べるようになります。[processName] と [totalExecutionTime] を設定することで、下図のような円グラフが簡単に出来上がります。
次はテーブルを作成します。今度は [Create Visualization] から [Table] を選択します。
先程の円グラフのように、[processName] を用いてロボごとの稼働情報を集計する形でもよいのですが、ジョブごとのキー情報である [jobId] を用いることで、実行されたジョブ単位での集計を行うことも可能です。下図では、[jobId] [timestamp] [windowsIdentity]、それからAddLogFieldsアクティビティであらかじめロボに追加している [jobStatus](ジョブのステータス)のfieldを用いてテーブルを作成しています。
いかがでしょうか。ロボごとの稼働時間、ジョブごとの稼働状況を集計・可視化してみました。円グラフでは稼働時間の長いロボが可視化されるため、導入効果の高かったロボが一目でわかるようになります。テーブルはCSVとしてエクスポートできるため、ジョブごとの稼働情報を無期限に保存することもできます。Dashboardの作成は、慣れればサクサク進められて非常に便利です。
RPA稼働実績の可視化②~エラー調査~
続いては、ロボごとのエラー発生率や原因などを可視化してみようと思います。エラーが起こりやすいロボを検知したり、複数ロボで共通して発生しているようなエラーを見つけ出したりすることで、ロボの品質改善に役立てられます。
先程と同様、Dashboardを新規作成し、[Create Visualization] から [Table] を選択します。[processName] [jobId] [jobStatus] をうまく組み合わせることで、ジョブがエラーで終了した割合を算出することができます。
また、[Create Visualization] から [Ber vertical] を選択します。エラー原因を回数が多い順に並べた棒グラフを作るイメージです。エラー原因の調査でカギとなるのが、[message] と呼ばれるfieldです。これは、Log Messageアクティビティで明示的に実装したログメッセージや、ジョブの例外発生時のメッセージが保持されるfieldとなります。
特定のパターンの例外に対して、どのロボも同じログメッセージを残すようにするといった実装ルールをあらかじめ決めておくことで、複数ロボにまたがるようなエラー原因についてもKibana上で簡単に発生頻度をチェックすることができるようになります。また、Dashboardは特定のfieldでフィルタをかけることができるため、テーブルを見てエラー発生率の高いロボをフィルタし、そのロボの主なエラー原因を棒グラフから確認して対処する、といったロボの保守作業にも役立ちます。Dashboardでわかりやすく可視化しておくことで、スムーズにエラー調査ができるようになるのも、Kibana導入の大きなメリットではないでしょうか。
おわりに
いかがだったでしょうか。上記の例以外にも、例えばジョブの実行マシンをfieldに追加して実行ライセンスの利用状況を可視化したり、ユーザーごとのロボ稼働状況を可視化してロボ実行権限を棚卸したりと、Kibanaには様々な活用方法が考えられます。また、今回は基本的なVisualizeに焦点を当ててDashboardの作成手順を紹介しましたが、Kibanaには他にも様々な可視化の機能があり、大変便利なツールです。RPAの管理や運用について課題をお持ちの方は、このような可視化ツール導入を検討してみるのもよいのではないでしょうか。
KibanaやOCの導入によるRPA管理、またRPAの導入などに関して何かございましたら、こちらまでお問い合わせいただければと思います。
最新情報をお届けします!
RPAに関する最新コラムやイベント情報をメールで配信中です。
RPA領域でお仕事されている方に役立つナレッジになりますので、ぜび登録してください!
- December 2024 (1)
- November 2024 (2)
- October 2024 (3)
- September 2024 (2)
- August 2024 (4)
- July 2024 (1)
- June 2024 (2)
- May 2024 (3)
- April 2024 (1)
- March 2024 (1)
- February 2024 (1)
- January 2024 (1)