Treasure Data - Support Engineering Team blog

トレジャーデータのサポートエンジニアリングチームのブログです。

REST APIを使ったTDオブジェクトの収集Workflow(その2)

こんにちは。テクニカルサポートチームの大村です。

今回はREST APIを使ったTDオブジェクトの収集ワークフローについて、treasure-boxesのサンプルをベースにご紹介します。

github.com

今回はworkflow_monitoring ワークフローについて紹介します。 こちらはTD Workflowの各種情報を収集するワークフローになります。

導入方法

導入方法は前回と同じですので、そちらを参考にしてください。 td-support.hatenablog.com

workflow_monitoringには以下の3種類のワークフローが存在します。

ワークフロー名 内容
initial_ingest.dig 初回実行のためのワークフロー
incremental_ingest.dig 日次実行でデータを取得するためのワークフロー
manual_ingest.dig タスク毎のデータを取得するためのワークフロー

初回実行と日々のデータを実行するワークフローの取り扱いは前回と同じです。 前回のlower_job_idの取り扱いと同じようにlower_limit_session_idやlower_limit_attempt_idの取り扱いはご注意ください。 あまりに小さい数値を指定しまいますと取り込むデータ量が大きくなり、ワークフローが完了せずにエラーになる可能性があります。 前回と同様に現在のsession/attempt id - 1000程度から試すといいと思います。

また、前回とは異なりmanual_ingest.digというワークフローも追加されています。 こちらはattempt_idをリストとして指定するとそのidのattemptの情報を取得します。例えば、とあるTD Workflowの異なるsessionのタスク毎の実行時間を比較したいというような場合、すべてのワークフローの実行情報をタスクレベルで取得するのは時間がかかってしまいますので、こちらを使って特定のTD Workflowの実行情報を取得するのがいいでしょう。

取得したデータをどのように活用すればいいのか?

このワークフローにより、デフォルトでどんなテーブルが作成され、どのようなデータが入っているか紹介します。

projectsテーブル

TD Workflowプロジェクト名や最終更新日が格納されています。このテーブルは毎日作り変えられてますので、履歴を確認したいときにはprojects_historyテーブルを確認してください。

workflowsテーブル

TD Workflowの名前、どのプロジェクトに所属しているのか、そのTD Workflowの内容を確認可能です。projectsテーブルと同様に履歴を確認したい場合はworkflows_historyテーブルを参照してください。

schedulesテーブル

TD Workflowの次の実行時間を確認することが可能です。こちらを使えば次の1週間の各時間帯のTD Workflowの実行個数などを確認することができます。 このテーブルも前の2つのテーブルと同様に毎日作り変えられていますので、履歴を確認したい場合はschedules_historyテーブルを確認してください。

sessionテーブル

TD Workflowの各sessionの実行情報が保存されています。このテーブルは日次で追記・修正されていくテーブルになっています。

attemptテーブル

TD Workflowの各sessionの実行情報であるattempt情報を保存されています。こちらを集計することで過去の時間帯毎のTD Workflowの実行個数を確認することができます。

tasksテーブル

手動実行であるmanual_ingest.digの実行により作成されるテーブルになります。このテーブルには各タスクレベルの実行情報が保管されますので、タスクレベルでの実行時間の変遷などを分析したい場合に役立ちます。タスク単位で確認できますので、2つのTD Workflowの実行間の比較や特定のタスクの実行時間の伸びを確認するのに便利です。

注意点としてはこのtasksテーブルは日次で更新されているテーブルではありません。manual_ingest.digを動作させた時に指定されたattempt idのタスクのデータを投入しています。これはタスクの情報は作成するTD Workflowによっては非常に大きくなることがありえるため、手動でインポートする形になっています。

今回はworkflow_monitoringの紹介をしました。TD Workflowに関する様々な管理情報を取得し、TDのテーブルに格納することで便利にTD Workflow全体を管理できるようになると思いますので使って見てください。