DevOps

[DevOps] Slack으로 서버 디스크 사용량 알림 받기

kyoulho 2025. 3. 25. 21:24
728x90

서버 관리 시 중요한 지표 중 하나가 디스크 사용량입니다. 이번 글에서는 간단한 Bash 스크립트를 이용해 디스크 사용량을 체크하고, Slack을 통해 실시간으로 알림을 받는 방법을 소개합니다.

1. Slack에서 Incoming Webhook 설정

  1. Slack 워크스페이스에서 Slack API에 접속해 새로운 앱을 생성하거나 기존 앱을 선택합니다.
  2. 'Incoming Webhooks' 기능을 활성화하고 새로운 Webhook URL을 생성합니다.

생성된 Webhook URL은 다음과 같은 형태입니다.

https://hooks.slack.com/services/TXXXXX/BXXXXX/XXXXXXXX

이 URL은 추후 스크립트 작성 시 사용할 예정입니다.

2. 디스크 사용량 체크 스크립트 작성

스크립트를 /usr/local/bin/check_disk.sh 경로에 아래와 같이 작성합니다.

#!/usr/bin/env bash

# Slack Incoming Webhook URL
WEBHOOK_URL="<위에서 생성한 Webhook URL>"

# Slack 알림 채널
CHANNEL="#서버-알림"

# 메시지에 표시할 사용자명
USERNAME="서버 모니터링 봇"

# 디스크 사용률 임계치 설정 (예: 80%)
THRESHOLD=80

# 체크할 파티션 또는 마운트 포인트
CHECK_PARTITION="/dev/sda1"

# 디스크 사용률 확인
usage=$(df -h | grep "$CHECK_PARTITION" | awk '{print $5}' | sed 's/%//')

if [ -n "$usage" ] && [ "$usage" -ge "$THRESHOLD" ]; then
    message="⚠️ 경고: 파티션 $CHECK_PARTITION의 사용량이 ${usage}%입니다. 디스크를 확인해주세요."

    payload=$(cat <<EOF
{
    "channel": "$CHANNEL",
    "username": "$USERNAME",
    "text": "$message"
}
EOF
)

    curl -X POST -H 'Content-type: application/json' --data "$payload" "$WEBHOOK_URL"
fi
  • CHECK_PARTITION 값은 자신의 서버 환경에 맞게 설정하세요.
  • THRESHOLD는 원하는 알림 임계치로 조정 가능합니다.

스크립트 작성 후 실행 권한을 부여합니다.

chmod +x /usr/local/bin/check_disk.sh

3. cron을 이용한 정기적 실행

스크립트가 주기적으로 실행되도록 크론탭에 등록합니다.

crontab -e

다음 내용을 추가하면 매 10분마다 스크립트가 실행됩니다.

*/10 * * * * /usr/local/bin/check_disk.sh

4. 테스트 및 확인

정상 동작을 확인하려면, THRESHOLD 값을 낮게 설정(예: 1%)한 후 수동으로 스크립트를 실행해 Slack 알림을 받는지 확인합니다.

/usr/local/bin/check_disk.sh

Slack 채널에 알림 메시지가 잘 전송되는지 확인합니다.

5. 추가적인 모니터링 방법

이보다 발전된 방식으로는 Prometheus, Alertmanager, Zabbix, Nagios 등 전문 모니터링 도구를 이용하여 Slack과 연동할 수도 있습니다.


이렇게 간단한 설정으로 중요한 서버 관리 작업 중 하나인 디스크 사용량 모니터링을 효율적으로 수행할 수 있습니다.

728x90

'DevOps' 카테고리의 다른 글

로그 로테이트(Logrotate)  (0) 2024.11.12
[MW] Flyway  (0) 2024.08.31
[Git] Merge 전략  (0) 2024.08.25
[Git] Git 워크플로우 비교: GitHub Flow, Gitflow, GitLab Flow  (0) 2024.07.30
RabbitMQ, Apache Kafka, AWS SQS 비교  (0) 2024.01.13