exploring-endpoint-execution-logs について
特定の PostHog エンドポイントの実行ログを調べるスキルです。失敗、キャッシュの動作、返却行数の確認に使えます。ログの絞り込みとエンドポイント設定を組み合わせ、実行エラーと追加分析が必要な性能問題を区別します。
主な機能
- 01指定したエンドポイントのログ検索
- 02レベル、時刻、テキストによる絞り込み
- 03実行経路、キャッシュ、行数の確認
- 04SQL による実行傾向の集計
- 05設定からバージョンを確認
活用シーン
- 01エンドポイントの最近の失敗を調査
- 02実行時のキャッシュ利用を確認
- 03バージョン間で返却行数を比較
MCP 対応
MCP ツールの endpoint-logs、endpoint-get、execute-sql を使い、ログ、設定、集計データを読み取ります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ posthog/ skills --skill exploring-endpoint-execution-logsインストール後、Claude Code で/exploring-endpoint-execution-logsを入力して読み込まれたか確認します。
詳細
エンドポイント実行ログの確認
各エンドポイントの実行時に、PostHog の log_entries ストアへ実行ログが 1 件出力されます。このスキルでは、特定のエンドポイントのログエントリを読み取り、「実行時に何が起きたか?」を確認できます。これは、設定と query_log からキャッシュ/マテリアライズ戦略を判断する diagnosing-endpoint-performance に対する、ログレベルでの補完機能です。
このスキルを使う場面
- 「エンドポイントが失敗する/エラーになるのはなぜですか?」
- 「エンドポイント X のログ/最近の実行を見せてください」
- 「直近の実行ではキャッシュが使われましたか? 何行返されましたか?」
- 「エンドポイント Y の前回の実行時に何が起きましたか?」
「このエンドポイントは遅いのですが、何を変更すればよいですか?」という質問には、
diagnosing-endpoint-performance を使ってください。プロジェクト全体に関する質問(「整理できるものはありますか?」)には、
auditing-endpoints を使ってください。
実行ログエントリの形式
各実行につき、エントリが 1 件だけ生成されます。成功時のレベルは INFO、失敗時は ERROR です。メッセージには、検索可能な key=value トークンとして追加データが含まれます。
Endpoint executed · path=materialized cache=hit duration_ms=142 rows=1024 version=3
Endpoint execution failed · path=inline error=ResolutionError version=3
トークンの意味:
| トークン | 値 | 意味 |
|---|---|---|
path | materialized / inline / ducklake / ducklake_fallback | 実行された経路 |
cache | hit / miss | クエリ結果キャッシュが使われたか(ducklake の場合は省略) |
duration_ms | integer | 実行にかかった実時間 |
rows | integer | 返された結果の行数 |
version | integer | 実行されたエンドポイントのバージョン |
error | 例:ResolutionError、HogVMException | エラークラス/HogQL コード名(失敗時のみ) |
実行ごとに異なる instance_id が付与されるため、ビューアーではログを実行単位でグループ化できます。
利用可能なツール
| ツール | 用途 |
|---|---|
endpoint-logs | 主なツール。名前で指定した 1 つのエンドポイントの実行ログエントリを取得します。レベル、検索語、時間範囲、instance_id で絞り込めます。limit は最大 500 です。 |
endpoint-get | コンテキスト確認用のエンドポイント設定(現在のバージョン、マテリアライズ、クエリ種別) |
execute-sql | 代替手段。log_entries(log_source='endpoints')を直接対象に集計します |
絞り込み
endpoint-logs では、標準のログフィルターを利用できます。
- level — カンマ区切りで指定します。例:失敗した実行のみを表示する場合は
ERROR、すべて表示する場合はINFO,ERROR。 - search — メッセージ内の大文字と小文字を区別しない部分文字列検索です。追加データは
key=valueトークン形式のため、cache=miss、path=inline、error=ResolutionError、または特定のversion=3を検索できます。 - after / before — 時間範囲を指定する ISO タイムスタンプです。
- instance_id — 特定の実行を指定します。
- limit — 1~500(デフォルトは 50)です。
ワークフロー
-
名前でエンドポイントを特定します。URL が指定されている場合は、
/api/projects/{team_id}/endpoints/{name}/runから解析します。 -
まず広く確認します。エンドポイントの最近の期間を指定して
endpoint-logsを実行し、レベルとトークンに目を通します。 -
症状に合わせて絞り込みます。
- 失敗の場合 →
level=ERRORを指定し、error=トークンとpath=を確認して、どこで問題が発生したかを把握します。 - キャッシュに関する懸念の場合 →
search=cache=missを指定し、実行でキャッシュがミスする頻度を確認します。 - 結果が誤っている場合 → 実行間で
rows=を比較し、version=を確認して、バージョン更新後にリグレッションが発生していないかを調べます。
- 失敗の場合 →
-
多数の実行にわたる件数や傾向(例:1 週間のエラー率)を調べるには、
log_entriesに対してexecute-sqlを使います。SELECT toDate(timestamp) AS day, upper(level) AS level, count() AS runs FROM log_entries WHERE log_source = 'endpoints' AND log_source_id = '<endpoint_uuid>' GROUP BY day, level ORDER BY day DESCendpoint-getからエンドポイントの UUID を取得します(log_source_idはエンドポイント名ではなく、エンドポイント ID です)。 -
何が、いつから、どのバージョン/パスで失敗しているのか、また設定の問題なのか(
diagnosing-endpoint-performanceに引き継ぎます)、クエリのバグなのかをまとめます。
やり取りの例
User: "weekly_signups started erroring this morning"
Agent steps:
- endpoint-logs weekly_signups, level=ERROR, after=<this morning>
→ several "Endpoint execution failed · path=inline error=ResolutionError version=5"
- endpoint-get weekly_signups → current version is v5 (bumped today)
- endpoint-logs weekly_signups, level=INFO, before=<this morning>
→ prior runs: "path=inline cache=hit ... version=4" succeeded
- "v5 (created this morning) is failing with a ResolutionError on the inline path — it can't
resolve a table or field reference. v4 ran fine. This looks like a bad query in the new
version. Want me to pull the v5 query (endpoint-versions) so we can fix it, or roll back to v4?"
重要な注意事項
- 実行ごとに 1 件です。 ステップごとのトレースはありません。エンドポイントは完了を示す行を 1 行だけ記録します。詳細は複数行ではなく、トークンに含まれています。
log_source_idはエンドポイントの UUID です。 エンドポイント名ではありません。execute-sqlを使う場合は、先にendpoint-getで取得します。- ログの保持期間は約 90 日(
log_entriesの TTL)です。それより古い実行は表示されません。 - 実行ログ ≠ クエリのパフォーマンスです。
endpoint-logsでは、何が起きたか、実行がなぜ失敗したかが分かります。「マテリアライズすべきか/キャッシュ TTL を延長すべきか」を判断するには、設定とquery_logのコスト指標を分析するdiagnosing-endpoint-performanceを使います。 - ログ出力はベストエフォートです。 各実行後にログ行が出力されますが、実行がブロックされることはありません。呼び出し元では実行が成功したのにログが見つからない場合は、クエリではなくログ出力が破棄されたことを意味します。