こんにちは。テクニカルサポートチームの大村です。
今回はMonitoring WorkflowのWorkflow Monitoringで取得したデータの活用方法についていくつか紹介します。 Workflow Monitoringを導入するとProjectやWorkflow, Session, Attempt, Schedule, Revisionといったメタデータ情報がTDのテーブルに格納されます。 これらデータを一体どのようにクエリで整形していくと便利なのかについて紹介します。
1. テーブル一覧
まずはWorkflow Monitoringにより作成、データが追加されるテーブル群を見ていきます。

デフォルトではこれらのテーブルが自動的に作成され、データが日々格納されます。 それぞれのテーブルを確認していきましょう。
projects, projects_history
これらのテーブルにはWorkflow Projectの情報が格納されます。 project idや名前、現行のrevision id、作成日、最終更新日などが格納されます。 これらと後述するrevisionsテーブルを参照することで最終更新者を確認することが可能になります。 他のテーブルも同様ですが、projectのデータは1日1回その時点のデータにより上書きされます。そのため、過去のデータはprojects_historyに保管されています。 削除されてしまったprojectを確認したい場合などはprojects_historyを参照すると良いでしょう。

workflows, workflows_history
これらのテーブルにはWorkflowの情報が格納されています。Projectの情報も格納されてますので、projectsテーブルと紐づけなくてもこのテーブル単体でプロジェクト紐づけて一覧化することが可能です。projectsテーブルと同様にrevision idも格納されていますので、最終更新者も確認することが可能です。

schedules, schedules_history
これらのテーブルにはスケジュールが設定されているWorkflowの情報が格納されています。スケジュールの有効・無効の情報も格納されていますので、スケジュールが有効化中であるWorkflowの一覧を確認したい場合にはこちらのテーブルを参照するといいでしょう。

revisions, revisions_history
これらのテーブルにはProjectのrevision情報が格納されています。TD Workflowではプロジェクト毎にバージョン管理の簡易版が導入されています。それぞれ、プロジェクト毎にrevision idが振られ、更新の度に新しいrevision idが設定されます。 これテーブル単体で使うというよりかは他のテーブルとJoinして最終更新者を確認するのに使うことが多いテーブルになります。

session
このテーブルにはsessionに関する情報が格納されています。このテーブルを確認することで日次でどの程度のsessionが実際に動作しているのかなどの情報を得ることが可能です。実際の実行に関してはattemptテーブルを確認するほうがよいでしょう。 また、sessionとattemptテーブルは日次でテーブルの全データを上書きするというような運用ではなく、日次で差分が追加されていく形になっています。

attempt
このテーブルにはattemptに関する情報が格納されています。このテーブルを確認することで特定のWorkflowの時系列の実行時間が確認できます。 対象のWorkflowの実行時間がだんだん伸びているのか、それともある程度一定なのかなどを確認することが可能です。

2. クエリサンプル
クエリサンプルおよび結果イメージの一覧をtreasure-boxes内のREADME.mdにも記載していますので、こちらもあわせて確認してください。 treasure-boxes/scenarios/monitoring/workflow_monitoring/query_samples at master · treasure-data/treasure-boxes · GitHub
もちろん、これらの結果をcsvファイルとしてダウンロードしたり、Google Sheetに出力したりすることも可能です。 また、これらはあくまでサンプルですので、クエリを変更すれば、各々に必要な情報を抽出することが可能です。
| # | ファイル名 | 内容 |
|---|---|---|
| 1 | project_list.sql | Projectの一覧を最終更新者付きで出力します |
| 2 | workflow_list.sql | Workflowの一覧を出力します |
| 3 | schedule_list.sql | スケジュールが有効になっているWorkflowの一覧を出力します。実際に定期的に実行されているWorkflowを確認するにはこちらが便利です。 |
| 4 | session_attempt_list_for_specific_workflow.sql | 特定のWorkflowのSession/Attemptリストになります。実行時間も計算して出力していますので、こちらを使うと実行時間変遷が確認できます。 |
今回はWorkflow Monitoringで取得しているデータとそれを使ったサンプルクエリについてご紹介しました。ここでご紹介したクエリ以外でもいろいろなクエリによりデータを整理できるかと思いますので試してみてください。