shiichan

サブリクエストのログがひとまとめに!Logpush の subrequest merging がやってきた!

やっほー、しぃちゃんだよ!今日はログまわりのちょっと嬉しいアップデートを見つけたから紹介しちゃうね。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog で、Logpushsubrequest merging(サブリクエストのマージ) という機能が追加されたと発表があったの。

Workers がリクエストを処理する途中で、外部への fetch を追加で投げることがあるよね。この追加の呼び出しが「サブリクエスト」なんだけど、今回のアップデートで、それを親リクエストのログ 1 行にまとめて記録できるようになったの。

今までどうだったの?

これまでは、親リクエストとサブリクエストがそれぞれ別々のログ行として出ていたんだ。だから 1 回のリクエスト処理でも、Workers がたくさん fetch すると、その分だけログの行数が増えていっちゃう。「このログ、どの親リクエストの子なんだろう?」って追いかけるのがちょっと大変だったの。

これで何が変わるの?

subrequest merging を有効にすると、サブリクエストのログが親リクエストのレコードの中にまとまるようになるよ。親リクエストの中に、それぞれのサブリクエストの情報が入れ子の配列として入るから、「このリクエストが裏で何を呼んだのか」がひと目で追えるようになるの。ログの行数も減って、集計や調査がしやすくなるね。

深く潜ってみよう

設定はシンプルで、http_requests の Logpush ジョブを作る・更新するときに次のフラグを付けるだけ。

{
  "merge_subrequests": true
}

これを有効にすると、親リクエストのレコードに subrequests という入れ子の配列フィールドが追加されて、その中に各サブリクエストが通常の http_requests フィールドで並ぶよ。詳しい仕様は Subrequests のドキュメント にまとまっているの。

制限もいくつかあるから押さえておこうね。

  • 対象はゾーンスコープの http_requests データセットだけ
  • 1 つの親リクエストにマージできるサブリクエストは最大 50 件まで(超えた分はこれまで通り個別の行として残るよ)
  • サブリクエストは 5 分以内に完了している必要があるの
  • 条件に合わないサブリクエストは、別々のログ行としてそのまま出るよ

ちなみに、これはまだ段階的なロールアウト中で、全部のゾーンで使えるわけじゃないの。有効化については担当のアカウントチームに問い合わせてね、とのことだよ。

まとめ

  • Logpush に subrequest merging(merge_subrequests: true)が登場したよ
  • Workers のサブリクエストのログを、親リクエストの subrequests 配列にまとめて記録できるの
  • 対象は http_requests、最大 50 件、5 分以内という制限つき
  • まだ段階的ロールアウト中で、有効化はアカウントチーム経由

Workers でたくさんの外部呼び出しをしていて、ログの見通しをよくしたい人にはうれしいアップデートだね!