이 방법은 리눅스 서버에서 CPU, 메모리 사용량을 지정 한도 초과시 텔레그램으로 알려주는 방법이다.
테스트 OS : Rocky8
1.파이썬 설치
dnf install python3 python3-pip -y
pip3 install psutil requests
2.모니터링 스크립트 작성
import psutil
import time
import requests
# 텔레그램 봇 정보
BOT_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "YOUR_CHAT_ID"
# 임계값 설정
CPU_THRESHOLD = 80 # CPU 사용률 임계값 (퍼센트)
MEMORY_THRESHOLD = 80 # 메모리 사용률 임계값 (퍼센트)
CHECK_INTERVAL = 10 # 자원 확인 주기 (초)
def send_telegram_message(message):
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": message}
try:
requests.post(url, data=payload)
except Exception as e:
print(f"Error sending message: {e}")
def monitor_system():
while True:
cpu_usage = psutil.cpu_percent(interval=1)
memory_usage = psutil.virtual_memory().percent
if cpu_usage > CPU_THRESHOLD:
send_telegram_message(f"⚠️ CPU 사용률 경고: {cpu_usage}%")
if memory_usage > MEMORY_THRESHOLD:
send_telegram_message(f"⚠️ 메모리 사용률 경고: {memory_usage}%")
time.sleep(CHECK_INTERVAL)
if __name__ == "__main__":
monitor_system()
3.스크립트 자동 실행 설정
vi /usr/local/bin/resource_monitor.py
chmod +x /usr/local/bin/resource_monitor.py
vi /etc/systemd/system/resource-monitor.service
[Unit]
Description=Resource Monitor with Telegram Alerts
After=network.target
[Service]
ExecStart=/usr/bin/python3 /usr/local/bin/resource_monitor.py
Restart=always
[Install]
WantedBy=multi-user.target
4. 서비스 실행
systemctl daemon-reload
systemctl enable --now resource-monitor
5. 스트레스 테스트
dnf install stress -y
stress --vm 1 --vm-bytes 0000M --timeout 60