Traces と APM
トレーサーをインストールせずにすべてのバインディングから得られるスパン、ルートごとのリクエスト数・エラー・レイテンシ、サービスマップ、デプロイ比較、トレースの保管フィルターです。
トレースは runlot.json で、またはダッシュボードの Settings で有効にします。
{
"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 行になります。テンプレートは、次のうち最初に該当するものから決まります。
- デプロイしたバンドルから読み取るフレームワークのルートテーブル(Next.js、React Router、SvelteKit、Astro、Nuxt)。
runlot.jsonで宣言したテンプレート。- 学習したテンプレート: 数値、UUID、16 進数、長いトークンは
:idになり、1 時間に 100 を超える異なる値が現れるパスの位置はパラメーターになります。
{
"observability": {
"routes": ["/users/:id/orders", "/files/*"]
}
}宣言するテンプレートは / で始まり、各セグメントはリテラル、:name、または末尾の * のいずれかです。最大 500 件です。トラフィックに合わないフレームワークのテーブル(1,000 リクエスト後にパスのカバー率が 80 % 未満、または 1 つのテンプレートが半分を超えるパスを捕らえている場合)は除外され、学習の段階に回されます。Observability → Traces には、各ルートがどの段階から来たかが表示されます。学習したテンプレートを固定することも、二度と適用されないよう拒否することもできます。
ルート、内訳、サービスマップ
| ビュー | 表示する内容 | プラン |
|---|---|---|
| Routes | ルートとハンドラーごとのリクエスト数、エラー、経過時間の p50 から p999 | Free: 上位 5 ルート。Pro: すべて |
| Latency breakdown | ルートの経過時間をスパンの種類(ご自身のコード、env.db、ホスト別の外向き fetch、ストレージ、AI、Durable Objects)で分けたもの。「このルートが遅くなった」のが何のせいかがわかります | Pro |
| Service map | プロジェクト、そのバインディング、Durable Object のクラス、呼び出すプロジェクト、接続する外部ホストと、各エッジのレート、エラー率、p95。スパンから描くため、宣言したものではなく実際に動いたものです | Pro |
| Deployment comparison | 2 つのバージョンを並べたもの。ルートごとのリクエスト数、エラー、レイテンシ、内訳、メモリのピーク、新しいバージョンで初めて見られたエラーグループ | 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 % に減ります。エラーを含むトレースは引き続き保管されます。