바쁜 OpenClaw 게이트웨이는 API 키, Slack 사용자 ID, 원시 LLM 대화를 평문 로그에 씁니다. 2026년의 답은 «로그를 끄기»가 아니라 구조화된 싱크, 적극적인 비식별(레덕션), 그리고 macOS 네이티브 로그 로테이션입니다. 임대한 Mac mini 디스크가 새벽에 가득 차서 깨우지 않게 합니다. 본문은 경로를 정리하고, 보존 정책을 정하며, newsyslog 또는 logrotate를 설정하고, 검수를 openclaw doctor에 맞춥니다. 업그레이드와 설정은 게이트웨이 진단, 환경 프로필 위생, 업그레이드 마이그레이션 체크리스트를 함께 보세요.
로그 저장 위치 파악
세 가지에서 시작합니다. LaunchAgent의 StandardOutPath/StandardErrorPath, openclaw.json에 선언된 파일 싱크, 사고 대응 중 임시 리다이렉트입니다. 담당자, 보존 등급, 불변 사본 필요 여부를 표로 적습니다. 스테이징에서 디버그를 상시 켜면 주당 1~4 GB까지 갈 수 있습니다. 프로덕션은 INFO 기본으로 주당 400~800 MB 증가가 목표입니다.
원격 집계로 보낼 때는 송신 트래픽을 주의하세요. LLM이 많은 트레이스는 zstd로 JSON 라인을 압축하면 순수 텍스트보다 약 55% 작아지는 경우가 많습니다.
비식별 패턴
| 데이터 유형 | 패턴 | 조치 |
|---|---|---|
| Bearer 토큰 | Authorization: Bearer … | 디스크 쓰기 전 [REDACTED_BEARER]로 치환. |
| 이메일 | RFC5322 형태 | 티켓 용도에서는 해시 또는 로컬 부분 마스킹. |
| 전화 | E.164 | 감사 모드에서는 국가 코드만 남길 수 있음. |
| 도구 출력 | 파일 시스템 경로 | 홈 디렉터리 접두사 제거로 지문 위험 감소. |
비식별을 켠 뒤 10개의 합성 프롬프트를 돌리고 로그를 diff하세요. 토큰 누락은 verbose 도구 트레이스 처음 200줄에 많습니다.
macOS에서 로테이션
macOS에는 newsyslog가 포함됩니다. 많은 팀이 Linux 플레이북에 맞추려 Homebrew GNU logrotate도 씁니다. 실용 전략: 100 MB 또는 일 단위 중 먼저 도래하는 쪽으로 로테이션; 디스크에는 14세대를 보관하고, 압축 아카이브는 주간으로 객체 스토리지에 업로드합니다.
# newsyslog.conf 예시 줄(경로는 교체)
/path/to/openclaw.log 644 7 100 * G
변경 후 sudo newsyslog -v를 실행합니다. 사용자 정의 pre-rotate 훅이 필요할 때만 LaunchDaemon을 추가하세요. 대부분의 게이트웨이에는 불필요합니다.
디스크 예산과 경보
- APFS 여유가 20% 미만이면 경보, 15% 미만이면 당직자 호출로 격상.
- 백업에서 노이즈 캐시(
~/Library/Caches)는 제외해도 되지만 증가는 모니터링하세요. 브라우저 자동화 프로필이 30 GB까지 부풀어 오른 사례가 있습니다. - TRACE를 켜기 전에 스냅샷을 만드세요. 하룻밤에 5 GB를 넘기면 즉시 레벨을 되돌립니다.
Apple Silicon에서는 디스크 압박이 통합 메모리 압축을 느리게 해 I/O 오류처럼 보이지 않은 채 LLM 지연이 튀는 것처럼 보일 수 있습니다.
운영 리듬
- 매주:
ls -lh로 로테이션된 파일 수를 확인합니다. - 매월: 무작위 500줄을 샘플링해
rg로 토큰 형태 문자열을 검색합니다. - 분기: 샌드박스 Mac mini에서 아카이브를 복원해 비식별 테스트를 다시 실행합니다.
버전 업 시 마이그레이션 체크리스트와 대조해 새 버전이 관리되지 않는 두 번째 로그 경로를 몰래 늘리지 않게 하세요.
원격 전송 보안
Splunk나 OpenSearch로 보낼 때 TLS와 인증서 고정을 쓰고 스테이징·프로덕션 API 키를 분리하세요. 스테이징 HEC 토큰을 프로덕션 인덱스에 잘못 쓴 사례에서는 72시간 규정 준수 정리가 필요했습니다.
구조화 JSON은 파싱은 쉬우나 key=value보다 대략 20% 부피가 큽니다. 집계측이 지원하면 전송에 gzip을 켜세요.
Mac에서 Docker로 OpenClaw를 돌리면 로그 볼륨은 delegated 일관성을 쓰고, 컨테이너와 호스트에서 동시에 로테이션하지 않으면 여러 tail이 파일 디스크립터를 다툽니다.
장애 유형
1차 장애에서는 로그 레벨을 DEBUG로 올리기 쉽습니다. 문서에는 4시간 안에 되돌리고 담당자를 지정하세요. DEBUG 구간에는 doctor 프로브를 병행해 채널 상태와 로그를 같은 첨부로 사후 분석에 넘깁니다.
법무 보전: 변호사가 로그 동결을 요구하면 로테이션 삭제를 즉시 멈추고 볼륨 스냅샷을 만드세요. 로그 디렉터리만 복사하면 확장 속성이 빠질 수 있습니다.
성능: 바쁜 게이트웨이에서 동기 플러시가 도구 호출마다 15~40 ms를 더할 수 있습니다. 런타임이 허용하면 배치 플러시하되 치명적 오류는 지연하지 마세요.
다채널에서는 각 줄에 상관 ID를 붙입니다. 일일 트래픽에는 32비트 16진 추적 ID로 충분합니다. 당직은 그 ID로 LaunchAgent stderr와 앱 로그를 묶은 뒤 벤더 티켓을 엽니다.
타임존: 파일은 UTC로 저장하고 뷰어만 로컬로 표시합니다. 일광절약 전환에서 오프셋을 섞으면 SLA 보고서가 한 시간 이중 집계될 수 있습니다. ISO-8601과 명시적 Z로 통일하세요.
권한: 로그 디렉터리는 게이트웨이 사용자와 읽기 전용 SIEM 계정만. 멀티 테넌트 Mac mini에서 world readable chmod 644는 피하세요. macOS ACL로 감사 읽기만 주면 sudo가 필요 없습니다. chmod +a 레시피를 런북에 적습니다.
분기마다 압축 아카이브 복원을 테스트하세요. gzip 파이프 리다이렉트 오류로 2 GB 넘는 파일이 재해 연습까지 드러난 팀이 있었습니다. 임대 mini에서 재현하는 편이 저렴합니다.
용량 거친 계산: Slack 메시지당 3~6줄 로그, 워크스페이스가 하루 12000건이면 INFO로 약 25 MB/일, DEBUG로 약 180 MB/일. 보존 일수로 클라우드 디스크 규격을 역산합니다.
저장 암호화: FileVault는 전송 TLS를 대체하지 않습니다. 제3자 검토에는 age나 GPG로 사본을 암호화하고 키는 별도 보관합니다.
관측 가능성 중복: 동일 페이로드를 로컬과 stdout에 동시에 쓰지 않거나 수집측에서 중복을 제거하세요. 이중 기록으로 디스크가 2.1배가 된 사례가 있습니다.
당직 경험: 장애 중에는 rg --line-buffered로 ERROR를 거릅니다. 고지연 링크에서 수 GB 파일에 맨 tail -f는 신중히 쓰세요.
자식 프로세스: OpenClaw가 브라우저나 Node 도구를 외부 호출하면 자식이 파일 디스크립터를 상속합니다. 래퍼 스크립트에서 불필요한 FD를 닫지 않으면 로테이션 후에도 공간이 안 비어 만 디스크가 36시간 숨은 적이 있습니다.
문서 부채: 새 통합(Ollama, 사용자 정의 MCP)마다 내부 위키에 로그 절을 추가하세요. 기본 경로, 비식별 규칙, grep 예시까지. 신입이 90분 만에 다루게 합니다.
로테이션 임계 변경은 changelog에 남기고 감사가 티켓과 대조합니다.
자주 묻는 질문
LLM 프롬프트 전문을 기록해야 하나요?
정책이 허용할 때만. 안전한 쪽은 프롬프트 ID를 해시하고 본문은 제한 버킷에 짧은 TTL로 둡니다.
Time Machine을 로그 아카이브로 쓸 수 있나요?
명확한 보존 정책을 대체하지 못합니다. 규제 산업은 오프박스 불변 스토리지가 필요합니다.
디스크가 찼을 때 로그를 바로 지워도 되나요?
가장 오래된 로테이션된 파일부터 지우세요. 게이트웨이가 연 채인 활성 로그에 rm -rf 하지 마세요.
Mac mini는 Apple Silicon에서 예측 가능한 APFS 성능, 게이트웨이 상시 가동의 낮은 전력, 로그 스파이크를 흡수할 여유를 겸비합니다. MacHTML은 SSH/VNC가 있는 베어메탈 임대로 로테이션 강제, 비식별 검증, 고위험 DEBUG 전 스냅샷을 할 수 있습니다. 웹훅을 끊는 수면 노트북보다 탄력 있는 Mac 용량이 운영에 맞습니다.