インフラ・DevOps
Show HN: AgentSight – AIエージェント向けのeBPFオブザーバビリティ、コード変更不要
Show HN: AgentSight – eBPF observability for AI agents, no code changes (github.com)
要約
AgentSightは、eBPFを基盤としたインストルメンテーション不要のAIエージェントオブザーバビリティツールです。カーネルレベルでLLM APIコール、トークン消費、プロセス動作をキャプチャし、エージェントコードの変更なしにLinux上で動作するAIエージェントのフルスタックオブザーバビリティを提供します。トークン消費分析、動作監査、リアルタイムでのダッシュボード可視化、エージェントの自動検出、割り込み検出などの機能があります。
全文翻訳
AgentSightAgentSightは、eBPFを基盤としたインストルメンテーション不要のAIエージェントオブザーバビリティツールです。カーネルレベルでLLM APIコール、トークン消費、プロセス動作をキャプチャし、エージェントコードを変更せずにフルスタックオブザーバビリティを提供します。
概要AgentSightは、Linux上で動作するAIエージェント向けのフルスタックオブザーバビリティを提供します。
機能説明
トークン消費分析
エージェント、タスク、モデルごとの多次元トークンアカウンティング。
動作監査
LLMコールとプロセス実行の完全なトレーシング。
ダッシュボード可視化
リアルタイムのトークン傾向、エージェントの健全性、セッショントレースのためのWeb UI。
エージェント自動検出
実行中のAIエージェントプロセスの自動検出。
割り込み検出
LLMエラー、SSEの切り捨て、コンテキストオーバーフロー、クラッシュの検出。
外部ログエクスポート
構造化されたイベントを外部ログサービスにエクスポートするサポート。
前提条件
要件
最小OS Linux Kernel >= 5.8 (BTFサポートが必要)
権限 root または CAP_BPF (eBPFプローブ用)
ANOLISA生パッケージ Linux x86_64, システムモード
macOS: macOSでは、AgentSightは2つのコマンドを提供します — trace (ローカルJSONLセッションファイルをスキャンするトラジャクトリコレクタ、eBPFなし) と serve (ダッシュボードビューア)。それ以外のeBPF依存コマンドはLinuxのみです。
インストール
ANOLISA CLIを使用して公開コンポーネントをインストールします:
# 推奨 (システムモードが必要 — eBPFにはrootが必要です)
sudo anolisa install agentsight
# 代替 (Alinux, YUMリポジトリ設定が必要)
sudo yum install agentsight
# ソースビルド (開発者のみ)
cd src/agentsight && make build-all
ソースビルドの場合は make build-all を使用します: ダッシュボードフロントエンド、メインバイナリ、agentsight-enforcerを順にビルドします。 make build のみを実行するとエンフォーサーがスキップされ、serve は AgentSight の強制が無効であることをログに記録し続けます。
クイックスタート
通常のデプロイには systemd ユニットを使用します。eBPFトレーシングとダッシュボードを一緒に実行し、必要な順序でエンフォーサー依存関係を開始します:
sudo systemctl enable --now agentsight.service
sudo systemctl status agentsight.service
サービスがアクティブになったら http://localhost:7396 を開きます。メインユニットを有効にすると、再起動後も AgentSight が利用可能になります。バンドルされた systemd ランチャーは、ダッシュボードを 0.0.0.0 にバインドします。ホストを信頼できないネットワークに公開する前に、ポート 7396 をファイアウォールまたはセキュリティグループで制限してください。サービスはプライベート umask で root として実行され、データは /var/log/sysak/ に格納されます。このサービスが所有するデータを読み取る CLI クエリやダッシュボードアクセスコマンドには sudo を使用してください。フォアグラウンドでのトラブルシューティングのために、システムdユニットを最初に停止して、競合しないようにします。その後、2つのターミナルを使用し、両方のコマンドを root として実行します。agentsight trace がフォアグラウンドにとどまるため、両方が連続して入力されると2番目のコマンドは到達しません:
sudo systemctl stop agentsight.service
# ターミナル 1
sudo agentsight trace
# ターミナル 2: ダッシュボードを開始
sudo agentsight serve
# ブラウザで http://localhost:7396 を開く
# ダッシュボードのURLとトークンを表示し、デスクトップユーザーとしてURLを開きます
sudo agentsight dashboard --no-open
ローカルホストアクセスは認証不要です。リモートアクセスにはトークンが必要です。詳細はダッシュボードアクセスと認証を参照してください。
使用方法
agentsight trace — eBPFトレーシングを開始
カーネルレベルでAIエージェントのアクティビティキャプチャを開始します。
sudo agentsight trace
root権限が必要です。
SSL/TLSトラフィック、プロセスイベント、ファイル操作をキャプチャします。
フォアグラウンドトレーサーを開始する前に sudo systemctl stop agentsight.service を実行してください。
agentsight serve — APIとダッシュボードを開始
# デフォルト: 127.0.0.1:7396 にバインド
sudo agentsight serve
# すべてのインターフェイスにバインド (リモートアクセス)
sudo agentsight serve --host 0.0.0.0 --port 7396
trace と同じユーザーで serve を実行し、両方のコマンドが同じデータディレクトリを解決するようにします。0.0.0.0 へのバインドはすべてのインターフェイスでダッシュボードを公開します。その形式を使用する前にネットワークアクセスを制限してください。
ダッシュボードアクセスと認証
ダッシュボードトークン認証はデフォルトで有効になっています:
ローカルホストアクセス (ループバック) は認証をバイパスします — http://127.0.0.1:7396 を開くだけです。
リモートアクセスにはトークンが必要です: ブラウザのURLに ?token=<TOKEN> を追加するか、Authorization: Bearer <TOKEN> HTTPヘッダーを設定します。
トークンは、最初の serve 起動時に自動生成され (64文字の16進数)、データベースの隣の .dashboard_token ファイルに永続化されます (デフォルトは /var/log/sysak/.agentsight/.dashboard_token)。再起動後も再利用されます。
sudo agentsight dashboard --no-open を実行して、サービスが所有するアクセスURLとトークンを表示し、デスクトップユーザーとしてURLを開きます。
認証を無効にするには (信頼できる内部ネットワークでのみ推奨)、設定ファイルで次のように設定します:
{
"server": {
"auth": {
"enabled": false
}
}
}
/etc/agentsight/config.json を編集した後、 sudo systemctl reload agentsight.service を実行して変更を適用します — 再起動は不要です。
APIエンドポイントリスト
GET /api/docs は完全なAPIルートインベントリ (メソッド、パス、説明) を返します。これにより、スクリプトや統合がエンドポイントを発見できます。未知の /api/ パスへのリクエストも 404 レスポンスでここに誘導されます。
curl http://127.0.0.1:7396/api/docs
agentsight dashboard — ダッシュボードアクセス情報を表示
ダッシュボードのURLと認証トークンを表示し、ブラウザを開こうとします。ECSインスタンスでは、セキュリティグループの設定ガイドも表示します。
# root が所有するブラウザを開かずにURLとトークンを表示
sudo agentsight dashboard --no-open
agentsight summary — 統合概要
最近の時間枠で集計されたセッションとトークン使用量、重大度別にグループ化された割り込みイベント、およびトークンなしの節約 — 全体的な健全性の概要を1つのコマンドで確認できます。
# 過去24時間 (デフォルト)
agentsight summary
# 過去7日間、JSON出力
agentsight summary --last 168 --json
データソースは独立して劣化します: データベースが見つからない場合でも、他のレポートに影響を与えることなくゼロが寄与されます。
agentsight token — トークン使用量をクエリ
# 今日の使用量
sudo agentsight token
# 週次比較
sudo agentsight token --period week --compare
# JSON出力
sudo agentsight token --json
agentsight audit — 監査イベントをクエリ
# 最近のイベント
agentsight audit
# PIDとタイプでフィルタリング
agentsight audit --pid 12345 --type llm
# サマリー統計
agentsight audit --summary
agentsight discover — エージェントをスキャン
# 実行中のAIエージェントを発見
agentsight discover
# 既知のエージェントタイプをリスト
agentsight discover --list-known
agentsight interruption — セッション割り込みイベント
AIエージェントセッションの割り込みイベントをクエリおよび管理します。
割り込みタイプ:
タイプ 説明 深刻度 (デフォルト)
llm_error HTTPステータス >= 400 または SSE本文にエラーが含まれる 高
sse_truncated SSEストリームが finish_reason=stop なしで終了 高
context_overflow コンテキスト長を超過 高
agent_crash エージェントプロセスがセッション中に消滅 致命的
token_limit finish_reason=length で出力が最大値に近い 中
# 割り込みイベントをリスト (デフォルト: 過去24時間)
agentsight interruption list [--last <HOURS>] [--type <TYPE>] [--severity <LEVEL>]
# タイプ別の統計
agentsight interruption stats
# 重大度別のカウント
agentsight interruption count
# IDで単一イベントを取得
agentsight interruption get <ID>
# セッション/会話のすべての割り込みイベントをリスト
agentsight interruption session <SESSION_ID>
agentsight interruption conversation <CONVERSATION_ID>
# 解決済みとしてマーク
agentsight interruption resolve <ID>
設定
設定ファイル: /etc/agentsight/config.json (--config で上書き可能)。
重要: ユーザー設定ファイルは、組み込みのデフォルトルールを拡張するのではなく、置き換えます。必要なすべてのエージェントルールが設定に含まれていることを確認してください。
機能フラグ
JSONパス 説明 デフォルト
features.token_stats コア トークンアカウンティング 真
features.sqlite_storage.enabled ローカル永続化 真
features.interruption_detection.enabled エラー/クラッシュ検出 真
features.audit LLMコール監査 真
features.session_mapping.enabled responseId→sessionId 真
実行時制限
設定 説明 デフォルト
event_channel_capacity プローブイベントのバウンドチャネル容量 10,000
pending_genai_max_count セッションIDを待機中の最大イベント数 1,000
max_connection_body_mb 単一HTTP接続 8