OpenClaw 구축·운영 (15/26) — Gateway와 24시간 무중단 자동화

OpenClaw Gateway와 24시간 무중단 자동화 설계

macOS LaunchAgent를 활용한 서비스 데몬 운영 및 자가 진단 파이프라인


핵심 요약

  • Gateway는 OpenClaw의 신경 중추이며, 죽으면 모든 게 멈춘다 — KeepAlive는 필수
  • LaunchAgent 설치 후 타임존(TZ) 강제 주입을 누락하면 크론이 엉뚱한 시간에 실행된다
  • Daily Audit 5단계 파이프라인으로 매일 새벽 시스템을 자동 진단한다

배경

운영 중 가장 당혹스러운 장애는 에이전트의 '침묵'이었다. Mac 재시작 후 텔레그램으로 메시지를 보냈으나 한 시간이 지나도 응답이 없었다. 원인은 단순했다 — Gateway 프로세스가 재시작 후 자동으로 켜지지 않았다. 이 장애를 계기로 모든 상주 프로세스를 OS 레벨(macOS LaunchAgent)로 격상하여 관리하는 아키텍처로 전환했다.

본문

LaunchAgent 설치와 타임존 주입

Gateway 아키텍처

Gateway는 Node.js 기반 데몬 프로세스로, 18789 포트에서 로컬 연결만 허용한다.

  • 통신 중재: 에이전트와 외부 채널(Telegram, Discord, Webhook) 간 메시지 라우팅
  • 리소스 관리: LLM API 호출 및 연결 상태 모니터링
  • 스케줄링: 시스템 내 모든 크론 작업의 실행 엔진

LaunchAgent 설치와 타임존 주입

openclaw gateway install
openclaw gateway status

설치 직후 반드시 타임존을 명시적으로 주입해야 한다. 이를 간과하면 크론이 UTC 기준으로 실행된다.

/usr/libexec/PlistBuddy -c \
  "Add :EnvironmentVariables:TZ string Asia/Seoul" \
  ~/Library/LaunchAgents/ai.openclaw.gateway.plist
Daily Audit 파이프라인

핵심 서비스 인벤토리

서비스 목적 실행 정책
ai.openclaw.gateway Gateway 메인 프로세스 KeepAlive
com.openclaw.ollama-warmup 로컬 모델 사전 로드 부팅 시 1회
com.openclaw.ollama-proxy 파라미터 주입 프록시 KeepAlive
com.user.daily-audit 보안 통합 감사 매일 05:00 KST
com.user.oc-update-check 엔진 업데이트 확인 매일 06:00 KST

Daily Audit 파이프라인

매일 새벽 5시에 구동되는 5단계 진단 프로세스:

  1. Phase A: 공식 문서 스냅샷 비교, 업데이트 사항 추출
  2. Phase B: 변경 사항 시 Headless Claude Code로 로컬 매뉴얼 동기화
  3. Phase C: 파일 포맷 검증, 엔티티 감사 등 12개 진단 스크립트 순차 실행
  4. Phase D: 결과를 JSON 파일로 저장, 로그 로테이션
  5. Phase E: 홈 서버로 전송 준비

Hot Reload와 크론 관리

  • Hot Reload: 모델 교체, 프롬프트 수정 등은 재시작 없이 즉시 반영
  • Cold Restart: 포트 바인딩, 인증 방식 변경 시에만 자동 재시작
  • sessionRetention: 24h 설정으로 24시간 경과한 크론 세션 자동 폐기

시행착오 / 주의사항

  • Gateway 구동 실패: plutil 명령으로 plist 유효성 점검
  • 포트 점유 충돌: lsof -i :18789로 좀비 프로세스 확인
  • 설정 파일 오류: Gateway는 fail-closed 정책을 따른다. 콤마 하나 누락이면 시작을 거부하므로, 편집 후 python3 -m json.tool로 반드시 검증

마무리

수동 스크립트는 한계가 있다. LaunchAgent를 통한 서비스화가 진정한 무중단 운영의 시작이다. 타임존 누락 같은 환경 변수 문제는 당장 오류를 뱉지 않아 발견이 늦으므로, 설치 직후 확립해야 한다. Fail-closed 정책 덕분에 런타임의 예측 가능성은 높아지지만, 운영자의 설정 수정 실수에 무자비하다 — 설정 파일 검증 자동화는 필수다.

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"