| name | o11y-status |
| description | agent-o11y 観測スタック(Langfuse・OpenObserve・OTel Collector)の全体状態を確認する。「スタック動いてる?」「フックは有効?」「どのサービスが落ちてる?」という質問や、セットアップ直後・トラブル時・動作確認時に自動的に使うこと。 |
o11y-status — 観測スタック状態確認
agent-o11y のスタック全体の状態を確認し、「何が動いていて何が動いていないか」を一目でわかる形で報告する。
手順
以下を順番に実行し、結果を収集する。コマンドの失敗(接続拒否・タイムアウト・権限拒否)は「停止中」または「確認不可」として記録し、処理を止めずに続ける。
1. Docker サービス一覧
cd ~/Projects/agent-o11y && docker compose ps
2. Langfuse ヘルスチェック
まず curl を試みる。権限拒否やタイムアウトの場合は docker compose ps の STATUS(healthy/Up)で代替。
curl -s --max-time 3 http://localhost:3000/api/public/health
- 成功:
{"status":"OK","version":"..."} → バージョンも表示
- 失敗: Docker STATUS が
(healthy) なら「正常(Docker healthy)」、それ以外は「停止中」
3. OpenObserve ヘルスチェック
同様に curl を試み、失敗時は Docker STATUS で代替。
curl -s --max-time 3 http://localhost:5080/healthz
4. OTel Collector ポート確認
ss -tlnp | grep -E '4317|4318'
該当行があればリッスン中。なければ Collector が停止中。
5. Langfuse フック確認
settings.json からフックの設定状態と TRACE_TO_LANGFUSE の値を取得する。
cat ~/.claude/settings.json | python3 -c "
import json, sys
s = json.load(sys.stdin)
env = s.get('env', {})
hooks = s.get('hooks', {}).get('Stop', [])
trace = env.get('TRACE_TO_LANGFUSE', '')
hook_cmd = ''
for h in hooks:
for hh in h.get('hooks', []):
if 'langfuse' in hh.get('command', ''):
hook_cmd = hh['command']
print(f'TRACE_TO_LANGFUSE={trace if trace else \"(未設定)\"}')
print(f'Stop フック={hook_cmd if hook_cmd else \"(未登録)\"}')
"
6. フック最終成功時刻の確認
grep -a "Processed" ~/.claude/state/langfuse_hook.log 2>/dev/null | tail -1
ログが存在しない、または出力がない場合は「ログなし(未実行または無効)」と記録。
成功ログの形式: 2026-04-12 08:07:25 [INFO] Processed N turns in X.XXs
出力フォーマット
結果を以下の構造で報告する。状態は ✓ 正常 / ✗ 停止中 / ⚠ 要確認 で示す。
## agent-o11y スタック状態
### Docker サービス
(docker compose ps の出力をそのまま表示)
### サービスヘルスチェック
| サービス | 状態 | 詳細 |
|----------------|---------------|-------------------------------|
| Langfuse | ✓ 正常 | v3.x.x(HTTP確認) |
| OpenObserve | ✓ 正常 | Docker healthy |
| OTel Collector | ✗ 停止中 | :4317 :4318 未リッスン |
※ curl 権限拒否の場合は「Docker healthy」で代替した旨を注記する
### Langfuse フック
| 設定 | 値 |
|-------------------|---------------------------------------|
| TRACE_TO_LANGFUSE | true |
| Stop フック | uv run ~/.claude/hooks/langfuse_hook.py |
| 最終成功 | 2026-04-12 08:07:25(または「ログなし」)|
---
✓ 全サービス正常稼働中 ← または ✗ 問題あり: <サービス名> が停止中
最終行は必ず ✓ 全サービス正常稼働中 か ✗ 問題あり: <サービス名> のいずれかにする。
補足
TRACE_TO_LANGFUSE が未設定・true 以外の場合、Langfuse フックはスキップされる。フックを有効にするには ~/.claude/settings.json の env セクションに "TRACE_TO_LANGFUSE": "true" を手動追加する必要がある(manage.py setup は自動で書き込まない)
langfuse-worker は healthcheck が定義されていないため docker compose ps で (healthy) が表示されない。これは正常
- 初回起動時は ClickHouse マイグレーションに 60〜120 秒かかるため、Langfuse が一時的に停止中に見えることがある