Alteryx ServerのJob Queue監視
- RSS フィードを購読する
- トピックを新着としてマーク
- トピックを既読としてマーク
- このトピックを現在のユーザーにフロートします
- ブックマーク
- 購読
- ミュート
- 印刷用ページ
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
Alteryx Server有識者の方にお伺いいたします。
Alteryx ServerのCuratorをやっていると、「JobがQueueに滞留して長時間待たされた」という苦情(?)が寄せられるため
何らかの方法でJob Queueの監視を行いたいと考えています。
Engine Logには Jobの開始時刻はありますが、JobがQueueに投入された時刻はないようです。
一方、ヘルプページのServerのMongoDBのSchemaを見ると AS_Queue という Collection があり
以下の情報が取れるようです。
UserName: (String) Username or MongoDB user ID of the user associated with the job.
AppName: (String) Workflow name.
CreationDateTime: (DateTime) Date-time job was created.
CompletionDateTime: (DateTime) Date-time job was completed.
ExecutionTime: (Double) The runtime of the job.
この情報があれば
IF CompletionDateTime = Null()
THEN WaitingTime = DateTimeNow() - CreationDateTime // 未完了Job
ELSE WaitingTime = CreationDateTime - (CompletionDateTime - ExecutionTime) // 完了済Job
ENDIF
で Job投入からJob開始までの待ち時間を計算するワークフローを組み
15分ごとにスケジュール実行すればよいかなと考えておりますがいかがでしょうか。
現在 私は Engine Log は見れるのですが、MongoDB にはアクセスできないため、実機検証はまだできていない状況です。
なにか考慮事項や、他に良い解法がありましたらご教示ください。
解決済! 解決策の投稿を見る。
- ラベル:
- Alteryx Server
- MongoDB
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
AS_Queueのスキーマを見る限りは、情報とってこれそうな雰囲気はあります。明日以降に、AS_Queueのデータの中身がどうなってるか見てみますね。
細かいですが、監視用のWFは、監視対象のワーカNodeとは別のNodeで実行する、というケアは必要な気がします(監視用WFが渋滞に巻き込まれないように)
更に細かいですが、停滞時間の計算をするのであれば、各々のワーカNodeのサーバのローカルタイムの設定も合わせる必要あり、です。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
ありがとうございます。
> 監視用のWFは、監視対象のワーカNodeとは別のNodeで実行する、というケアは必要な気がします(監視用WFが渋滞に巻き込まれないように)
確かにそうですね。比較的空いているNodeで外から監視するようにします。
ローカルタイムのご指摘もありがとうございます。
AlteryxのDateTime型だとTimeZoneを表現できないので、注意が必要ですね。
(DateTimeとは別に ISO FormatとかUnix Timeで表現されたFieldがあると良いのですが)
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
AS_Queueには、他にもStatusなどもあるので、StatusがCompleteになっていないものを抽出することができそうです。
ところで、そもそもQueueに長時間溜まるというところの方が気になりますね・・・。長時間動くワークフローが処理を専有しているのでしょうか?そこの解消も必要な気がしました。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
コメントありがとうございます。
> StatusがCompleteになっていないものを抽出することができそうです
(準)リアルタイムのQueue Lengthの監視目的としてはNot Completeのものだけで十分そうですね。
別途、全体のQueue処理状況を事後的に見るために、CompleteのJobを抽出してQueue Lengthの時系列グラフの開発も考えています。
> そもそもQueueに長時間溜まるというところ
これは Engine Log から長時間かかるWorkflowは特定できています。
ただ、「結構な量のデータからP値を計算しなさい」という処理なので、単純に処理時間を短縮するのが難しく、
Job Priorityを下げて(他JobのPriorityを上げて)運用することを検討しております。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
時間がかかってるJobの視覚化はよさそうですね。
そもそも長居するワークフローは、、、どうしようもないですね、、、すいている時間帯に流すとかの工夫が良いのでしょうかね・・・。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
AS_Queueのデータを眺めてみました。
@AkimasaKajitani も書かれているように、Statusの値で判別すると簡単に判別できそうですね。CreatinDateTimeには、必ず値が入ってました。
確認できた限りのステータスです
Status="Queued" 順番待ち
Status="Running" 実行中
Status="Complete" 実行完了
Status="Error" エラー
※Initializingというステータスも発見したのですが、キューに行く直前の一時的な状態みたいなので、対象外にしました
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
ありがとうございました。
とりあえず MongoDB へのアクセス権は入手できる見込みになりました。
アクセスできたところで、ご教示いただいた内容を参考にQueue監視データを取得してみたいと思います。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
よかったです!
ちなみに、さくっとmongoDBの中身のぞきたいなら、GUIのツールもあるので便利です。
https://www.mongodb.com/ja-jp/products/tools/compass
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
@Yoshiro_Fujimori @AkimasaKajitani @gawa
弊社ではPower BIでScheduleの実行状況の見える化をしています。
Tableau用のAlteryx WFが提供されている様で、それをCustomizeしてレポートを出力してPower BIに取り込んでいます。
(下記はQueを表示した物)
@Tokimatsu さんがここら辺詳しいです。
