Treasure Data - Support Engineering Team blog

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

Monitoring Workflow導入&セットアップ

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

今回はMonitoring Workflowの導入&セットアップとしてStep By StepでMonitoring Workflowの導入&セットアップについて紹介していきます。

そもそもMonitoring WorkflowとはTDオブジェクト(Job/Authentication/Query/Workflow/Audience Studio)の一覧を日次でREST APIを利用して格納するためのWorkflowになります。(残念ながら、TDコンソールに表示されているすべての情報を取得できるわけではございませんが。)

Monitoring Workflowとは何かについては他のブログ記事でも紹介していますので、参考にしてもらえればと思います。

REST APIを使ったTDオブジェクトの収集Workflow(その1) - Treasure Data - Support Engineering Team blog

REST APIを使ったTDオブジェクトの収集Workflow(その2) - Treasure Data - Support Engineering Team blog

Monitoring Workflowで取得したデータを活用して、TDの環境の管理に役立てて頂ければと思います。 それでは実際の導入の手順を確認していきましょう。

1. Monitoring Workflowのダウンロード

まずは導入するMonitoring Workflowをダウンロードすることから始めます。Monitoring Workflowはtreasure-boxesで公開されていますので、そちらからダウンロードしてください。

GitHub - treasure-data/treasure-boxes: Treasure Boxes - pre-built pieces of code for developing, optimizing, and analyzing your data.

ダウンロードの方法はgit cloneでも構いませんし、こちらのようにzipファイルでダウンロードしても大丈夫です。

残念ながら、Monitoring Workflowのみダウンロードすることはできませんので、treasure-boxes全体をダウンロードしてください。

Monitoring Workflowは"scenarios/monitoring"に存在します。

treasure-boxes/scenarios/monitoring at master · treasure-data/treasure-boxes · GitHub

こちらの通り、Monitoring Workflowは3つのWorkflowプロジェクトから構成されます。

2. 各WorkflowプロジェクトのTreasure Data環境への導入

Monitoring Workflowの導入にはtd-toolbeltを利用します。(もちろん、TDコンソール上で1ファイルずつ中身をコピーすることも可能ですが、ファイルの数がそれなりにあるのでおすすめできません。) td-toolbeltの導入についてはこちらの記事を参考にしてください。

td-toolbeltチュートリアル - Treasure Data - Support Engineering Team blog

以下のようにtd-toolbeltを利用すれば、Workflowプロジェクト毎にTreasure Data環境に導入することが可能です。

> ls
basic_monitoring    cdp_monitoring      workflow_monitoring
> cd basic_monitoring
> td wf push basic_monitoring
2024-02-01 00:00:00 +0900: Digdag v0.10.5
Creating .digdag/tmp/archive-7768301518262670686.tar.gz...
  :
  revision updated at: 2024-02-01T09:00:00Z

Use `td workflow workflows` to show all workflows.
> cd ../cdp_monitoring
> td wf push cdp_monitoring
2024-02-01 00:00:00 +0900: Digdag v0.10.5
Creating .digdag/tmp/archive-5791497978617810973.tar.gz...
  :
  revision updated at: 2024-02-01T00:00:00Z

Use `td workflow workflows` to show all workflows.
> cd ../workflow_monitoring
> td wf push workflow_monitoring
2024-02-01 00:00:00 +0900: Digdag v0.10.5
Creating .digdag/tmp/archive-4806717472289012628.tar.gz...
  revision updated at: 2024-02-01T00:00:00Z
  :
Use `td workflow workflows` to show all workflows.

Treasure Data環境への導入はこれだけです。これでTreasure Data環境にMonitoring Workflowが導入されました。

3. 各種設定

次にWorkflowプロジェクト毎に以下の設定を実施する必要があります。1つはWorkflowプロジェクトに共通で各Workflowプロジェクト毎にtd.apikeyというシークレットを作成し、API Keyを設定する必要があります。このAPI KeyはTreasure Data環境にあるすべてのリソースにアクセスできる権限である必要があります。

シークレットの設定についてはこちらのドキュメントを確認してください。

Setting Workflow Secrets from TD Console - Product Documentation - Treasure Data Product Documentation

もう1つの設定は取り込み対象とするJobId/SessionId/AttemptIdの最小値を設定することです。 basic_monitoringとworkflow_monitoringでは過去のJobやSession/Attemptの情報を取り込みます。もちろん、0とすればすべての過去データを取得することが可能ですが、非常に時間がかかり、Workflowが停止する可能性があります。そのため、あまり小さな値を設定しないほうが良いかと思います。

各IDの最小値は以下のように設定しておくと良いでしょう。

JobId: 現在の最新のJobId - 1000程度 現在の最新のJobIdはJob一覧(ログインすると最初に表示されます)のページの一番上に表示されているJobIdになります。

この値(現在の最新のJobId - 1000)をbasic_monitoring/initial_ingest.digファイルのlower_job_idという項目に設定してください。

SessionId: 現在の最新のSessionId - 1000程度 現在の最新のSessionIdを直接取得することはできませんので、当日に動作したSessionIdを使うと良いでしょう。 こちらの画面のように当日に動作したSessionIdを最新としてみなすのが良いでしょう。

この値(現在の最新のSessionId - 1000)をworkflow_monitoring/initial_ingest_session_attempt.digファイルのlower_limit_session_idという項目に設定してください。

AttemptId: 現在の最新のAttemptId - 1000程度 こちらも同じく現在の最新のAttemptIdを直接取得することはできませんので、当日に動作したAttemptIdを使うと良いでしょう。 こちらの画面のように当日に動作したAttemptIdを最新としてみなすのが良いでしょう。

この値(現在の最新のAttemptId - 1000)をworkflow_monitoring/initial_ingest_session_attempt.digファイルのlower_limit_attempt_idという項目に設定してください。

4. 初回実行

各Workflowプロジェクトは初回実行用のWorkflowと日次で実行するためのWorkflowが用意されています。 それぞれ、初回実行用のWorkflowはinitial_ingest_xxxx.digという名前になっています。日次で実行するWorkflowはincremental_ingest_xxxx.digという名前になっています。また、日次で実行するWorkflowはデフォルトではUTCの00:00(JSTの09:00)に動作する設定になっていますので、スケジュールを変更したい場合はここのWorkflowを修正してください。

まずは各Workflowプロジェクトのinitial_ingest_xxxx.digというWorkflowを実行してください。 実行の順番は以下のような順番で実行してください。

  1. basic_monitoring/initial_ingest
  2. basic_monitoring/initial_ingest_policy
  3. workflow_monitoring/initial_ingest_session_attempt
  4. cdp_monitoring/initial_ingest

これで導入&セットアップは終了となります。デフォルトではbasic_monitoring/cdp_monitoring/workflow_monitoringというデータベースが作成されますので、どのようなデータが格納されているか確認してみてください。

5. 注意点

このMonitoring WorkflowはREST APIを用いて、TDオブジェクトの情報を収集するサンプルになります。そのため、不必要に複雑にならないようにシンプルに記述しています。各個別の環境への対応は各ユーザ毎に実施してください。 例えば、Sourceが1つもない環境やParent Segmentが1つもない環境ではエラーになる場合があります。その場合はSourceやParent Segmentを取得している部分をコメントアウトする必要があります。