Repository navigation
feat: 기존 Rocky 터널을 재사용한 읽기 전용 모니터 연동 - #81
Conversation
전용 모니터 Bearer와 고정 Worker 바인딩으로 수신 요약만 조회한다. 고유 오류 등록 건수와 처리 상태만 반환하고 모델·잡 실행을 하지 않는다. VPC·SSH·CPU/RAM 감시를 추가하지 않고 koin-api 기록을 제외한다. 오류·오래된 응답은 알 수 없음으로 표시하고 비밀값을 브라우저에 주지 않는다. 검증: 관련 패키지 3개 타입 검사, 오류 자동화 122개와 출근부 14개 테스트 통과. oxlint와 두 Worker dry-run을 통과했다. 실제 로컬 두 Worker와 SQLite에서 정상 빈 조회·제공자 중단·복구를 확인했다. 1280x720·1920x1080 무스크롤 및 모바일 가로 넘침 없음을 확인했다. 운영 활성화는 main 승격과 별도 모니터 secret 설정 후에 수행한다.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
🚀 Deploying Preview to Cloudflare 🚀Preview Deployments by commit
|
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
koin-web | 4b64cf5 | Nov 14 2026, 12:30 AM |
자동 리뷰 결과 (claude-opus-5-5, 독립 검증)
발견 사항
적용된 수정
독립 검증 통과 항목
주의
자동 merge
|
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
koin-api | 4b64cf5 | Nov 14 2026, 12:30 AM |
수신 집계는 최근 목록과 독립적으로 전체 24시간을 계산합니다. Rocky 전용 Bearer와 고정 VPC healthz로 CPU·RAM·서비스 상태만 조회합니다. 모델 호출 없이 수신 요약과 호스트 장애를 분리합니다.
|
사용자의 명시적 강제 머지·배포 요청에 따라 필수 리뷰 대기만 관리자 예외로 우회합니다. 대상 head는 4b64cf582582d4cc7167b0a2d1e43c97c89d2548이며 현재 ESLint·Format·TypeCheck와 세 Workers Builds가 모두 성공했습니다. 로컬 45개 동작 테스트·HTTP 장애/복구·화면 검증도 완료했습니다. 운영 승격은 기존 main PR #80을 사용하며, Rocky 호스트 코드/전용 토큰 반영과 원격 실측은 별도 확인 전까지 미확인으로 유지합니다. |
|
운영 반영 완료: #81·#80 및 운영 Pi 뷰어 보존 보완 #83·#84가 main 03e83c583d9d6ebb4e0aa6a5daab8818318cf4fe에 반영됐습니다. bcsd-attendance 활성 버전은 9ddd8bec-f1d2-4aa8-bbd9-9e6fc49253e2(100%)이며 기존 Access audience·VIEW_STATE namespace·device/Basic secret을 보존하고 전용 ERROR_MONITOR_TOKEN과 service binding만 추가했습니다. 실제 기존 Access 인증을 거친 운영 화면에서 /api/automation 200, ingress=ok, rocky=ok, gateway=responding, CPU/RAM 실측을 확인했습니다. 기존 터널을 통한 두 producer healthz도 200입니다. 브로커 HTTP·모델 생성은 계속 not_probed이며 새 접근 권한·인증 우회·원장 데이터 변경은 없습니다. |
목적
Refs BCSDLab/bcsdpdevops#22
오류 수신 요약과 Rocky 읽기 전용 헬스를 분리해 대시보드에서 관측합니다. Rocky는 기존
koin-omp-gateway-rocky터널과OMP_GATEWAYVPC를 재사용합니다. 새 터널·공개 SSH·WARP/OpenBao 권한은 추가하지 않습니다.변경
GET /healthz: 전용ERROR_MONITOR_TOKEN으로 기존 큐의 24시간 고유 오류 등록 건수·최근 신규 등록 시각·최근 10건을 SELECT만으로 조회합니다. GitHub PR 작업과koin-api기록은 제외합니다.GET /healthz/rocky: 같은 수신 모니터 인증 후 기존 VPC의 고정http://omp-gateway/healthz만 조회합니다. 별도OMP_GATEWAY_MONITOR_TOKEN을 쓰고 모델·실행기·수신 모니터 토큰 재사용은 거부합니다.GET /healthz: uid 소유 0600 파일·0700 부모 디렉터리의 전용 모니터 토큰을 검증합니다. 모델 Bearer와 교차 사용 불가, 모델 처리 중에도 별도 2초 기한으로 동작합니다. 중단을 무시하는 수집기도 기한 초과로 닫힙니다./proc/stat약 200ms 두 표본의 busy 비율(guest 중복 제외, idle+iowait 제외), RAM은MemTotal − MemAvailable입니다. 읽기/시각/카운터 오류는 null이며 임의의 0으로 대체하지 않습니다.not_probed입니다. 헬스 조회는 모델·claim·GitHub 작업을 시작하지 않습니다./api/automation이 두 경로를 병렬로 읽습니다. 최상위 수신 결과와rocky결과는 독립적이며 5초/16KiB·리다이렉트 거절·UTF-8·120초 신선도 검사를 적용합니다. 브라우저에 Bearer를 전달하지 않습니다.수행한 검증
운영 전제
ERROR_MONITOR_TOKEN은 attendance↔error-automation 사이에만,OMP_GATEWAY_MONITOR_TOKEN은 error-automation↔Rocky 사이에만 공유합니다. 모델·실행기 토큰은 그대로 유지합니다.