시스템 모니터에 로깅 기능 추가하기

LinuxBeginner
지금 연습하기

소개

이번 챌린지에서는 제공된 리눅스 시스템 모니터링 스크립트에 로깅 기능을 추가하여 기능을 확장해 봅니다. 목표는 매 모니터링 주기마다 CPU, 메모리, 디스크와 같은 리소스 사용량을 로그 파일에 기록하는 것입니다. 이 과제를 통해 파일 기반 출력을 포함하도록 쉘 스크립트를 수정하고 확장하는 능력을 점검할 수 있습니다.

기본 스크립트가 제공되며, 여러분은 여기에 로깅 기능을 직접 구현해야 합니다.

이 콘텐츠는 챌린지 (Challenge) 입니다. 가이드가 제공되는 일반 실습 (Lab) 과 달리, 학습 단계를 따라가는 것이 아니라 스스로 과제를 해결해야 합니다. 챌린지는 다소 난이도가 있을 수 있습니다. 해결이 어렵다면 Labby 와 상의하거나 솔루션을 확인해 보세요. 통계에 따르면 이 과제는 초급 수준이며, 통과율은 93%, 학습자 만족도는 98%입니다.

시스템 모니터에 로깅 기능 추가

과제

  • /home/labex/project/system_monitor.sh 스크립트를 수정하여 CPU, 메모리, 디스크 사용량을 동일한 디렉터리에 있는 resource_usage.log 파일에 추가 (append) 하도록 만드세요. 각 로그 항목에는 현재 날짜와 시간이 포함되어야 합니다.

요구 사항

  • 로그 파일의 이름은 반드시 resource_usage.log여야 하며 /home/labex/project 디렉터리에 위치해야 합니다.
  • 각 로그 항목에는 날짜, 시간, 그리고 CPU, 메모리, 디스크의 리소스 사용량 백분율이 포함되어야 합니다.
  • 로깅 로직은 각 모니터링 주기 내에서 리소스 사용량 값이 계산된 직후에 실행되도록 구현해야 합니다.

힌트

  1. 현재 날짜와 시간을 가져오려면 date '+%Y-%m-%d %H:%M:%S'와 같이 date 명령어를 사용하세요. 출력 형식을 지정하는 방법은 man date 페이지에서 자세히 확인할 수 있습니다.
  2. 파일에 내용을 추가할 때는 >> 연산자를 사용해야 한다는 점을 기억하세요. 기존 내용을 덮어쓰지 않도록 주의해야 합니다.
  3. 로그 파일에 기록하기 전에 리소스 사용량 값들을 하나의 문자열로 결합하세요. 변수와 문자열 보간법 (string interpolation) 을 활용하면 편리합니다.
  4. 로그 파일이 스크립트와 동일한 디렉터리에 생성되도록 /home/labex/project/resource_usage.log와 같은 절대 경로 또는 상대 경로를 사용하세요.

실행 예시

과제를 완료한 후 /home/labex/project/system_monitor.sh를 몇 초간 실행하면 다음과 같은 내용이 담긴 resource_usage.log 파일이 생성되어야 합니다.

cat /home/labex/project/resource_usage.log
2024-12-04 14:00:01 CPU: 15% Memory: 45% Disk: 62%
2024-12-04 14:00:03 CPU: 18% Memory: 46% Disk: 62%
2024-12-04 14:00:05 CPU: 20% Memory: 47% Disk: 62%

스크립트를 안전하게 종료하려면 Ctrl+C를 눌러 인터럽트 신호를 보내면 됩니다.

시스템 모니터 로그 예시
✨ 솔루션 확인 및 연습

요약

이번 챌린지에서는 리눅스 시스템 모니터링 스크립트에 로깅 기능을 성공적으로 추가했습니다. 이 기능을 통해 리소스 사용량을 파일에 기록함으로써 시간에 따른 리소스 소비 변화를 추적할 수 있게 되었습니다. 이 과제를 통해 Bash 스크립트에서의 파일 작업과 날짜 명령어 활용 능력을 한층 더 강화할 수 있었습니다.