[shell] Shell 스크립트 모니터링을 위한 경고 시스템 구축

개요

모니터링은 시스템 안정성을 유지하는 데 중요한 부분이며, Shell 스크립트를 사용하여 리소스 사용량이나 장애 상황을 감지하는 경고 시스템을 구축하는 것은 유용합니다. 이 블로그에서는 Shell 스크립트를 사용하여 간단한 모니터링을 구현하고 경고 시스템을 구축하는 방법을 살펴보겠습니다.

Table of Contents

  1. Shell 스크립트를 사용한 모니터링
  2. 경고 시스템 구축

Shell 스크립트를 사용한 모니터링

먼저, 리소스 사용량이나 문제를 감지하기 위해 Shell 스크립트를 사용하여 시스템을 모니터링할 것입니다.

#!/bin/bash

# CPU 사용량 확인
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
if (( $(echo "$cpu_usage > 80" | bc -l) )); then
  echo "경고: CPU 사용량이 높습니다 - $cpu_usage%"
fi

# 메모리 사용량 확인
memory_usage=$(free | awk 'NR==2{printf "%.2f", $3/$2*100}')
if (( $(echo "$memory_usage > 80" | bc -l) )); then
  echo "경고: 메모리 사용량이 높습니다 - $memory_usage%"
fi

# 디스크 사용량 확인
disk_usage=$(df -h | awk '$NF=="/"{print $5}' | sed 's/%//')
if (( $disk_usage > 80 )); then
  echo "경고: 디스크 사용량이 높습니다 - $disk_usage%"
fi

위의 스크립트는 간단한 CPU, 메모리, 디스크 사용량을 확인하고 80% 이상 사용 시에 경고를 출력합니다.

경고 시스템 구축

위의 스크립트를 통해 감지한 문제에 대한 경고를 시스템으로 전달하는 방법은 여러 가지가 있습니다. 여기서는 간단하게 경고를 이메일로 전송하는 방법을 살펴보겠습니다.

#!/bin/bash

# 경고 이메일 전송
send_email() {
  subject="서버 경고: $1"
  body="서버에서 다음과 같은 문제가 발생했습니다: $2"
  echo "$body" | mail -s "$subject" user@example.com
}

# CPU 사용량 확인 및 경고 전송
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
if (( $(echo "$cpu_usage > 80" | bc -l) )); then
  send_email "CPU 사용량이 높습니다" "현재 CPU 사용량: $cpu_usage%"
fi

# 메모리 사용량 확인 및 경고 전송 (이하 생략)

위의 스크립트는 send_email 함수를 통해 경고 이메일을 전송하고, CPU 사용량이 높을 경우 경고 이메일을 발송하도록 구현되어 있습니다.

결론

Shell 스크립트를 사용하여 시스템의 모니터링과 감지된 문제에 대한 경고 시스템을 간단히 구축하는 방법에 대해 살펴보았습니다. 이를 통해 시스템 안정성을 높일 수 있으며, 더 많은 리소스와 기능을 추가하여 보다 확장성 있는 경고 시스템을 구축할 수 있습니다.