Proxmox 디스크 모니터링 자동화 + Discord 알림 설정

2026. 2. 15. 17:49·Cloud

개요

현재 홈서버에서 오래된 디스크를 통해서 서비스를 운용하고 있는데, 디스크 모니터링에 대한 필요성이 느껴져서 고민하다가 아래와 같이 Proxmox의 기본 알림시스템을 Discord로 변경하여 이상치 발생 시 편하게 알림을 받을 수 있도록 구성하였습니다.

 

1. Proxmox 알림 시스템

Proxmox VE는 다양한 시스템 이벤트에 대한 통합 알림(Notification) 시스템을 제공합니다. 백업 완료, VM 상태 변화, 시스템 경고 등 다양한 이벤트를 여러 채널로 전송할 수 있습니다.

1.1 지원하는 알림 타겟

Proxmox는 다음과 같은 알림 방법을 지원합니다.

  • Sendmail: 시스템 메일 (Postfix 사용)
  • SMTP: 직접 메일 서버 연결
  • Gotify: 자체 호스팅 푸시 알림 서버
  • Webhook: HTTP 요청 (Discord, Slack 등)

1.2 Notification Matcher

Matcher는 특정 이벤트를 특정 타겟으로 라우팅하는 규칙입니다. 예를 들어,

  • 백업 성공 → Discord
  • 디스크 경고 → Discord + Email
  • 모든 알림 → Discord (통합 관리)

이번 글에서는 Webhook(Discord)를 사용하여 모든 시스템 알림을 Discord로 받도록 설정했습니다.

 

2. smartd(smartmontools)

2.1 smartmontools란?

smartmontools는 디스크의 SMART(Self-Monitoring, Analysis and Reporting Technology) 데이터를 주기적으로 모니터링 할 수 있는 도구입니다.

2.2 SMART가 감지하는 문제들

smartd는 다음과 같은 디스크 문제를 자동으로 감지합니다.

  1. 물리적 손상
    • Reallocated Sectors (재할당된 섹터)
    • Current Pending Sector (대기 중인 불량 섹터)
    • Offline Uncorrectable (복구 불가능한 섹터)
  2. 성능 저하
    • Spin Retry Count (회전 재시도)
    • Seek Error Rate (탐색 오류율)
  3. 온도 이상
    • 급격한 온도 변화
    • 임계 온도 초과
  4. Self-test 실패
    • Short test (짧은 테스트, 2분)
    • Long test (긴 테스트, 수 시간)

 

3. Discord Webhook 설정

Step 1: 개인 Discord 서버 생성

Discord에서 나만의 알림 서버를 만듭니다

  1. Discord 앱 또는 웹 열기
  2. 왼쪽 서버 목록에서 "+" 버튼 클릭
  3. "직접 만들기" 선택
  4. "나와 친구들을 위한 서버" 선택
  5. 서버 이름 입력 (예: Proxmox Alerts)
  6. 서버 생성 완료

Step 2: Webhook URL 생성

  1. 서버 설정 (톱니바퀴 아이콘) → 연동 → 웹후크
  2. 새 웹후크 클릭
  3. 이름: SMART Monitor (원하는 이름)
  4. 채널: #general 또는 원하는 채널
  5. 웹후크 URL 복사
    • 형태: https://discord.com/api/webhooks/abcdefgh_token_here

 

4. Proxmox Notification 설정

Step 1: Webhook 타겟 생성

  1. Proxmox GUI → Datacenter → Notifications → Add → Webhook
  2. 다음 내용 입력

기본 정보:

  • ID: discord-alerts
  • Comment: Discord alerts

Method/URL:

  • Method: POST
  • URL: https://discord.com/api/webhooks/{{ secrets.token }}

Headers:

  • Name: Content-Type
  • Value: application/json

Body:

{
  "content": "``` {{ escape message }}```"
}

Secrets:

  • Name: token
  • Value: abcdefgh_your_token_here (Webhook URL에서 /api/webhooks/ 뒷부분)

Step 2: Matcher 설정

  1. Datacenter → Notifications → Matchers → Modify

Notification Matcher

최종 설정 예시

root@pve:~# cat /etc/pve/notifications.cfg 
sendmail: mail-to-root
        comment Send mails to root@pam's email address
        mailto-user root@pam

