Rocky Linux 9에서 CPU, 메모리, 디스크 사용량 등 시스템 성능을 쉽게 모니터링하는 방법을 알아보겠습니다. 간단한 배시 스크립트를 작성하여 매번 번거롭게 명령어를 입력하지 않고도 쉽게 시스템 성능을 확인할 수 있는 방법을 알아보겠습니다.
포스팅 목차
1. 사전 준비
먼저, 성능 데이터를 수집하기 위해 필요한 도구가 있습니다. 이 스크립트에서는 mpstat, free, df 명령어를 사용할 것입니다. 이 명령어들은 기본적으로 대부분의 리눅스 배포판에 포함되어 있습니다.
2. 스크립트 작성
이제 성능 데이터를 수집하고 결과를 보기 쉽게 출력하는 배시 스크립트를 작성해 보겠습니다. 아래 코드를 참고하여 스크립트를 작성해 주세요.
#!/bin/bash
# Collect data
echo "-----------------------------"
echo " SYSTEM PERFORMANCE "
echo "-----------------------------"
# CPU 사용율
echo -e "\nCPU Usage:"
mpstat 1 1 | awk 'NR==4{print "User: "$3"%", "System: "$5"%", "Idle: "$12"%"}'
# Memory 사용율
echo -e "\nMemory Usage:"
free -m | awk 'NR==2{printf "Total: %sMB\nUsed: %sMB\nFree: %sMB\n", $2, $3, $4}'
# Swap 사용율
echo -e "\nSwap Usage:"
free -m | awk 'NR==3{printf "Total: %sMB\nUsed: %sMB\nFree: %sMB\n", $2, $3, $4}'
# Disk 사용율 (Detailed)
echo -e "\nDisk Usage (Root):"
df -h | awk '$NF=="/"{printf "Filesystem: %s\nTotal: %s\nUsed: %s\nAvailable: %s\nUsed Percentage: %s\n", $1, $2, $3, $4, $5}'
echo -e "\nDisk Usage (All Mounts):"
df -h | awk 'NR>1{printf "Mount: %s\nFilesystem: %s\nTotal: %s\nUsed: %s\nAvailable: %s\nUsed Percentage: %s\n\n", $NF, $1, $2, $3, $4, $5}'
echo "-----------------------------"
2. 설명
2.1 CPU 사용량 출력
mpstat 명령어를 사용하여 CPU 사용량 데이터를 수집합니다.
awk를 사용하여 사용자, 시스템, 유휴 시간 비율을 출력합니다.
echo -e "\nCPU Usage:"
mpstat 1 1 | awk 'NR==4{print "User: "$3"%", "System: "$5"%", "Idle: "$12"%"}'
2.2 메모리 사용량 출력
free 명령어를 사용하여 메모리 사용량 데이터를 수집합니다.
awk를 사용하여 총 메모리, 사용 중인 메모리, 사용 가능한 메모리 크기를 출력합니다.
echo -e "\nMemory Usage:"
free -m | awk 'NR==2{printf "Total: %sMB\nUsed: %sMB\nFree: %sMB\n", $2, $3, $4}'
2.3 스왑 사용량 출력
free 명령어를 사용하여 스왑 사용량 데이터를 수집합니다.
awk를 사용하여 총 스왑, 사용 중인 스왑, 사용 가능한 스왑 크기를 출력합니다.
echo -e "\nSwap Usage:"
free -m | awk 'NR==3{printf "Total: %sMB\nUsed: %sMB\nFree: %sMB\n", $2, $3, $4}'
2.4 루트 디스크 사용량 출력
df 명령어를 사용하여 디스크 사용량 데이터를 수집합니다.
awk를 사용하여 루트 파일 시스템의 파일 시스템 이름, 총 크기, 사용 중인 크기, 사용 가능한 크기, 사용 비율을 출력합니다.
echo -e "\nDisk Usage (Root):"
df -h | awk '$NF=="/"{printf "Filesystem: %s\nTotal: %s\nUsed: %s\nAvailable: %s\nUsed Percentage: %s\n", $1, $2, $3, $4, $5}'
이 코드에서 awk
명령어와 printf
함수를 사용하여 df
명령어의 출력을 형식화합니다. 아래는 각 부분에 대한 설명입니다:
- df -h : 디스크 사용량 정보를 읽기 쉬운 형식으로 출력합니다.
- awk ‘$NF==”/”‘ : awk 명령어를 사용하여 출력에서 루트 파일 시스템(“/”)만 선택합니다. $NF는 행의 마지막 필드를 의미하며, 이 예제에서는 마운트 지점을 나타냅니다.
- printf “Filesystem: %s\nTotal: %s\nUsed: %s\nAvailable: %s\nUsed Percentage: %s\n”, $1, $2, $3, $4, $5 : printf 함수는 특정 형식에 맞춰 출력을 생성합니다. 각 %s는 자리 표시자로, 이후의 $1, $2 등과 매칭되어 특정 값을 출력합니다.
- Filesystem: %s\n : 파일 시스템 이름을 출력하고 줄을 바꿉니다.
$1
에 대응합니다. - Total: %s\n : 총 디스크 용량을 출력하고 줄을 바꿉니다.
$2
에 대응합니다. - Used: %s\n : 사용된 디스크 용량을 출력하고 줄을 바꿉니다.
$3
에 대응합니다. - Available: %s\n : 사용 가능한 디스크 용량을 출력하고 줄을 바꿉니다.
$4
에 대응합니다. - Used Percentage: %s\n : 사용 비율을 출력하고 줄을 바꿉니다.
$5
에 대응합니다.
즉, awk는 df 명령어의 출력에서 필드 값을 추출하고, printf를 사용하여 각 필드를 형식화된 텍스트로 출력합니다.
2.5 모든 마운트된 디스크 사용량 출력
df 명령어를 사용하여 모든 마운트된 디스크의 사용량 데이터를 수집합니다.
awk를 사용하여 각 마운트 지점의 파일 시스템 이름, 총 크기, 사용 중인 크기, 사용 가능한 크기, 사용 비율을 출력합니다.
echo -e "\nDisk Usage (All Mounts):"
df -h | awk
4. 스크립트 실행
스크립트에 실행 권한을 부여한 후 실행합니다:
chmod +x system_performance.sh
./system_performance.sh
스크립트를 실행하면 시스템 성능 데이터를 한눈에 확인할 수 있습니다.