TROCCOの設定が増えてくると、どの設定で処理時間を消費しているのかを定期的に確認したいと思うことがあります。
もちろん簡易的な集計はダッシュボード上でも可能となっています。
(参考)転送元TROCCOでリソースグループごとの処理時間を転送することは可能ですか? – TROCCOヘルプセンター
この記事では、転送元HTTPSでTROCCO APIを使うことでリソースグループやラベルごとでの処理時間を集計する方法をお伝えします。
※最終的な集計処理はSQLを実行できる環境を前提とする点をご了承ください。
パート1 転送ジョブの履歴を転送する
転送元TROCCOを使うことで任意の期間の転送ジョブの履歴を転送することができます。アカウント内のすべての転送設定のジョブが対象となります。
設定例
解説
上の設定ではカスタム変数を埋め込んで前月分のTROCCOのジョブ実行履歴を転送しています。
データ取得期間では日時を指定しない場合は00:00:00が指定されると注釈が入っています。
例えば2025年7月2日のタイミングで実行した場合は以下の値が期間として指定されます。
開始日時:2025-06-01 00:00:00
終了日時:2025-07-01 00:00:00
取得したデータには転送設定名などは含まれますが、設定の作成者やリソースグループ、ラベルといった詳細情報は含まれておりません。
なお、取得できるデータの詳細は転送元 - TROCCOにて確認ができます。
パート2 転送設定の一覧情報を転送する
注意
TROCCO APIはAPIキーを発行したユーザーの権限でアクセス可能なリソースのみ取得が可能となります。パート1で取得した全データと突合させるためには特権管理者など強い権限でのAPIキーの発行が必要です。
続いて、転送設定の一覧を取得します。
TROCCO APIリファレンスの転送設定一覧取得を確認するとAPIキーをヘッダーにセットする認証方式となっています。以下、TROCCOの画面を交えて間違えやすいポイントを解説していきます。
URLやHTTPメソッドはAPIリファレンスに従い入力しましょう。
APIリファレンスを読み解く必要がありますが、TROCCO APIではレスポンスのファイル形式がJSONとなっていますので、入力ファイル形式についてはJSONPathを選択してください。
API リファレンスで取得したいデータがどのように格納されているかによってルートの書き方が変わってきます。
(APIリファレンスより抜粋)
実際の戻り値やレスポンスのサンプルデータを見ながら設定するのでも問題ありませんが、ここではitemsのカラムの配列の中身を取得したいので$.items[*]や画像のようにラベル付きのレコードを取得する$.items[?(@labels)]のようなパスを入力します。
また一度のリクエストで取得できる件数が100件までと記載があり、それ以上を取得する場合は所定のパラメータに次のカーソルの値を渡す必要があります。この設定をページング設定といいます。こちらもリファレンスに従い設定を行います。
cursor (string)取得する転送設定一覧の最初のレコードを示すページネーションカーソルを指定します。
レスポンスに含まれるnext_cursorをセットすると、後続の転送設定一覧を取得できます。
パート3 リソースグループを転送する(おまけ)
パート2は少し専門的な内容になりましたが、APIの仕様はサービスごとに共通の部分が多いので一つ設定を作ることができればURLエンドポイントやパラメータを変更することで他のリクエストも簡単に作ることができます。
転送設定のURLを https://trocco.io/api/resource_groups? に、入力ファイル形式のルートを$.items[*]に変更して自動データ設定を実行するだけで設定が完了しました。
最終的に実行するクエリサンプル
それぞれのテーブルにはデータを結合させるJOINキー(job_definition_idとresource_group_id)が含まれていることがわかります。
SELECT
job_definition_id,
job_definition_name,
JSON_EXTRACT_SCALAR(created_by,'$.email') AS created_by,
resource_groups.name AS resource_group_name,
-- データ処理時間を集計してHOURベースで小数点2以下で丸める
ROUND(SUM(TIMESTAMP_DIFF(finished_at, started_at, second)/60/60),1) AS sum_second
FROM
-- パート1で転送したデータのテーブル
`your_project.your_dataset.transfer_jobs` transfer_jobs
-- 以下テーブルのデータはAPIキーの権限に絞られるため、LEFT JOINとする
LEFT JOIN
-- パート2で転送したデータのテーブル
`your_project.your_dataset.job_definitions` job_definitions
ON
job_definitions.id = transfer_jobs.job_definition_id
LEFT JOIN
-- パート3で転送したデータのテーブル
`your_project.your_dataset.resource_groups` resource_groups
ON
resource_groups.id = job_definitions.resource_group_id
-- 処理時間の集計対象とするのは成功したジョブのみ
where status = "succeeded"
GROUP BY
1,
2,
3,
4
コメント
0件のコメント
記事コメントは受け付けていません。