webhook: discord-alerts
        body ewogICJjb250ZW50IjogImBgYCB7eyBlc2NhcGUgbWVzc2FnZSB9fWBgYCIKfQ==
        comment Discord alerts
        header name=Content-Type,value=YXBwbGljYXRpb24vanNvbg==
        method post
        url https://discord.com/api/webhooks/{{ secrets.token }}

matcher: default-matcher
        comment Route all notifications to root
        mode all
        target discord-alerts

이렇게 하면 알림이 메일과 Discord 둘 다로 전송됩니다.

Step 3: 테스트

Datacenter → Notifications → discord-alerts → Test 버튼 클릭

Discord에 알림이 오면 성공입니다

 

5. smartd 설정

Step 1: 설정 파일 편집

vim /etc/smartd.conf

기존 내용을 주석 처리(#)하고 다음 내용 추가:

# Proxmox SMART 모니터링 설정
# 모든 디스크 자동 검색 및 모니터링
# -a: 모든 SMART 속성 모니터링
# -o on: 오프라인 데이터 수집 활성화
# -S on: 속성 자동 저장
# -n standby,q: 절전 모드 디스크는 깨우지 않음
# -s (S/../.././02|L/../../6/03): 매일 02시 짧은 테스트, 매주 토요일 03시 긴 테스트
# -W 5,40,50: 온도 모니터링 (차이 5°C, 경고 40°C, 위험 50°C)
# -m root: root에게 알림 전송

DEVICESCAN -d auto -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -W 5,40,50 -m root

Step 2: 디스크별 개별 설정 (선택사항)

디스크 종류에 따라 다른 설정을 원한다면

# HDD - 낮은 온도 임계값
/dev/sda -a -o on -S on -n standby,q \
    -s (S/../.././02|L/../../6/03) \
    -W 5,40,45 \
    -m root

/dev/sdb -a -o on -S on -n standby,q \
    -s (S/../.././02|L/../../6/03) \
    -W 5,35,40 \
    -m root

# NVMe - 높은 온도 허용
/dev/nvme0n1 -a -o on -S on -n standby,q \
    -s (S/../.././02|L/../../6/03) \
    -W 5,50,60 \
    -m root

Step 3: smartd 재시작

# 설정 파일 문법 검증
smartd -q onecheck

# 서비스 재시작
systemctl restart smartd

# 상태 확인
systemctl status smartd

 

6. 작동 테스트

온도 임계값 테스트

간단하게 온도 임계값을 수정하여 알림을 테스트하는 방법입니다.

# 현재 온도 확인
smartctl -A /dev/sda | grep Temperature

예: 현재 온도가 27°C라면

# smartd.conf를 임시로 수정
nano /etc/smartd.conf

온도를 현재보다 낮게 설정:

# 테스트용: 25도 이상이면 경고
DEVICESCAN -a -o on -S on -n standby,q \
    -s (S/../.././02|L/../../6/03) \
    -W 2,20,25 \
    -m root
# smartd 재시작
systemctl restart smartd

# 로그 확인 (몇 분 내로 온도 경고 발생)
journalctl -u smartd -f

Discord에 알림이 오면 테스트 성공!

테스트가 끝나면 반드시 원래 설정으로 복구!

 

참고

  • https://pve.proxmox.com/pve-docs/chapter-notifications.html
'Cloud' 카테고리의 다른 글
  • 가상머신 디스크 이미지 포맷
  • Magnum CAPI
  • OpenStack Neutron DVR
  • Installing OpenStack using PackStack on CentOS 9
yeseong9769
yeseong9769
  • yeseong9769
    ys.tech.blog
    yeseong9769
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • Artificial Intelligence (6)
      • BigData (2)
      • Cloud (14)
      • Linux (4)
      • Network (9)
      • Mobile (1)
        • Android (1)
      • 정보보안 (9)
        • Blockchain (4)
  • 블로그 메뉴

    • 홈
    • 태그
  • 태그

    anvil
    AWS
    bedrock
    Bitcoin
    boto3
    Calico
    cast
    Ceph
    cloudnative
    conda
  • hELLO· Designed By정상우.v4.10.5
yeseong9769
Proxmox 디스크 모니터링 자동화 + Discord 알림 설정
상단으로

티스토리툴바