Treasure Data - Support Engineering Team blog

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

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

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

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

github.com

今回はbasic_monitoring Workflowについて紹介します。 このWorkflowではJobやSources、Usersなどの情報を収集するWorkflowになっています。

導入方法

導入方法は簡単です。treasure boxesのリポジトリからbasic_monitoringというディレクトリをWorkflowプロジェクトとして、pushするだけになります。 その後、登録したプロジェクトのシークレットとしてtd.apikeyを設定してください。設定するtd.apikeyはすべての権限を持っているユーザのものにしてください。(Account OwnerやAdminなど)

basic_monitoringには2種類のWorkflowが存在します。1つは初回実行のためのWorkflow(initial_ingest.dig、initial_ingest_policy.dig)、もう1つは日々のデータを取得するためのWorkflow(incremental_ingest.dig、incremental_ingest_policy.dig)になります。

初回実行のWorkflow(initial_ingest...dig)に関しての注意点としてはlower_job_idを適切に設定する必要があります。 この設定はどこまで古いJob(JobIDが小さいもの)の情報を取得するかというものになります。 あまりに小さい数値を指定しますと取得するデータ量が大きくなりすぎて、Workflowが完了しない or 途中でエラーとなる可能性があるので、適切に設定する必要があります。

まずは現在最大のJob ID - 1000程度のidを設定するのが良いでしょう。lower_job_idの設定が完了したら、TDコンソールのRunボタンでWorkflowの実行を行ってください。 設定したlower_job_idの値や作っているユーザ数などにも依存しますので、どの程度の実行時間がかかるかは実際に実行する環境次第になります。

次に毎日の決まった時間に実行するincremental_ingest(_policy)について紹介します。

Jobに関しては毎日の差分(前日の実行から今日の実行までに発行されたJobの情報)を取得するようになっており、その他に関してはその実行時間におけるデータのダンプになっています。 そのため、前日分のデータの様子を参照したい場合にはxxxxx_historyでtime値を元に確認する必要があります。 最新のデータはxxxxx(connections, databases, policies, ...)を参照すれば良いです。

毎日、いつ実行すれば良いのかに関しては、実際に実行する環境の毎日の負荷状況にあわせて、スケジュールを決定するのがよいでしょう。

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

最後に取得したデータの利用方法について紹介します。

usersテーブル

usersテーブルには毎日のWorkflow起動時点のでユーザの一覧が格納されています。また、users_historyには履歴として毎日のユーザ情報が格納されているので、過去のユーザを確認することも可能ですし、とあるユーザがいつ削除されたかなどの大まかな情報を確認できます。

databasesテーブル

usersテーブルと同じように毎日のWorkflow起動のでデータベースの一覧が格納されており、databases_historyにも同様のデータが格納されています。

jobsテーブル

このテーブルにはWorkflowが実行された時点までのJobの情報が入っています。このテーブルは他のテーブルと異なり、毎日、差分データを同一テーブルにインポートしています。 このテーブルの情報を使うことで、1日/1週間/1ヶ月のどの時間帯にどの程度のJobが実行されているか?などをSQLにより分析することが可能になります。 例えば、以下のスクリーンショットのように1日の1時間単位のjob type別のJob数を確認することも可能です。

その他にも様々なデータを取得していますので、テーブルを確認してみてください。 どのテーブルがどのREST APIに対応しているかはREADME.mdを参照して頂ければと思います。

github.com

今回はtreasure-boxesのbasic_monitoring workflowの使い方およびそのworkflowで取得しているデータについて紹介しました。 こちらを使うことで、tdで作成した様々なオブジェクトの管理が容易になれば幸いです。