mcpField
A
antithesis-query-logs

antithesis-query-logs

github.com/antithesishqテスト・品質302448 回インストール1 週間前に更新
リポジトリ

antithesis-query-logs について

antithesis-query-logs は、完了した Antithesis テスト実行の全タイムラインを調べるスキルです。時間条件での絞り込みとマルチバースマップ分析により、テスト担当者が独立した障害と連鎖障害を見分け、イベントの関連を調査できます。

主な機能

  1. 01全タイムラインのイベント検索
  2. 02イベント順序による絞り込み
  3. 03マルチバースマップで障害を表示
  4. 04独立した障害クラスターの集計
  5. 05検索 URL の作成とデコード

活用シーン

  1. 01障害が先行障害から連鎖したか確認
  2. 02障害と注入された障害イベントの関連付け
  3. 03構成別の障害パターンの比較
  4. 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.js
build-url.py
references/
map.md
query-builder.md
results.md
temporal-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.mdpreceded-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 に実際にアクセスする必要がある手順でのみ、ページ内ランタイムを使用します。

推奨ワークフロー

カスケードの切り分け
  1. セッション ID を取得します。トリアージレポートの「Explore logs」リンクから抽出するか (python3 assets/build-url.py decode --url "$EXPLORE_LOGS_URL" | jq -r .s)、 既存の Logs Explorer URL から取得します。
  2. Python CLI でシンプルな failure URL を構築します。
    python3 assets/build-url.py failure \
      --session-id "$SESSION_ID" --property "my-failing-property" \
      --tenant "{tenant}.antithesis.com"
    
  3. URL を agent-browser open で開き、ランタイムを注入して検索を実行し、 window.__antithesisQueryLogs.search() で件数を確認します。
  4. 時系列 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"
    
  5. その URL に移動して検索を実行し、新しい件数を記録します。
  6. 件数が減った場合、その差分がカスケード障害です。変わらない場合、 障害は独立しています。
イベントの詳細を使った障害の相関分析
  1. プロパティ障害を検索します
  2. 複数の結果で {} の詳細を展開します
  3. 結果ごとに異なる詳細フィールドを特定します(例:構成モード、 フィーチャーフラグ、コンテナー名、プロトコルのバージョン)
  4. 特定の詳細値に障害が集中しているかを確認します。すべての 障害に共通し、他の成功イベントには見られない詳細がある場合、 その詳細は根本原因の一部である可能性が高いです
独立したクラスターの分析
  1. プロパティ障害を検索します
  2. Map タブに切り替えます
  3. 障害を示す点があるタイムラインの分岐の数を数えます
  4. 同じ分岐上にある障害は、同じ根本原因による可能性が高いです
  5. 調査するため、各クラスターから代表的な例を 1 つ選びます

出力

  • イベント数(マッチ総数、時間によるフィルタリング後のマッチ数)
  • イベントの詳細(タイムスタンプ、タイムライン、アサーションの詳細、カスタムのキーと値のペア)
  • マルチバースマップからのクラスター数
  • 各失敗の前後のログコンテキスト(障害イベント、先行する操作)

コメント