Workers for Platforms は、エンドユーザーとデータを共有できるログと分析を提供します。
Workers for Platforms でログにアクセスする方法はいくつかあります。Cloudflare がログスタックのどこまでを運用するかが異なります。
- Workers Logs — Cloudflare がログを保存・インデックスし、API で照会します。ほかに運用するものはありません。ほとんどのプラットフォームの出発点として最適です。
- Logpush — Cloudflare が、所有・管理するストレージ送信先へログを届けます。
- Tail Workers — Cloudflare がログを Worker へリアルタイムでストリーミングし、その扱いを決めます。
Workers Logs は、ユーザー Worker のログを Cloudflare アカウントに自動保存します。Query Builder または Workers Observability API で照会できます。フルマネージドなので、データベースの立ち上げ、Logpush の設定、Tail Worker のデプロイなしに、独自ダッシュボードでユーザーごとのログビューを出せます。
ユーザー Worker で Workers Logs を有効にするには、dispatch namespace へ スクリプトをアップロード するときの metadata に observability 設定を含めます。
{
"main_module": "index.js",
"observability": {
"enabled": true,
"logs": {
"enabled": true,
"invocation_logs": true,
"head_sampling_rate": 1
}
}
}アップロード metadata を制御するため、ユーザー Worker ごとにログを有効にするかを決められます。head_sampling_rate を 0 から 1 の値にしてリクエストの割合をログするか、observability.enabled を false にして収集をオフにします。
Workers Logs は cloudflare-workers データセットに保存されます。エンドユーザーの代わりに Workers Observability API を照会するときは、あるテナントが別のテナントのテレメトリを読めないよう、すべてのクエリを特定のユーザー Worker にスコープします。dataset(cloudflare-workers に設定)と $metadata.service(ユーザー Worker のスクリプト名)で絞り込みます。
これらのフィルターは、ブラウザーからスクリプト名、データセット、生のフィルターを受け取らず、制御しているスクリプト名をサーバー側で適用します。検索語や期間などエンドユーザー入力でクエリが起動しても、各ユーザーのログは分離されたままです。
Workers Trace Events Logpush は、Workers の生の実行ログを取得するために使います。詳細は Logpush を参照してください。
Logpush は、dispatch namespace 全体または単一のユーザー Worker に対して有効にできます。dispatch namespace 内のすべてのユーザー Worker のログを取得するには次を行います。
- Logpush ジョブ を作成します。
- dispatch Worker で ログ を有効にします。
dispatch Worker でログを有効にすると、dispatch Worker と dispatch namespace 内のユーザー Worker の両方のログが収集されます。dispatch namespace に追加された新しい Worker のログは自動収集されます。dispatch namespace 全体ではなく個別のユーザー Worker のログを有効にする場合は、ステップ 1 をスキップし、ユーザー Worker でステップ 2 を完了します。
すべてのログは、アカウントに設定した Logpush ジョブへ転送されます。Logpush フィルターは Outcome または Script Name フィールドに使い、特定の値を含めたり除外したり、異なる送信先へログを送れます。
Tail Worker は、他の Worker(プロデューサー Worker)の実行情報を受け取ります。HTTP ステータス、console.log() に渡したデータ、捕捉されない例外などです。
ログが Cloudflare を離れる前に整形したい場合、diagnostics channel イベント を受け取りたい場合、またはリアルタイムでログを取得したい場合は、Logpush の代わりに Tail Workers を使います。
ユーザー Worker からログを収集するには、そのユーザー Worker に Tail Worker 設定 を直接追加します。
Workers for Platforms の分析を確認する方法は 2 つあります。
Workers Analytics Engine は、Workers for Platforms と組み合わせてエンドユーザーへ分析を提供できます。Workers 呼び出しに関するイベントや、ユーザー定義のカスタムイベントを公開できます。プラットフォームは script tag でイベントを書き込み・照会し、ユーザーの利用量の集計を取得できます。
Cloudflare の GraphQL Analytics API を使い、Dispatch Namespaces に関するメトリクスを取得します。workersInvocationsAdaptive ノードの dispatchNamespaceName ディメンションで、namespace ごとの利用量を照会します。
単一のユーザー Worker のメトリクスを出すには、workersInvocationsAdaptive をそのユーザー Worker の scriptName で絞り込みます。リクエスト数、エラー数、CPU 時間の分位数が返り、Workers Logs を有効にする必要はありません。ログ収集がオフでもユーザーごとのメトリクスを表示できます。
query UserWorkerMetrics($accountTag: string!, $scriptName: string!, $start: Time!, $end: Time!) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
workersInvocationsAdaptive(
limit: 1
filter: { scriptName: $scriptName, datetime_geq: $start, datetime_leq: $end }
) {
sum {
requests
errors
}
quantiles {
cpuTimeP50
cpuTimeP99
}
}
}
}
}