Chào mừng bạn đã đến với Muanickre Store, cần hỗ trợ gì liên hệ cho Admin nhé!!

Trang chủ Đơn hàng Thông tin

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram Bo

Giới thiệu

Chắc hẳn trong quá trình quản trị VPS, một trong những công việc quan trọng nhất của người quản trị đó là đảm bảo tài nguyên VPS (CPU, RAM, DISK, Băng thông..) luôn trong trạng thái ổn định. Vậy làm sao để bạn có thể luôn giám sát được tài nguyên VPS mà không cần phải truy cập trực tiếp vào VPS. Và chắc chắn giải pháp ở đây là chúng ta cần có một công cụ Monitor để theo dõi tài nguyên và cảnh báo ngay lập tức khi có dấu hiệu quá tải.

Tuy nhiên việc triển khai một hệ thống Monitor chắc hẳn không phải là điều đơn giản với những người dùng cơ bản, vì ngoài việc cần có chuyên môn sâu, bạn còn cần phải có thêm chi phí để duy trì hệ thống Monitor đó. Nếu bạn đang gặp khó khăn trong việc tìm giải pháp thì đừng lo lắng, ở bài viết này mình sẽ hướng dẫn các bạn cách tạo một script Monitor VPS vô cùng đơn giản, để những người dùng không chuyên cũng có thể thao tác được, và đặc biệt là bạn không cần mất bất kỳ một chi phí nào khác cho việc Monitor này. Bây giờ hãy bắt đầu vào các bước thực hiện nhé.

Hướng dẫn thiết lập

Bước 1: Tạo Token trên Telegram

Để kết nối với @BotFather lấy Token, bạn vào Telegram search @BotFather và chọn @BotFather có dấu tick  như hình bên dưới. Hoặc bạn có thể truy cập trực tiếp liên kết https://telegram.me/BotFather để kết nối với @BotFather.

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram

Nhấn START để bắt đầu cuộc trò chuyện.

Bạn soạn tiếp /newbot để tạo một bot mới.
Tạo script Monitor tài nguyên VPS và thông báo qua Telegram
 

Tiếp đó, bạn nhập tên cho bot cần tạo. (Lưu ý: tên bot phải được kết thúc bằng từ Bot. Ví dụ: cloudgiarebot )

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram

Sau khi nhập tên Bot thành công, bạn sẽ được cung cấp  Token to access HTTP API  như hình trên (khung đỏ). Bạn tiến hành lưu đoạn Token này lại.

Tiếp đó bạn thực hiện START bot vừa tạo lên để nó hoạt động.

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram

Bước 2: Hướng dẫn lấy ChatID trên Telegram

Để lấy ChatID, bạn vào Telegram search @userinfobot như hình bên dưới. Hoặc bạn có thể truy cập trực tiếp liên kết https://telegram.me/userinfobot để kết nối với @userinfobot.

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram

Nhấn START để bắt đầu cuộc trò chuyện.

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram

Sau khi nhấn START, bạn sẽ được cung cấp  ID như hình trên (khung đỏ). Bạn tiến hành lưu đoạn ID này lại.

Bước 3: Tạo script Monitor VPS và gửi thông báo về Telegram

  • Cài đặt các dịch vụ Sysstat

Chức năng của sysstat sẽ giúp cho chúng ta có thể theo dõi hiệu suất của các hệ thống Linux(CPU, Bộ nhớ, I/O ..). Để cài đặt các bạn có thể sử dụng lệnh sau:

apt-get install sysstat -y  (Debian/Ubuntu)
yum install sysstat -y       (RHEL/CentOS)

 

  • Cài đặt dịch vụ VnStat

Chức năng của VnStat là giám sát lưu lượng mạng dựa trên giao diện dòng lệnh cho Linux. Để cài đặt các bạn có thể sử dụng lệnh sau:

apt-get install vnstat -y   (Debian/Ubuntu)
yum install vnstat -y       (RHEL/CentOS)
    
  • Tạo script Monitor

Ở đây các bạn có thể tạo file tên là monitor_vps.sh và đặt tại đường dẫn /root

vi /root/monitor_vps.sh

 

Tiếp đó bạn copy script dưới đây và dán vào file monitor_vps.sh vừa tạo.

#!/bin/bash
chat_id="10667xxxxx"                            #### Nhập ID Telegram của bạn
token="5463311202:AAELZ-2u2eU1xxxxxxxxx"        #### Nhập Token Telegram của bạn
interface="eth0"                                ### Nhập tên card mạng server của bạn
time_report=("6:00" "12:00" "17:00" "20:30")    ### Nhập khung giờ muốn nhận thông báo

mem_threshold=90; cpu_threshold=90; disk_threshold=90; inode_threshold=90; #Percent
bwin_threshold=80; bwout_threshold=80; #MB
my_text=""  #String contain alert
ip_sv=$(ip a | grep -w inet | grep -Ev "103.xxx.xxx.xxx" | awk '{print $2}' | head -n 1 | awk -F "/" '{print $1}')


