worker-logs について
worker-logsは、サイトとAPIを実行するCloudflare Workersのライブログを調べるリポジトリ向けスキルです。問題を再現しながら、リクエスト、ステータス、コンソール出力、認証の問題を追跡できます。
主な機能
- 01Workerログのライブストリーミング
- 02リクエストとステータスの確認
- 03ステータス・メソッド・テキストでの絞り込み
- 04JSON形式のログ出力
- 05APIとWeb Workerのログ照合
活用シーン
- 01401または500レスポンスの調査
- 02内部ヘッダーの到達確認
- 03問題の再現中にAPI呼び出しを追跡
- 04サイトとAPIのWorkerログの照合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openagentsinc/ openagents --skill worker-logsインストール後、Claude Code で/worker-logsを入力して読み込まれたか確認します。
詳細
Cloudflare Worker のログを確認する
デプロイ済み Workers 内で何が起きているか、リクエストパス、レスポンスステータス、console.log の出力、エラーを確認する必要がある場合は、このスキルを使用します。メインサイトと API は、それぞれ別の Cloudflare Worker です。
このスキルを使用する場面
- openagents.com または openagents.com/api からの 401/500 をデバッグする場合。
- Worker が想定どおりのヘッダー(例:X-OA-Internal-Key)を受信しているか、また「unauthorized」を返す理由を確認する場合。
- Rust API またはウェブアプリからの console.log/console_error! の出力を確認する場合。
- Khala のログと照合する場合(Khala は API Worker を呼び出します。再現中は API Worker の tail を実行してください)。
このリポジトリの Workers
| Worker | 設定 | ルート | 用途 |
|---|---|---|---|
| openagents-api | apps/api/wrangler.toml | openagents.com/api/* | Rust API:legacyparity、control、D1、R2 など |
| openagents-web-app | apps/web/wrangler.jsonc | openagents.com(メインサイト) | TanStack/React アプリ(Node 互換)。 |
その Worker の設定ファイルがある アプリディレクトリから wrangler tail を実行します(または --config/--cwd を使用します)。
Wrangler tail(リアルタイムのみ)
Cloudflare は CLI 経由で過去の Worker ログを提供していません。取得できるのは、リクエストとログのライブストリームです。過去のデータを確認するには、ダッシュボードの Workers & Pages → 対象の Worker → Logs / Real-time Logs または Logpush を使用してください。
基本的な使い方
# API worker (Rust) — run from apps/api
cd apps/api
npx wrangler tail
# Web app worker — run from apps/web
cd apps/web
npx wrangler tail
コマンドを実行したままにして、ブラウザーで問題を再現します。各リクエストのステータスと console の出力が表示されます。
Tail のオプション
| オプション | 意味 |
|---|---|
--format pretty | 人が読みやすい形式(デフォルト)。 |
--format json | ログ行ごとに 1 つの JSON オブジェクト(例:jq にパイプ)。 |
--status ok | 成功したリクエストのみ。 |
--status error | エラー/失敗のみ。 |
--method GET | HTTP メソッドでフィルター。 |
--search "legacyparity" | console.log メッセージ内のテキストでフィルター。 |
--header "x-oa-internal-key" | ヘッダーの有無でフィルター。 |
--sampling-rate 1 | リクエストを 100% ログに記録(デフォルトではサンプリングされる場合があります)。 |
例
# API worker: only errors, pretty
cd apps/api
npx wrangler tail --status error --format pretty
# API worker: JSON and filter by URL path with jq
cd apps/api
npx wrangler tail --format json | jq 'select(.url | contains("legacyparity"))'
# Web worker: tail while reproducing a page error
cd apps/web
npx wrangler tail
2 つの Worker を 2 つのターミナルで確認する
フローのデバッグ時(例:Hatchery が Khala を呼び出し、Khala が API を呼び出す場合)に、サイトと API の両方を確認するには:
- ターミナル 1:
cd apps/api && npx wrangler tail --format pretty - ターミナル 2:
cd apps/web && npx wrangler tail --format pretty - 任意:Khala のログを 3 つ目のターミナルで確認:
cd apps/web && npx khala logs --prod --success
その後、問題を再現します。API Worker へのリクエストと、console.log/診断出力を確認してください。
制限事項
- リアルタイムのみ:
--historyはありません。tail は Ctrl+C を押すまでストリームを続けます。 - サンプリング: 負荷が高い場合、tail はログをサンプリングすることがあります。サンプリングを抑えるには
--sampling-rate 1を使用してください。 - クライアントは最大 10 個: Worker ごとに、同時に実行できる tail セッションは最大 10 個です。
- シークレット: ログにシークレットを出力してはいけません。診断ログでは長さ、または「present/absent」を使用してください。
診断ログ(このリポジトリ)
legacyparity 認証について、API Worker は次のログを出力します。
legacyparity auth: no internal key header path=...— リクエストは Worker に到達しましたが、X-OA-Internal-Keyヘッダーがありませんでした(例:Khala によって削除された、または Khala から送信されなかった)。legacyparity auth 401: path=... provided_len=... expected_len=...— ヘッダーはありましたが、値が Worker のシークレットと一致しませんでした(長さを比較してください。同じ長さの場合、値が異なります)。legacyparity auth ok path=... key_len=...— 内部キーが一致し、リクエストが認証されました。
401 を再現する間、apps/api から wrangler tail を実行して、どの行が表示されるか確認してください。Khala のアクションは各リクエストの前に [legacyparityApi <label>] fetch key_len=<n> url=... をログに出力します。Worker のログと照合して、Khala が送信した内容と Worker が受信した内容を確認してください。