LabHub
배우기 러닝패스 코스

로그로 원인 찾기 · 빠진 줄과 두 번 온 줄 · 실습

수집기에 도착한 줄이 보낸 줄보다 적었다

LabHub 에서 이어서 보기

목표

수집기가 받은 줄과 보낸 쪽의 카운터를 견주어 유실을 세고, 중복을 접고, 도착 지연 분포를 구하고, 마감 시각 집계의 과소집계와 재시작이 만든 착시를 숫자로 밝힙니다.

왜 중요한가

로그가 비어 있을 때 "안 왔다" 와 "일이 없었다" 는 결론이 정반대인데, 파일만 봐서는 구별되지 않습니다. 둘을 가르는 것은 발신 쪽이 붙인 단조 증가 번호뿐입니다. 그런데 그 번호도 프로세스가 재시작하면 1부터 다시 시작하므로, 부팅 식별자와 함께 묶지 않으면 재시작 전후가 중복으로 보이고 재시작 뒤의 유실은 가려집니다. 받은 순서가 일어난 순서가 아니라는 것도 같은 무게로 중요합니다 — 마감 시각에 집계하면 아직 안 온 줄이 빠지고, 며칠 뒤 같은 질의가 다른 숫자를 냅니다.

단계

1. /root/gap/gen_gap.py 를 만들어 실행해 /root/gap/raw/ 아래 collector.ndjson 과 sender_state.json 을 만드세요.
2. /root/gap/tally.json 에 받은 줄과 보낸 줄을 견주어 센 결과를 적으세요.
3. /root/gap/missing.json 에 빠진 번호를 구간으로 묶어 적으세요.
4. /root/gap/dedup.ndjson 에 중복을 접은 결과를 적으세요.
5. /root/gap/delay.json 에 도착 지연 분포를 적으세요.
6. /root/gap/cutoff.json 에 마감 시각 집계의 과소집계를 적으세요.
7. /root/gap/reboot.json 에 재시작이 집계에 미친 영향을 적으세요.
8. /root/gap/gap_report.md 에 네 절로 보고서를 남기세요.

참고

단계 8개

  1. 받은 것과 보낸 것을 함께 손에 쥐기
  2. 받은 줄과 보낸 줄을 견주기
  3. 빠진 번호를 구간으로 묶기
  4. 재전송이 만든 중복 접기
  5. 도착 지연의 분포 구하기
  6. 마감 시각에 집계했다면 얼마를 놓쳤나
  7. 재시작이 유실과 중복을 뒤바꾼다
  8. 무엇을 요청할지 글로 남기기