機能

オブザーバビリティ (OTel)

セッションの進行をどこで見るか、そして OTLP のサンプル collector を立ち上げて試す方法

Werft は設定するまで OpenTelemetry トレースをエクスポートしない(デフォルトはオフ)。有効にするキーはAPI サーバー運用ドキュメントにある。以下のサンプル collector は、OTLP を受ける側を立ち上げて試すためのものである。

今見られる場所

何をどこで
セッションで起きたこと(モデルの回答、ツール呼び出しと結果、権限リクエスト、状態変化)イベントストリーム GET /v1/sessions/{id}/events(ストリーミングの受信)
コマンド一つの結果receipt GET /v1/receipts/{id}(receipt)
コストと tokenGET /v1/sessions/{id}/usage(状態とライフサイクル)
サーバーの状態GET /readyz、API·worker の stdout JSON ログ

イベントは DB に保存された正本である。エンジンのメッセージのうち秘密に見える値は、保存前に [REDACTED] に伏せられる。イベントを読めるのは、sessions:read を持ち、そのセッションを閲覧できる主体だけである。

curl -sS -w '\n' "$API/readyz"
{"status":"ready","checks":{"database":"ok","schema":"ok","config":"ok"}}

サンプル collector を立ち上げる

リポジトリの infra/observability/ に collector のサンプルが二つある。どちらも Werft スタックとは別に立ち上がる compose project で、前段に OpenTelemetry Collector を置いて OTLP/HTTP を受ける。一台のコンピューターで確認するためのもので、運用構成ではない。ポートはすべて loopback にのみ開く。

サンプルOTLP/HTTP の受け口画面受けるシグナル
Grafana LGTM (infra/observability/lgtm/)http://127.0.0.1:26318http://localhost:26000トレース, ログ, メトリクス
Langfuse (infra/observability/langfuse/)http://127.0.0.1:25318http://localhost:25000トレース

以下は Grafana LGTM である。リポジトリのルートで実行する。

docker compose -p werft-obs-lgtm -f infra/observability/lgtm/compose.yml up -d --wait

テストトレースを送る

send-test-span.sh は、今後 Werft が送る形に似せたダミーのトレースを一つ送る。werft.turn の下にモデル呼び出し(werft.llm_request)とツール呼び出し(werft.tool)がある。--with-log を指定すると、同じトレースに紐づくログも 1 行送る。

infra/observability/send-test-span.sh http://127.0.0.1:26318 --with-log | tee span.txt
TRACE_ID=$(sed -n 's/^trace_id=\([0-9a-f]*\) .*/\1/p' span.txt)
trace_id=… session_id=ses_test_…

Grafana(http://localhost:26000、ログインなし)の Explore → Tempo でトレース ID を指定して探す。一つのセッションのターンをすべて見るには、TraceQL { span.werft.session_id = "<session_id>" } で検索する。ログは Explore → Loki で {service_name="werft-api"} を指定して探す。API でも確認できる。

until curl -sf "http://127.0.0.1:26000/api/datasources/proxy/uid/tempo/api/traces/$TRACE_ID" -o trace.json; do
  sleep 2
done
jq -r '[.batches[].scopeSpans[].spans[].name] | sort | join(" ")' trace.json
werft.llm_request werft.tool werft.turn

停止する

-v は保存したトレースも削除する。

docker compose -p werft-obs-lgtm -f infra/observability/lgtm/compose.yml down -v

Langfuse サンプルのアカウントとキー、画面での探し方はセッションデータが流れる経路にある。

次のステップ

このページ