Nội dung
Ở bài viết này mình sẽ hướng dẫn các bạn cách tạo script Monitor tài nguyên VPS và thông báo qua Telegram vô cùng đơn giản chỉ với 3 bước.
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.
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.
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ụ: kbazBot )
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.
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.
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:
- 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
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.
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.!
Các bạn có thể tham khảo thêm các hướng dẫn sử dụng khác tại link bên dưới
Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:
- Hotline 247: 028 888 24768
- Ticket/Email: Bạn dùng email đăng ký dịch vụ gửi trực tiếp về: support@azdigi.com