クラウド環境でのOrchestrator構築とアナリティクス
Cosmos DBの作成
ロボットの実行ログ連携に関して、現在のバージョンではElasticSearchとMongoDBを選択肢できます。従来はElasticSearchのみでしたが、19.4以降よりMongoDBが追加されました。筆者は過去、MongoDBを用いたアプリケーション開発の経験があり、MongoDBには非常に愛着があります。Azure Cosomos DBはMongoDB APIインターフェイスを提供しているので、Azure Cosomos DBへのログ出力にチャレンジしてみます。
Azure Cosmos DBはフルマネージドのデータベースサービスで、スループットやスケーリングに優れたドキュメント形式のデータベースです。MongoDBのAPIインターフェイスだけでなく、SQL、Spark、TableといったAPIも提供されています。
それでは、ロボットの実行ログを出力するためのCosmos DBを作成していきましょう。AzureのWebコンソールに戻り、Azure Cosmos DBのメニューから「Azure Cosmos DB のアカウント作成」をクリックします。
リソースグループとアカウント名を入力します。APIにはOrchestratorが対応する「MongoDB用 Azure Cosmos DB API」を指定します。今回は冗長性やマルチリージョンは無効とします。
続いて、ネットワーク等の設定をしていきます。
ここでは、特に指定はありません。
これで準備が整いました。「作成」ボタンをクリックしてAzure Cosmos DBアカウントを作成します。
しばらく待つと、Cosmos DBのアカウントが生成されます。Cosmos DBのメニューへ移動し、Databaseと「Collection」というロボットのログを格納する入れ物を準備します。これはDatabase Idを「RobotLogs」、Collectionを「UiPath」という名称にしておきます。Collectionとは、RDBMSでいうテーブルに該当するものです。
これで、Cosmos DBの準備は整いました。
Cosmos DBへのロボットログの出力
ロボットのログをCosmos DBへ出力するために、Orchestratorの設定ファイルであるWeb.configを修正します。オンプレやIaaS上のOrchestrator環境であれば直接ファイルを修正できますが、App Serviceの場合は少し工夫が必要です。
今回はプレビューの段階ですが「App Service Editor」という便利な機能を見つけたので、これを利用して編集します。
先ほど作成したOrchestratorのApp Serviceのメニューへ戻ります。開発ツールの項目にある「App Service Editor (プレビュー)」を選択すると、別ウィンドウでMicrosoft社のVSCodeに似たインタフェース画面が起動します。App Service Editorではターミナルを使用でき、かつBashコマンドの入力もできます。
Web.configを編集する前にファイルをバックアップします。cp Web.config Web.config.org
と入力し、オリジナルのWeb.configをバックアップしましょう。
それでは、「Web.config」を選択して修正します。
下記のCosmos DBへの接続設定を追加します。Cosmos DBのMongoDBインターフェイスを使用しているため、typeをMongoにして接続子もMongoDB形式にします。
<target name="robotMongoBuffer" xsi:type="BufferingWrapper" flushTimeout="5000"> <target xsi:type="Mongo" name="robotMongo" connectionString="mongodb://cosmos-thinkit:VSF9sUs3YBmzVa5itsjKmAynRR9rqQVNGUjaLuD6TBkATTxP1spTf0tKAdyaLh5dfOUrOPw1LMbxi8hUuSQfog==@cosmos-thinkit.documents.azure.com:10255/?ssl=true" databaseName="RobotLogs" collectionName="UiPath" > <field name="windowsIdentity" layout="${event-properties:item=windowsIdentity}"/> <field name="processName" layout="${event-properties:item=processName}"/> <field name="jobId" layout="${event-properties:item=jobId}"/> <field name="rawMessage" layout="${event-properties:item=rawMessage}"/> <field name="robotName" layout="${event-properties:item=robotName}"/> <field name="indexName" layout="${event-properties:item=indexName}"/> <field name="machineId" layout="${event-properties:item=machineId}"/> <field name="tenantKey" layout="${event-properties:item=tenantKey}"/> <field name="levelOrdinal" layout="${event-properties:item=levelOrdinal}" bsonType="Int32"/> </target> </target>
次に、logger name="Robot.*"
へ「robotMongoBuffer」を追加します。
<rules> <logger name="BusinessException.*" minlevel="Info" writeTo="businessExceptionEventLog" final="true" /> <logger name="Robot.*" writeTo="database,robotMongoBuffer" final="true" /> <logger name="Monitoring.*" writeTo="monitoring" minlevel="Warn" final="true" /> <logger name="Quartz.*" minlevel="Warn" writeTo="eventLogQuartz" final="true" /> <logger name="*" minlevel="Info" writeTo="eventLog" /> </rules>
これで、Cosmos DBへロボットのログを出力する設定は完了です。変更内容を保存してOrchestratorを再起動します。具体的には、App Serviceのメニューからサービスを再起動すればOrchestratorが再起動され、変更内容が反映されます。
それでは早速、ロボット上で作成済みのワークフローを実行します。Cosmos DBのメニューへ戻ってデータエクスプロラーを覗いてみると、データが連携されていることが確認できます。
最後に、プレビュー機能のメニューにある「集約パイプライン」というオプションを有効にしておきます。これにより、MongoDBの集計機能(aggregation pipeline)がAzure Cosmos DBでも使用できるようになります。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- チャットアプリとRPAとの連携
- CloudサービスとRPAの連携
- RPAでの大量データ自動化処理の実践開発
- 簡易ブラウザの作成(その2)
- 簡易ブラウザの作成(その3)
- MongoDB Realmを利用したCRUD機能を実装しよう
- MR・AI・量子コンピューティングが重要テクノロジー 〜Microsoft Tech Summit 2017レポート
- PaaSもIaaSもオンプレミスもいいとこ取り!!Windows Azure Virtual Networksで合わせワザ一本!!
- de:code 2019開催。自動運転車からMicrosoft 365、Azure、HoloLens 2までの基調講演まとめ
- Rubyプログラミングの基礎知識