Chào mừng bạn đã đến với Muanickre Store, cần hỗ trợ gì liên hệ cho Admin nhé!!
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é.
Để 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ụ: cloudgiarebot )
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.
Để 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.
Nhấn START để bắt đầu cuộc trò chuyện.
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.
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)
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)
Ở đâ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:
chmod +x /root/monitor_vps.sh
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.
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