📑 이 챕터에서 다룰 내용
봇은 한 번 셋업한다고 끝이 아닙니다. 매일·주별·월별 점검이 필요해요. 사용자가 늘어나면 자원이 늘고, Anthropic 비용도 늘고, 새 에러가 나타납니다. 정기 점검을 안 하면 어느 날 갑자기 봇이 멈추거나 비용이 폭발할 수 있어요.
1인 운영자가 5분 안에 끝낼 수 있는 점검 루틴을 정리합니다. 매일·주별·월별 각 단계를 체크리스트 형태로 따라가면 봇이 안정적으로 돌아갑니다.
매일 09:00 (또는 봇 매일 리포트 도달 시)
[1분 — 봇 리포트 확인]
- ☑ 봇 매일 리포트 도착 확인 (Discord·Telegram)
- ☑ 어제 에러 0건 또는 정상 처리 여부 확인
[2분 — Sentry 대시보드]
- ☑ 새 에러 발생 여부 확인
- ☑ 에러 빈도 정상 범위 안인지 확인
[2분 — Anthropic 비용]
- ☑ console.anthropic.com → Usage 확인
- ☑ 어제 비용이 예상 범위 안인지 확인
[★ 즉시 대응 기준]
- 비용이 예상치 2배+ → 코드·호출 패턴 점검 필요
- 새 에러 5건+ → 반드시 검토
- 봇 응답 없음 → 즉시 서버 점검
매일 09:00 자동 점검 스크립트 (선택)
#!/bin/bash # crontab: 0 9 * * * /home/ubuntu/scripts/daily_health_check.sh echo "=== 봇 상태 ===" pm2 status echo "" echo "=== 자원 현황 ===" free -h | head -2 df -h | grep "/$" top -bn1 | grep "load average" echo "" echo "=== 디스크 큰 폴더 ===" du -sh /home/ubuntu/봇*/ 2>/dev/null | sort -h | tail -5 echo "" echo "=== 어제 에러 건수 ===" journalctl -u 봇* --since "yesterday" --until "today" | grep -i error | wc -l echo "" echo "=== Anthropic 비용 (수동 확인 권장) ===" echo " → console.anthropic.com 접속 권장"
crontab -e를 열고 아래 한 줄을 추가하세요.
0 9 * * * /home/ubuntu/scripts/daily_health_check.sh
매일 오전 9시에 자동 실행되어 결과를 로그로 남깁니다.
1주일 종합 검토
[5분 — 비용 검토]
- ☑ Anthropic 지난 주 비용 (vs 그 전 주 비교)
- ☑ 비용 추세 확인 (증가·안정·감소)
- ☑ prompt caching hit_rate 확인 (90%+ 권장)
[5분 — 자원 추세]
- ☑ 메모리 사용 추세 (안정·증가 여부)
- ☑ 디스크 사용 추세
- ☑ DB 상태 (PostgreSQL·SQLite) — 행 수 증가, 인덱스 정상 여부
[3분 — 코드·종속성]
- ☑
npm audit또는pip list --outdated - ☑ 보안 패치 검토
- ☑ Anthropic SDK 새 버전 확인
[2분 — 사용자]
- ☑ 사용자 추세 (DAU·MAU)
- ☑ 만족도 확인 (피드백·평점)
- ☑ 미처리 에스컬레이션 응답 처리
주별 점검 명령 모음
# 매주 월요일 09:00
# crontab: 0 9 * * 1 /home/ubuntu/scripts/weekly_check.sh
echo "=== 1주일 봇 로그 ==="
pm2 logs --lines 0 # 최근 logs
echo ""
echo "=== 패키지 업데이트 현황 ==="
cd /home/ubuntu/봇/
npm outdated # Node.js
# 또는
pip list --outdated # Python
echo ""
echo "=== DB 크기 (PostgreSQL) ==="
sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('봇DB'));"
echo ""
echo "=== 백업 현황 ==="
ls -lh /backup/*.sql.gz | tail -7 # 최근 7개 백업월 1회 종합 점검
[15분 — 코드 업데이트]
- ☑
npm audit fix또는pip install --upgrade - ☑ Anthropic 모델 업데이트 확인 (Sonnet·Opus 새 버전 등)
- ☑ 보안 패치 적용
- ☑ git pull (코드 변경 사항 반영)
[15분 — DB 정리]
- ☑ 오래된 로그 정리 (3개월+ 된 것)
- ☑ DB vacuum (PostgreSQL)
- ☑ 인덱스 재구축
[10분 — 백업 검증]
- ☑ 백업 파일 존재 확인
- ☑ 복구 시험 (다른 환경에 실제로 복원해보기)
[10분 — 비용 검토]
- ☑ 한 달 Anthropic 비용 종합
- ☑ Cloudflare 비용
- ☑ Contabo 비용
- ☑ 다음 달 예산 계획
[10분 — KPI]
- ☑ 사용자 추세 (한 달 전체)
- ☑ 봇 응답 성공률
- ☑ 만족도
- ☑ 반복 문제 패턴 파악
월별 비용 추세 예시
| 월 | 비용 | 변동 | 해석 |
|---|---|---|---|
| 1월 | $30 | — | 기준치 |
| 2월 | $45 | +50% | 요주의 — 원인 파악 필요 |
| 3월 | $52 | +16% | 사용자 증가 (정상 범위) |
| 4월 | $48 | -8% | 캐싱 최적화 효과 |
- 전월 대비 50%+ 갑자기 증가 → 코드 점검 필수
- 사용자 수 변화 없는데 비용 증가 → 불필요한 호출 확인
- cache_hit_rate 급락 → 시스템 프롬프트 캐싱 설정 재확인
점검 흐름:
- console.anthropic.com → Usage 접속
- 모델별 비율 확인 (Sonnet vs Opus 비율)
- cache_hit_rate 확인 (낮으면 → 시스템 프롬프트 캐싱 재설정)
- 일별 사용량 확인 (특정 날 폭발 여부)
- 코드 확인 (반복 호출·무한 루프 여부)
비용 절약 방법
시스템 프롬프트가 반복되는 경우 캐싱을 적용하면 비용을 90%까지 줄일 수 있어요.
client.messages.create(
model="claude-sonnet-4-6",
system=[
{
"type": "text",
"text": "long system prompt...",
"cache_control": {"type": "ephemeral"} # ★ 캐싱 적용
}
],
messages=[...]
)| 방법 | 절약 효과 | 적합한 상황 |
|---|---|---|
| Prompt Caching | 최대 90% | 시스템 프롬프트가 동일한 모든 호출 |
| Batch API | 50% | 즉시 응답 불필요 — 매일 리포트 등 |
| Haiku 모델 선택 | 80% (vs Sonnet) | 단순 분류·짧은 응답 |
| Sonnet 모델 선택 | 40% (vs Opus) | 일반 대화·일반 분석 |
매일 Sentry 점검 (5분)
- New Issues — 어제 처음 발생한 에러
- Frequency — 가장 자주 발생하는 에러
- Affected Users — 사용자 영향 범위
[즉시 대응 기준]
- New Issue + High Frequency → 5분 안에 검토
- Critical level → 30분 안에 수정
- 영향 받는 사용자 100명+ → 즉시 수정
주별 에러 검토
- Top 1~3 → 이번 주 수정 우선
- Top 4~10 → 다음 주 처리 예약
- 1주일 이상 0건 → resolved 표시
[패턴 파악]
- 같은 에러 반복 → 코드 구조 개선 필요
- 사용자 행동 패턴의 에러 → UX 개선 권장
- 외부 서비스 에러 (Anthropic·Discord) → 자동 retry 추가
에러 수정 4단계 흐름
에러 trace를 보고, 어떤 사용자·환경에서 발생하는지 파악합니다. 로컬에서 재현을 시도하세요.
코드를 수정하고 단위 테스트 + 통합 테스트를 실행합니다. Junho가 직접 코드 검토까지 합니다.
git commit + push → GitHub Actions 자동 배포 (별책부록 9편 참고) → Sentry에서 resolve 표시.
배포 후 1시간 동안 모니터링합니다. 같은 에러가 재발하지 않는지 확인하세요.
매일 흐름 (5분)
| 시간 | 작업 | 소요 |
|---|---|---|
| 09:00 | 봇 매일 리포트 확인 | 1분 |
| 09:01 | Sentry 대시보드 확인 | 1분 |
| 09:02 | Anthropic 사용량 확인 | 1분 |
| 09:03 | pm2 status 또는 systemctl 확인 | 1분 |
| 09:04 | 자원 현황 확인 | 1분 |
| 09:05 | 완료 ✅ | — |
주별 흐름 (15분, 월요일)
| 시간 | 작업 | 소요 |
|---|---|---|
| 09:00 | 매일 흐름 수행 | 5분 |
| 09:05 | 주별 비용 추세 확인 | 5분 |
| 09:10 | 패키지·종속성 확인 | 3분 |
| 09:13 | 백업 현황 확인 | 2분 |
| 09:15 | 완료 ✅ | — |
월별 흐름 (1시간, 매월 1일)
| 시간 | 작업 | 소요 |
|---|---|---|
| 09:00 | 매일·주별 흐름 수행 | 20분 |
| 09:20 | 코드 업데이트 | 15분 |
| 09:35 | DB 정리 | 15분 |
| 09:50 | 백업 복구 시험 | 10분 |
| 10:00 | KPI 종합 검토 | 10분 |
| 10:10 | 완료 ✅ | — |
📌 16편 정리
- 점검 루틴은 부담이 아닙니다. 5분 매일 + 15분 주별 + 1시간 월별 = 봇이 안정적으로 24/7 운영됩니다.
- 매일: 봇 리포트·Sentry·비용 — 이상 신호를 조기에 포착합니다.
- 주별: 추세·종속성·백업 — 중기 문제를 예방합니다.
- 월별: 코드 업데이트·DB 정리·KPI — 시스템 건강성을 유지합니다.
- 루틴을 cron·systemd timer로 자동화하면 운영자는 결정과 수정에만 집중할 수 있어요.