Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

可観測性

最終更新 Markdown で表示Agent セットアップ

Workers for Platforms は、エンドユーザーとデータを共有できるログと分析を提供します。

ログ

Workers for Platforms でログにアクセスする方法はいくつかあります。Cloudflare がログスタックのどこまでを運用するかが異なります。

  • Workers Logs — Cloudflare がログを保存・インデックスし、API で照会します。ほかに運用するものはありません。ほとんどのプラットフォームの出発点として最適です。
  • Logpush — Cloudflare が、所有・管理するストレージ送信先へログを届けます。
  • Tail Workers — Cloudflare がログを Worker へリアルタイムでストリーミングし、その扱いを決めます。

Workers Logs

Workers Logs は、ユーザー Worker のログを Cloudflare アカウントに自動保存します。Query Builder または Workers Observability API で照会できます。フルマネージドなので、データベースの立ち上げ、Logpush の設定、Tail Worker のデプロイなしに、独自ダッシュボードでユーザーごとのログビューを出せます。

ユーザー Worker で Workers Logs を有効にするには、dispatch namespace へ スクリプトをアップロード するときの metadataobservability 設定を含めます。

{
	"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.enabledfalse にして収集をオフにします。

単一のユーザー Worker のログを照会する

Workers Logs は cloudflare-workers データセットに保存されます。エンドユーザーの代わりに Workers Observability API を照会するときは、あるテナントが別のテナントのテレメトリを読めないよう、すべてのクエリを特定のユーザー Worker にスコープします。datasetcloudflare-workers に設定)と $metadata.service(ユーザー Worker のスクリプト名)で絞り込みます。

これらのフィルターは、ブラウザーからスクリプト名、データセット、生のフィルターを受け取らず、制御しているスクリプト名をサーバー側で適用します。検索語や期間などエンドユーザー入力でクエリが起動しても、各ユーザーのログは分離されたままです。

Workers Trace Events Logpush

Workers Trace Events Logpush は、Workers の生の実行ログを取得するために使います。詳細は Logpush を参照してください。

Logpush は、dispatch namespace 全体または単一のユーザー Worker に対して有効にできます。dispatch namespace 内のすべてのユーザー Worker のログを取得するには次を行います。

  1. Logpush ジョブ を作成します。
  2. dispatch Worker で ログ を有効にします。

dispatch Worker でログを有効にすると、dispatch Worker と dispatch namespace 内のユーザー Worker の両方のログが収集されます。dispatch namespace に追加された新しい Worker のログは自動収集されます。dispatch namespace 全体ではなく個別のユーザー Worker のログを有効にする場合は、ステップ 1 をスキップし、ユーザー Worker でステップ 2 を完了します。

すべてのログは、アカウントに設定した Logpush ジョブへ転送されます。Logpush フィルターは Outcome または Script Name フィールドに使い、特定の値を含めたり除外したり、異なる送信先へログを送れます。

Tail Workers

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 Analytics Engine は、Workers for Platforms と組み合わせてエンドユーザーへ分析を提供できます。Workers 呼び出しに関するイベントや、ユーザー定義のカスタムイベントを公開できます。プラットフォームは script tag でイベントを書き込み・照会し、ユーザーの利用量の集計を取得できます。

GraphQL Analytics API

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
        }
      }
    }
  }
}

役に立ちましたか?