#Detect resource usage
cpu_usage=$(mpstat -P ALL  | grep all | awk '{print $4}' | sed "s/\,/\./g")
mem_usage=$(free -m | awk '/Mem:/ { printf("%3.1f", $3/\*100) }')
disk_usage=$(df -h / | awk '/\// {print $(NF-1)}' | sed "s/%//g")
inode_usage=$(df -ih / | awk '{print $5}' | sed "s/%//g" | tail -n 1)
bw=$(vnstat -i "$interface" -tr 3)
bw_incoming=$(echo "$bw" | grep rx | awk '{printf "%s %s\t PPS: %s %s", $2, $3, $4, $5}')
bw_outcoming=$(echo "$bw" | grep tx | awk '{printf "%s %s\t PPS: %s %s", $2, $3, $4, $5}')

function telegram_send(){
    curl -X POST "https://api.telegram.org/bot"$token"/sendMessage" -d "chat_id="${chat_id}"&text=${my_text}"
}

function float_ge() {
    perl -e "{if("$1">="$2"){print 1} else {print 0}}"
}

function auto_check() {
    bw_in=$(echo "${bw_incoming}" | grep "Mbit" | awk '{print $1}')
    bw_out=$(echo "${bw_outcoming}" | grep "Mbit" | awk '{print $1}')
    if \
        [[ $(float_ge "${cpu_usage}" "${cpu_threshold}") == 1 ]] || \
        [[ $(float_ge "${mem_usage}" "${mem_threshold}") == 1 ]] || \
        [[ $(float_ge "${disk_usage}" "${disk_threshold}") == 1 ]] || \
        [[ $(float_ge "${inode_usage}" "${inode_threshold}") == 1 ]] || \
        [[ ! -z "${bw_in}" && $(float_ge "${bw_in}" "${bwin_threshold}") == 1 ]] || \
        [[ ! -z "${bw_out}" && $(float_ge "${bw_out}" "${bwout_threshold}") == 1 ]]; then
        my_text=$(echo -e "⛔️Problem: "sv.hosting-1"     #### Bạn có thể sửa nội dung thông báo Problem

CPU usage: "${cpu_usage}"%
Memory usage: "${mem_usage}"%
Disk usage: "${disk_usage}"%
Inode usage: "${inode_usage}"%
Bandwith usage:
  ➡️ In: "${bw_incoming}"
  ⬅️ Out: "${bw_outcoming}"
")
    fi
    telegram_send
}

function daily_report(){
    now=$(date "+%H:%M")
    for i in "${time_report[@]}"
    do
        if [[ "$now" == "$i" ]];
        then
            my_text=$(echo -e "✅ Resolved: "sv.hosting-1"  #### Bạn có thể sửa nội dung thông báo Resolved

CPU usage: "${cpu_usage}"%
Memory usage: "${mem_usage}"%
Disk usage: "${disk_usage}"%
Inode usage: "${disk_usage}"%
Bandwith usage:
  ➡️ In: "${bw_incoming}"
  ⬅️ Out: "${bw_outcoming}"
")
            telegram_send
        fi
    done
    unset cpu_usage; unset cpu_usage; unset disk_usage; unset bw_in; unset bw_out;
    unset inode_usage; unset bw; unset bw_incoming; unset bw_outcoming;
}

function main(){
    auto_check
    daily_report
}

main

 

Trong đó, bạn cần chú ý và thay đổi các thông tin quan trọng như sau:

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram

  • Phân quyền cho File monitor_vps.sh
chmod +x /root/monitor_vps.sh
  • Tạo Cron để thiết lập thời gian chạy script

Bây giờ chúng ta sẽ cần phải tạo Cron để tự động thực thi File monitor_vps.sh vừa tạo. Ví dụ ở đây mình sẽ thiết lập thời gian cứ 2 phút script sẽ được chạy một lần để check tài nguyên VPS, nếu có tài nguyên nào đặt ngưỡng giới hạn thì sẽ thông báo qua Telegram. Các bạn cấu hình Cron như sau:

(crontab -u root -l ; echo "*/2 * * * * /bin/bash /root/monitor_vps.sh >/dev/null 2>&1") | crontab -u root -
systemctl restart crond

Tạo script Monitor tài nguyên VPS và thông báo qua Telegram

Nếu cấu hình chính xác các bước, thì khi VPS bị quá tải tài nguyên nào đó, ngay lập tức bạn sẽ nhận được thông báo qua Telegram với nội dung tương tự như sau.

CleanShot 2023 12 30 at 14.27.36

Tổng kết

Như vậy mình đã hướng dẫn các bạn cách cấu hình Monitor tài nguyên trên VPS vô cùng đơn giản. Với người dùng VPS cơ bản, thì script Monitor này gần như đáp ứng đầy đủ các yêu cầu về giám sát tài nguyên VPS. Từ đó giúp bạn tiết kiệm thời gian và chi phí trong quá trình vận hành.

Chúc các bạn thực hiện thành công.!

 

Mua VPS tại Cloudgiare.vn

Chat hỗ trợ
Chat ngay
Hoa Mai
Hoa Mai
Hoa Mai
Hoa Mai
Hoa Mai
Hoa Mai
Hoa Mai
Hoa Mai
Hoa Mai
Hoa Mai