lifecarelog
개발일지

감시 스크립트가 과거 에러 한 줄로 영구 DOWN이 된 이유

로그를 뒤에서부터 읽는 헬스체크가 오래된 에러 한 줄에 걸려 계속 DOWN을 띄웠고, success 패턴을 함께 보게 고쳐서 해결한 기록이에요.

5분 읽기

자동화 잡을 여러 개 돌리다 보면 결국 "얘 지금 살아 있나?"를 대신 봐 줄 감시 스크립트가 필요해져요. 저도 그래서 하트비트 체크를 붙여 뒀는데, 9월 14일 하루에만 관련 커밋을 3건 찍었어요. 대부분은 감시 항목을 늘리는 일이었고, 마지막 하나가 감시 자체가 거짓말을 하던 버그를 잡는 일이었어요.

로그를 뒤에서 읽으면 생기는 함정

감시 방식은 단순해요. 잡이 남긴 원장 로그를 뒤에서부터 읽고, error 같은 실패 패턴이 보이면 DOWN으로 판단하는 구조였어요. 만들 때는 이게 제일 짧고 확실해 보였어요. 실패가 찍히면 실패니까요.

문제는 로그가 누적된다는 점이었어요. 어느 날 잠깐 났던 에러 한 줄이 파일에 그대로 남아 있으면, 그 뒤로 잡이 아무리 정상으로 돌아도 감시기는 그 옛날 한 줄을 계속 발견해요. 잡은 살아 있는데 대시보드만 영원히 빨간색이에요.

과거 error 한 줄 남음감시기가 뒤에서 그 줄 발견잡은 정상인데 DOWN 고정

직접 돌려 보니 이게 은근히 위험해요. 진짜 장애보다 더 나빠요. 알림이 계속 울리니까 사람이 알림을 무시하기 시작하거든요.

고친 방식: 실패만 보지 말고 성공도 같이 보기

수정은 success 패턴을 감시 조건에 추가하는 것이었어요. 실패 패턴만 찾지 말고, 최근 로그에 성공 기록이 있는지도 같이 보는 거예요. 성공이 더 나중이면 그 잡은 살아 있다고 판단해요.

코드로 보면 두어 줄이지만, 판단 기준이 "에러가 있었나"에서 "지금 상태가 뭔가"로 바뀐 거예요. 로그는 사건의 기록이지 현재 상태가 아니라는 걸 잊고 있었어요.

감시 대상을 지우는 것도 작업이에요

며칠 전에는 반대 방향 정리도 했어요. 이미 정지된 잡 하나를 감시 목록에서 빼는 커밋이었어요. 돌지 않는 잡을 계속 감시하면 당연히 DOWN이 뜨는데, 그건 장애가 아니라 감시기가 낡은 거예요.

  • 에러 한 줄로 단정 금지
  • 성공 기록도 함께 확인
  • 죽은 잡은 감시 목록에서 제거

테스트해 보면 감시기 신뢰도는 "얼마나 많이 보느냐"보다 "허위 경보가 얼마나 적으냐"로 결정돼요. 항목을 늘리는 커밋 2건보다 거짓 DOWN을 없앤 커밋 1건이 체감상 훨씬 컸어요.

남은 습관

이번 일 이후로 감시 항목을 새로 붙일 때 스스로 묻는 게 생겼어요. 이 판단이 과거 기록에 걸려서 영구히 한쪽으로 고정될 수 있나요. 고정될 수 있으면 반대 신호도 같이 봐야 해요.

비슷한 감각으로 만들고 있는 게 플랜비예요. 농구 동호회 운영에서도 "회비 미납"이 한 번 찍히면 그 뒤 납부 기록을 안 보고 계속 미납으로 남는 식의 표시는 사람을 지치게 하거든요. 상태는 최신 사실로 갱신돼야 해요.

감시는 만들어 두고 잊는 물건이 아니라, 가끔 감시기 자신을 감시해 줘야 하는 물건이었어요. 🙂

#헬스체크#로그감시#자동화

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.