Bash script kiểm tra và thông báo Disk, CPU, RAM tới Telegram

Khá tương tự bash script cũ về PHP, Mysql, Nginx, phiên bản này sẽ kiểm tra Disk, CPU, RAM sau đó gửi thông báo tới Telegram nếu sử dụng tới ngưỡng quy định

Đầu tiên là tạo 1 con chat bot Telegram, ví dụ

  • Bot Token 6360723418:AAF1aya50fEi6sVuOwhXp53Ic19siP3gqLc
  • Chat ID 489842537″

Tạo 1 file bash bên trong /usr/local/bin/, có thể đặt tên là monitor_cpu_ram_hdd.sh

touch /usr/local/bin/monitor_cpu_ram_hdd.sh
nano /usr/local/bin/monitor_cpu_ram_hdd.sh

Nội dung bên trong điền vào

#!/bin/bash
while true
do

# Set the threshold for disk, CPU, and RAM usage
DISK_THRESHOLD=80 # in %
CPU_THRESHOLD=80 # in %
RAM_THRESHOLD=80 # in %

# Set the Telegram bot token and chat ID
TELEGRAM_BOT_TOKEN="6360723418:AAF1aya50fEi6sVuOwhXp53Ic19siP3gqLc"
TELEGRAM_CHAT_ID="489842537"

# Check disk usage and send a warning if it exceeds the threshold
disk_usage=$(df -h / | awk '/\// {print $(NF-1)}' | sed 's/%//')
if [ "$disk_usage" -ge "$DISK_THRESHOLD" ]; then
    message="WARNING: Disk usage is at ${disk_usage}% - Disk threshold $DISK_THRESHOLD %"
    curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" -d "chat_id=${TELEGRAM_CHAT_ID}" -d "text=$message"
fi

# Check CPU usage and send a warning if it exceeds the threshold
cpu_usage=$(top -b -n 1 | awk '/^%Cpu/ {print $2}' | cut -d '.' -f 1)
if [ "$cpu_usage" -ge "$CPU_THRESHOLD" ]; then
    message="WARNING: CPU usage is at ${cpu_usage}% - CPU threshold $CPU_THRESHOLD %"
    curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" -d "chat_id=${TELEGRAM_CHAT_ID}" -d "text=$message"
fi

# Check RAM usage and send a warning if it exceeds the threshold
ram_usage=$(free | awk '/^Mem/ {print $3/$2 * 100.0}' | cut -d '.' -f 1)
if [ "$ram_usage" -ge "$RAM_THRESHOLD" ]; then
    message="WARNING: RAM usage is at ${ram_usage}% - RAM threshold $RAM_THRESHOLD %"
    curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" -d "chat_id=${TELEGRAM_CHAT_ID}" -d "text=$message"
fi

sleep 1
done
  • Sửa dòng 6, 7, 8, 11, 12 cho phù hợp với bot Telegram và ngưỡng bạn muốn thông báo (mình đang duy trì Disk, CPU, RAM ở ngưỡng 80%)
  • Sửa xong thì Ctrl+O -> Enter -> Ctrl+X để save và exit.

Ý nghĩa của đoạn code trên là nó cứ check tình trạng của Disk, CPU, RAM

  • Nếu Disk, CPU, RAM sử dụng < 80% thì không làm gì
  • Nếu Disk, CPU, RAM sử dụng > 80% thì gửi thông báo tới Telegram
  • Chạy xong thì ngừng 1s, sau đó chạy lại từ đầu 😀

Tiếp theo chạy các dòng code bên dưới để nó tự chạy ngầm và tự chạy lại sau khi reboot VPS

chmod +x /usr/local/bin/monitor_cpu_ram_hdd.sh
nohup /usr/local/bin/monitor_cpu_ram_hdd.sh >> ./out 2>&1 <&- &
crontab -l > monitor_service_cpu_ram_hdd
echo "@reboot nohup /usr/local/bin/monitor_cpu_ram_hdd.sh >> ./out 2>&1 <&- &" >> monitor_service_cpu_ram_hdd
crontab monitor_service_cpu_ram_hdd

Đoạn code này tác giả không quản lý giới hạn thông báo, nên nếu Disk, CPU, RAM sử dụng vượt ngưỡng là cứ liên tục gửi tin nhắn, khá lú người 😀

Có các tool monitor theo thời gian thực như này nếu VPS gặp lỗi cũng dễ bắt bệnh hơn


Related Posts

Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.

• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.

✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!