Devin.KR

상태 점검과 실패 알림

관측·판정·알림을 분리해 서비스와 저장 상태를 자동 점검합니다.

진도 0%

레슨

  1. 셸 점검 스크립트

    절대 경로·인용·시간 제한·종료 코드를 적용해 서비스와 용량 상태를 수집합니다.

  2. Python 상태 판정

    표준 입력 JSON의 서비스·HTTP·블록·inode 상태를 판정하고 결정적인 JSON 결과를 출력합니다.

  3. 실패를 알림으로 전달

    점검 실패를 stderr·비정상 종료 코드·실습용 로컬 알림 수신기에 전달하고 전송 실패도 기록합니다.

  4. 예약 실행과 중복 방지

    systemd timer로 점검을 예약하고 잠금으로 중복 실행을 막으며 서비스 실행 환경에서 검사합니다.

상태 점검과 실패 알림 미션

이전 모듈 m07-backup-restore의 산출물을 가져와 관측·판정·알림을 분리해 서비스와 저장 상태를 자동 점검합니다.

요구사항

  • 이전 서비스·용량·백업 검증 결과를 check.sh가 읽고 시간·대상·결과를 evidence/checks.jsonl에 남깁니다.
  • 알림은 실습 VM의 로컬 수신기에만 전송하고 수신 실패와 점검 실패를 구분합니다.
  • m07 미션 solution 전체를 previous/에 보존하고 선택 백업·체크섬과 실제 recovery.json을 inputs/에 복사해 현재 관측과 함께 검사합니다. 복구 기록의 시점과 한계를 automation.md에 씁니다.
  • checks.jsonl의 UTC 시각·대상·origin·판정·원인·알림 결과와 stdout/stderr·종료 코드의 역할을 구분합니다.

완료 기준

  • 정상은 종료 코드 0, 서비스 중단·HTTP 실패·블록 또는 inode 임계 초과는 비정상 코드인지 검사합니다.
  • 시간 초과·입력 손상·알림 수신 실패가 기록되고 로그에 비밀값이 없는지 검사합니다.
  • 중복 점검은 한 번만 실행되고 timer에서 동일한 판정이 나오는지 검사합니다.
  • bash check-local.sh는 이전 회귀와 새 19개 검사를 실행합니다. check.sh는 이를 수행한 뒤 실제 systemd 유닛 문법·예약 활성/트리거·수동/예약 판정 일치를 조회하므로 external입니다.
  • 알림 실제 수신은 15초 자연 종료 수신기와 received.jsonl로 확인합니다. 전송 대역 검사를 실제 HTTP 관측으로 제출하지 않습니다. 종료 0/1/2/3/4/75의 계약과 입력 손상·백업 손상·복구 기록 불일치를 검사합니다.
bash check.sh
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 관측 결과와 판단 근거가 연결되어 있습니다.
  • 실습 VM 범위와 필요한 권한을 명시하고 재현 순서를 기록합니다.