本文へ移動
runlot
ObservabilityTraces と APM

Traces と APM

トレーサーをインストールせずにすべてのバインディングから得られるスパン、ルートごとのリクエスト数・エラー・レイテンシ、サービスマップ、デプロイ比較、トレースの保管フィルターです。

トレースは runlot.json で、またはダッシュボードの Settings で有効にします。

runlot.json
{
  "observability": {
    "traces": { "enabled": true, "head_sampling_rate": 0.1 }
  }
}

head_sampling_rate はスパンを残す呼び出しの割合で、0 より大きく 1 以下の値です。省略すると 1 になります。判定はリクエストごとに、到着時に 1 回だけ行います。

スパンになるもの

インストールするものはありません。env.db、env.storage、env.ai、キュー、env.email、Durable Object の呼び出し、外向きの fetch は、いずれも Runlot 自身のサービスを通り、そのサービスがスパンを自ら記録します。env.db のスパンには、リテラルを取り除いたステートメント、行数、時間が含まれます。トレース ID はリクエスト ID です。

トレースは W3C の traceparent ヘッダーでサービスをまたいでつながります。受信した traceparent はリクエストのスパンの親になるため、ご自身のシステムで始まったトレースはそのまま Runlot へ続きます。

ルート

APM のすべてはルートテンプレートでグループ化されます。/users/8812/orders ではなく /users/:id/orders であり、1 つのルートが 1 行になります。テンプレートは、次のうち最初に該当するものから決まります。

  1. デプロイしたバンドルから読み取るフレームワークのルートテーブル(Next.js、React Router、SvelteKit、Astro、Nuxt)。
  2. runlot.json で宣言したテンプレート。
  3. 学習したテンプレート: 数値、UUID、16 進数、長いトークンは :id になり、1 時間に 100 を超える異なる値が現れるパスの位置はパラメーターになります。
runlot.json
{
  "observability": {
    "routes": ["/users/:id/orders", "/files/*"]
  }
}

宣言するテンプレートは / で始まり、各セグメントはリテラル、:name、または末尾の * のいずれかです。最大 500 件です。トラフィックに合わないフレームワークのテーブル(1,000 リクエスト後にパスのカバー率が 80 % 未満、または 1 つのテンプレートが半分を超えるパスを捕らえている場合)は除外され、学習の段階に回されます。Observability → Traces には、各ルートがどの段階から来たかが表示されます。学習したテンプレートを固定することも、二度と適用されないよう拒否することもできます。

ルート、内訳、サービスマップ

ビュー表示する内容プラン
Routesルートとハンドラーごとのリクエスト数、エラー、経過時間の p50 から p999Free: 上位 5 ルート。Pro: すべて
Latency breakdownルートの経過時間をスパンの種類(ご自身のコード、env.db、ホスト別の外向き fetch、ストレージ、AI、Durable Objects)で分けたもの。「このルートが遅くなった」のが何のせいかがわかりますPro
Service mapプロジェクト、そのバインディング、Durable Object のクラス、呼び出すプロジェクト、接続する外部ホストと、各エッジのレート、エラー率、p95。スパンから描くため、宣言したものではなく実際に動いたものですPro
Deployment comparison2 つのバージョンを並べたもの。ルートごとのリクエスト数、エラー、レイテンシ、内訳、メモリのピーク、新しいバージョンで初めて見られたエラーグループPro

合成チェックによるトラフィックは、既定でこれらから除外されます。

トレースエクスプローラー

トレースエクスプローラーはトレースを新しい順に並べ、ルート、ステータス(502、または 5xx のようなクラス)、最小の所要時間、エラーのみ、バージョンで絞り込めます。1 件を開くと、そのウォーターフォールとリクエストのログが並んで表示されます。

runlot logs request 4bf92f3577b34da6a3ce929d0e0e4736   # the same waterfall, in the terminal

トレースの保管期間

スパンは、プランがログを保管するのと同じ期間保管します。Free プランは 3 日間、Pro プランは 7 日間です。Pro プランでは、次のいずれかに当てはまるトレースを 30 日間保管します。

  • エラーを含む
  • そのルートで最も遅い 1 % に入る
  • ご自身の保管フィルターのいずれかに一致する

保管フィルターには、ルート、ハンドラー、ステータス(error、5xx、502)、ミリ秒単位の最小の所要時間、またはスパンの属性を指定します。指定したすべての条件に一致する必要があります。Settings で、または POST …/observability/trace-filters で追加します。プロジェクトあたり最大 20 件です。通常の保管期間を超えて保管するバイト数は、GB・月あたり $0.10 で課金されます。

スパンは、プロジェクトあたり 1 日 Free プランで 200,000 件、Pro プランで 2,000,000 件の枠で数えます。枠を超えると、件数は保持され、成功したリクエストの詳細は 1 % に減ります。エラーを含むトレースは引き続き保管されます。

このページの目次