antithesis-query-logs について
antithesis-query-logs は、完了した Antithesis テスト実行の全タイムラインを調べるスキルです。時間条件での絞り込みとマルチバースマップ分析により、テスト担当者が独立した障害と連鎖障害を見分け、イベントの関連を調査できます。
主な機能
- 01全タイムラインのイベント検索
- 02イベント順序による絞り込み
- 03マルチバースマップで障害を表示
- 04独立した障害クラスターの集計
- 05検索 URL の作成とデコード
活用シーン
- 01障害が先行障害から連鎖したか確認
- 02障害と注入された障害イベントの関連付け
- 03構成別の障害パターンの比較
- 04障害が共通するタイムライン分岐の特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ antithesishq/ antithesis-skills --skill antithesis-query-logsインストール後、Claude Code で/antithesis-query-logsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/antithesis-query-logs.jsbuild-url.pyreferences/map.mdquery-builder.mdresults.mdtemporal-queries.md詳細
Antithesis ログエクスプローラー
スキルのバージョン: 2026-09-23 a8fe900
目的と目標
Antithesis のテスト実行に含まれるすべてのタイムラインを検索し、イベントを見つけ、プロパティの失敗を関連付け、順序や因果関係に関する時間的な質問に回答します。対象には、カスケードの排除、障害の相関、根本原因の仮説検証、「X が Y より前に発生した場合」といったクエリが含まれます。
ログエクスプローラーは、トリアージで使用する例ごとのログビューアーとは異なります。トリアージ用のログビューアーは、1 つのイベントを中心に 1 つのタイムラインを表示します。ログエクスプローラーは、実行内のすべてのタイムラインを対象に検索し、時間的なクエリ(前に発生した、前に発生していない、後に発生した、後に発生していない)をサポートし、結果をマルチバースマップ上に視覚化します。
使用する場面
- プロパティの失敗が独立したものか、より前に発生した失敗からのカスケードかを調査する場合
- タイムライン全体で、失敗が独立して何回発生したかを数える場合
- 失敗とフォールトインジェクションイベントを関連付ける場合
- バックエンド構成間で失敗のパターンを比較する場合
- 失敗が同時に発生するタイムラインのクラスターを特定する場合
前提条件
snoutyがインストールされていない場合は、先に進まないでください。インストール方法についてはhttps://raw.githubusercontent.com/antithesishq/snouty/refs/heads/main/README.mdを参照してください。agent-browserがインストールされていない場合は、先に進まないでください。インストール方法についてはhttps://raw.githubusercontent.com/vercel-labs/agent-browser/refs/heads/main/README.mdを参照してください。agent-browserのバージョンがv0.23.4より古い場合は、先に進まないでください。agent-browser upgradeでアップグレードできます。jqがインストールされていない場合は、先に進まないでください。インストール方法についてはhttps://jqlang.org/download/を参照してください。assets/build-url.py用のpython3(>= 3.10。標準ライブラリのみ)。- 完了済みの Antithesis 実行。特定の実行 URL がない場合は、まず
antithesis-triageスキルの実行検出ワークフローを使用して見つけてください。 agent-browserがインストールされ、Antithesis テナントで認証済みであること
主な概念
- 時間的クエリ:イベント X の前または後にイベント Y が発生した(または発生していない)かを検索します。カスケード失敗を除外するために使用します。
- マルチバースマップ:タイムラインツリーを視覚化したものです。失敗は点として表示されます。関連するタイムライン上の点のクラスターは、共通の根本原因を示唆します。
- 独立クラスター数:失敗が現れる個別のタイムライン分岐の数です。「2 つのクラスターで 8 件の失敗」は、単に「8 件の失敗」とするよりもはるかに有用です。独立した再現が何件あるかが分かります。
- セッション ID:各実行には、すべてのクエリの対象を特定する一意のセッション ID があります。誤ったセッションに対するクエリは結果を返しません。セッション ID は、エンコードされた検索 URL パラメーターに含まれています。
重要:フィールド名
ログエクスプローラーでは、複数形ではなく単数形のフィールド名を使用します。
assertion.message— プロパティ/アサーション名(assertions.messageではありません)assertion.status—passingまたはfailing(assertions.statusではありません)general.output_text— ログの出力テキスト
assertion.status フィールドでは、contains ではなく matches 演算子が必要です。それ以外のテキストフィールドでは contains を使用します。
セッションの設定
共有の Antithesis 認証を使って agent-browser を使用します。
SESSION="logs-explorer-$(date +%s)-$$"
agent-browser --session "$SESSION" --session-name antithesis --profile antithesis --args "--no-sandbox"
ログエクスプローラーの起動
実行を正しく選択した状態でログエクスプローラーを開く方法は 3 つあります。
方法 1:トリアージレポートから(推奨)
まずトリアージレポートに移動し、次に「Explore logs」リンクを抽出します。この方法が最も確実です。リンクには、正しいセッション ID が URL にすでにエンコードされているためです。
agent-browser --session "$SESSION" eval \
"document.querySelector('a.an-button[href*=\"/search\"]').href"
返された URL に移動します。これにより、正しいセッション/実行が自動的に設定されます。
URL の形式は次のとおりです。
https://{tenant}.antithesis.com/search?search=v5v{base64_encoded_query}
v5v プレフィックスはバージョンを示します。base64 ペイロードには、セッション ID(s フィールド)を含むクエリ JSON が格納されています。クエリ JSON の形式全体については、references/query-builder.md を参照してください。
方法 2:Logs Explorer から直接選択
Logs Explorer ページ上部にある「Show me logs from」ドロップダウン
(div.select_container.event_search_run_selector)をクリックすると、最近の実行が
名前、ステータス(In progress / Completed / Incomplete)、
タイムスタンプとともに一覧表示されます。確認したい実行を選択します。
表示されるはずの実行が見つからない場合は、ページを更新してください。
方法 3:サイドバーから選択
左側のサイドバーナビゲーションで「Logs explorer」をクリックします。実行が
事前選択されていない状態で、https://{tenant}.antithesis.com/search に直接移動します。
次に、「Show me logs from」ドロップダウンから実行を選択します。
agent-browser --session "$SESSION" open "https://{tenant}.antithesis.com/search"
重要:検索する前に、正しい実行が選択されていることを必ず確認してください。 各実行には独自のセッション ID があり、誤ったセッションに対するクエリは 結果を返しません。選択中の実行はページ上部のドロップダウンに表示されます。
リファレンスファイル
| リファレンス | 参照するタイミング |
|---|---|
references/query-builder.md | 検索クエリの作成と実行 |
references/temporal-queries.md | preceded-by / not-preceded-by フィルターの使用 |
references/results.md | 検索結果の確認と詳細への移動 |
references/map.md | クラスター分析での multiverse map の使用 |
URL の構築(推奨)とランタイムの注入
このスキルには 2 つのアセットが含まれています。作業内容に合ったものを選んでください。
-
assets/build-url.py— 単独で動作する Python CLI です。ブラウザーを使わずに Logs Explorer の URL を構築、デコードします。URL だけが必要な場合(例:agent-browser openに渡す、またはブラウザーに貼り付ける場合)はいつでも使用できます。 注入も DOM もセッションも必要ありません。python3 assets/build-url.py failure \ --session-id "$SESSION_ID" \ --property "my-failing-property" \ --tenant "{tenant}.antithesis.com"すべてのサブコマンドについては、
references/query-builder.mdを参照してください(failure、not-preceded-by、not-followed-by、custom、decode)。 -
assets/antithesis-query-logs.js— ページ内ランタイムです。ページとの対話が必要な場合に限り、Logs Explorer ページで注入してください。 たとえば、Search のクリック、結果が表示されるまでの待機、件数や結果行の確認、Map ビューへの切り替えなどです。URL の構築だけなら、ランタイムは必要ありません。cat assets/antithesis-query-logs.js \ | agent-browser --session "$SESSION" eval --stdinこのランタイムは
window.__antithesisQueryLogsを登録します。これを呼び出した際にTypeError: Cannot read properties of undefinedが発生した場合、現在のページにランタイムが注入されていません。先に注入してください。
URL だけが必要な場合は、build-url.py を優先してください。DOM に実際にアクセスする必要がある手順でのみ、ページ内ランタイムを使用します。
推奨ワークフロー
カスケードの切り分け
- セッション ID を取得します。トリアージレポートの「Explore logs」リンクから抽出するか
(
python3 assets/build-url.py decode --url "$EXPLORE_LOGS_URL" | jq -r .s)、 既存の Logs Explorer URL から取得します。 - Python CLI でシンプルな failure URL を構築します。
python3 assets/build-url.py failure \ --session-id "$SESSION_ID" --property "my-failing-property" \ --tenant "{tenant}.antithesis.com" - URL を
agent-browser openで開き、ランタイムを注入して検索を実行し、window.__antithesisQueryLogs.search()で件数を確認します。 - 時系列 URL を構築します。
python3 assets/build-url.py not-preceded-by \ --session-id "$SESSION_ID" --property "my-failing-property" \ --pre-field assertion.message --pre-value "suspected-upstream-failure" \ --tenant "{tenant}.antithesis.com" - その URL に移動して検索を実行し、新しい件数を記録します。
- 件数が減った場合、その差分がカスケード障害です。変わらない場合、 障害は独立しています。
イベントの詳細を使った障害の相関分析
- プロパティ障害を検索します
- 複数の結果で
{}の詳細を展開します - 結果ごとに異なる詳細フィールドを特定します(例:構成モード、 フィーチャーフラグ、コンテナー名、プロトコルのバージョン)
- 特定の詳細値に障害が集中しているかを確認します。すべての 障害に共通し、他の成功イベントには見られない詳細がある場合、 その詳細は根本原因の一部である可能性が高いです
独立したクラスターの分析
- プロパティ障害を検索します
- Map タブに切り替えます
- 障害を示す点があるタイムラインの分岐の数を数えます
- 同じ分岐上にある障害は、同じ根本原因による可能性が高いです
- 調査するため、各クラスターから代表的な例を 1 つ選びます
出力
- イベント数(マッチ総数、時間によるフィルタリング後のマッチ数)
- イベントの詳細(タイムスタンプ、タイムライン、アサーションの詳細、カスタムのキーと値のペア)
- マルチバースマップからのクラスター数
- 各失敗の前後のログコンテキスト(障害イベント、先行する操作)