Rocky Linux 9에서 시스템 성능 모니터링하기

Rocky Linux 9에서 CPU, 메모리, 디스크 사용량 등 시스템 성능을 쉽게 모니터링하는 방법을 알아보겠습니다. 간단한 배시 스크립트를 작성하여 매번 번거롭게 명령어를 입력하지 않고도 쉽게 시스템 성능을 확인할 수 있는 방법을 알아보겠습니다.

1. 사전 준비

먼저, 성능 데이터를 수집하기 위해 필요한 도구가 있습니다. 이 스크립트에서는 mpstatfreedf 명령어를 사용할 것입니다. 이 명령어들은 기본적으로 대부분의 리눅스 배포판에 포함되어 있습니다.

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 명령어의 출력을 형식화합니다. 아래는 각 부분에 대한 설명입니다:

  1. df -h : 디스크 사용량 정보를 읽기 쉬운 형식으로 출력합니다.
  2. awk ‘$NF==”/”‘ : awk 명령어를 사용하여 출력에서 루트 파일 시스템(“/”)만 선택합니다. $NF는 행의 마지막 필드를 의미하며, 이 예제에서는 마운트 지점을 나타냅니다.
  3. 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

스크립트를 실행하면 시스템 성능 데이터를 한눈에 확인할 수 있습니다.

스크립트 실행 결과

By Low ahn

리눅스를 처음 접하시는 분들은 위한 다양한 리눅스 정보를 공유합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다