LabHub
배우기 러닝패스 코스

로그로 원인 찾기 · 보존과 회전을 숫자로 정한다 · 실습

사고가 난 날의 로그는 이미 지워져 있었다

LabHub 에서 이어서 보기

목표

회전된 로그 묶음에서 실제 보관 구간을 재고, 사고 구간이 그 범위 밖임을 숫자로 밝히고, 압축률을 실측해 보존 일수와 용량을 계산해 회전 정책으로 적습니다. 마지막으로 속도 제한에 걸려 애초에 기록되지 않는 줄을 셉니다.

왜 중요한가

조사 첫날 가장 자주 만나는 벽은 어려운 질문이 아니라 빈 디렉터리입니다. 그때 필요한 것은 한탄이 아니라 세 개의 숫자입니다 — 며칠이 모자랐는가, 얼마를 더 남겨야 하는가, 그 값이 디스크 예산에 맞는가. 세 숫자는 전부 지금 있는 파일에서 잴 수 있습니다. 그리고 "로그가 없다" 는 두 가지 뜻입니다. 회전으로 지워졌거나, 속도 제한에 걸려 애초에 기록되지 않았거나. 대책이 완전히 다르므로 둘을 가려야 합니다.

단계

1. /root/keep/gen_keep.py 를 만들어 실행해 /root/keep/var/log/ 아래 보관 상태를 재현하세요.
2. /root/keep/order.json 에 회전본을 오래된 것부터 세운 목록과 그 규칙을 적으세요.
3. /root/keep/coverage.json 에 파일마다 줄 수와 첫 줄 · 마지막 줄의 시각을 적으세요.
4. /root/keep/window.json 에 사고 구간이 보관 범위 안인지, 얼마나 모자랐는지 적으세요.
5. /root/keep/budget.json 에 압축률 실측값과 보존 일수 · 용량 계산을 적으세요.
6. /root/keep/logrotate.conf 에 회전 정책을 적으세요. rotate 값은 5단계의 계산과 같아야 합니다.
7. /root/keep/ratelimit.json 에 속도 제한에 걸려 버려질 줄 수를 세어 적으세요.
8. /root/keep/keep_report.md 에 네 절로 보고서를 남기세요.

참고

단계 8개

  1. 고객사의 보관 상태 재현하기
  2. 회전본을 오래된 것부터 세우기
  3. 파일마다 실제로 담긴 구간 재기
  4. 사고 구간이 범위 밖임을 숫자로 밝히기
  5. 압축률을 실측해 보존 일수 계산하기
  6. 계산한 값으로 회전 정책 적기
  7. 애초에 기록되지 않는 줄 세기
  8. 무엇을 바꿀지 글로 남기기