feat(observability): Phoenix 대상 추가 — 같은 span 에 OpenInference 속성 동봉, PHOENIX_HOST 로 /v1/traces. -12 는 도커 불가라 pip 로 뜨는 Phoenix 로 감(deploy/phoenix)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
340e8e4beb
commit
e60c5bc273
@@ -0,0 +1,35 @@
|
||||
# Phoenix(Arize) — 도커 없이 -12 에 올리는 LLM 관측 서버
|
||||
|
||||
Langfuse 대신 쓰는 이유: -12 는 "컨테이너 안의 컨테이너"가 막혀 있어(CapEff a80425fb, unshare 불가) 도커를 못 씀.
|
||||
Phoenix 는 pip 패키지 하나 = 파이썬 프로세스 하나. 저장은 SQLite 파일(기본). 트레이스·트리·토큰·세션·사용자·평가 다 됨.
|
||||
백엔드는 `PHOENIX_HOST` 만 주면 같은 OTLP span 을 여기로 보냄(`apps/gateway/langfuse.py`, OpenInference 속성 동봉).
|
||||
|
||||
## 1. 패키지 반입 (인터넷 되는 PC, 도커로 리눅스·py3.12 용 wheel 받음)
|
||||
|
||||
```powershell
|
||||
docker run --rm -v "$env:USERPROFILE\Desktop\phoenix-wheels:/out" python:3.12-slim-bookworm bash -c "pip download -q -d /out 'arize-phoenix[pg]'"
|
||||
Compress-Archive "$env:USERPROFILE\Desktop\phoenix-wheels" "$env:USERPROFILE\Desktop\phoenix-wheels.zip" # 확장자 .txt 로 바꿔 메일
|
||||
```
|
||||
|
||||
## 2. -12 에서 설치·기동
|
||||
|
||||
```bash
|
||||
cd /www && unzip -oq phoenix-wheels.zip && mkdir -p /www/phoenix && cd /www/phoenix
|
||||
python3 -m venv .venv && .venv/bin/pip install --no-index --find-links /www/phoenix-wheels 'arize-phoenix[pg]'
|
||||
bash /www/abap-ito/code-assistant/5_django_backend/deploy/phoenix/run.sh # nohup 으로 8915 에 뜸. 재부팅 후에도 이걸로
|
||||
curl -s http://127.0.0.1:8915/healthz
|
||||
```
|
||||
run.sh 가 하는 것: `PHOENIX_PORT=8915 PHOENIX_WORKING_DIR=/www/phoenix/data` 로 `phoenix serve`. 로그 `/www/phoenix/phoenix.log`.
|
||||
고객사 PostgreSQL 에 두고 싶으면 run.sh 의 `PHOENIX_SQL_DATABASE_URL` 주석 풀고 채움(스키마 `phoenix`).
|
||||
|
||||
## 3. 백엔드 연결
|
||||
|
||||
- -12 `code-assistant/5_django_backend/.env`: `PHOENIX_HOST=http://127.0.0.1:8915` → `bash deploy.sh`
|
||||
- -13 `abap-specgen/web/deploy/bare/.env`: `PHOENIX_HOST=http://10.196.81.34:8915` → `run.sh restart`
|
||||
- 웹 UI: 고객사 PC 에서 `http://10.196.81.34:8915` (프로젝트 `codeassist` / `abap-specgen` 로 나뉨)
|
||||
|
||||
## 운영
|
||||
|
||||
- 인증 기본 꺼짐(사내망). 켜려면 run.sh 에 `PHOENIX_ENABLE_AUTH=true PHOENIX_SECRET=<랜덤32자>` — 첫 로그인 admin@localhost / admin
|
||||
- 중지 `pkill -f "phoenix serve"`. 데이터는 `/www/phoenix/data/` (SQLite) — 백업은 그 폴더 복사
|
||||
- 백엔드는 Phoenix 죽어 있어도 멀쩡(전송 실패는 warning 로그만)
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
# Phoenix 기동 — /www/phoenix/.venv 에 설치돼 있다고 가정(README 2번). 이미 떠 있으면 내리고 다시.
|
||||
set -e
|
||||
ROOT=/www/phoenix
|
||||
export PHOENIX_PORT=${PHOENIX_PORT:-8915}
|
||||
export PHOENIX_HOST=0.0.0.0
|
||||
export PHOENIX_GRPC_PORT=${PHOENIX_GRPC_PORT:-4317}
|
||||
export PHOENIX_WORKING_DIR=$ROOT/data
|
||||
export PHOENIX_TELEMETRY_ENABLED=false
|
||||
export PHOENIX_ALLOW_EXTERNAL_RESOURCES=false # 폐쇄망 — 구글 폰트 같은 거 안 부름
|
||||
# export PHOENIX_SQL_DATABASE_URL=postgresql://user:pw@10.196.81.34:5432/dbname # 고객사 PG 쓰려면
|
||||
# export PHOENIX_SQL_DATABASE_SCHEMA=phoenix
|
||||
mkdir -p "$PHOENIX_WORKING_DIR"
|
||||
pkill -f "phoenix serve" 2>/dev/null || true; sleep 1
|
||||
cd "$ROOT" && nohup .venv/bin/python -m phoenix.server.main serve > "$ROOT/phoenix.log" 2>&1 &
|
||||
sleep 6
|
||||
echo "--- health"; curl -s "http://127.0.0.1:$PHOENIX_PORT/healthz" || tail -5 "$ROOT/phoenix.log"; echo
|
||||
Reference in New Issue
Block a user