Skip to main content

Giám Sát Ổ Đĩa Linux

Công Cụ Giám Sát Cơ Bản

1. iotop

Giám sát I/O theo thời gian thực của các tiến trình

# Cài đặt iotop
sudo apt install iotop

# Hiển thị chỉ các tiến trình đang có I/O
sudo iotop -o

# Cập nhật mỗi 5 giây
sudo iotop -d 5

2. iostat

Báo cáo thống kê CPU và I/O của thiết bị

# Cài đặt sysstat (bao gồm iostat)
sudo apt install sysstat

# Hiển thị thống kê mỗi 2 giây
iostat -x 2

# Giám sát thiết bị cụ thể
iostat -xd /dev/sda 1

3. dstat

Công cụ đa năng cho thống kê hệ thống

# Cài đặt dstat
sudo apt install dstat

# Hiển thị tất cả thống kê
dstat -a

# Giám sát disk I/O
dstat --disk --io

Kiểm Tra Hiệu Suất

1. Tốc Độ Đọc/Ghi

# Kiểm tra tốc độ đọc
dd if=/dev/zero of=test bs=1G count=1 oflag=direct

# Kiểm tra tốc độ ghi
dd if=test of=/dev/null bs=1G count=1 iflag=direct

2. IOPS (Input/Output Operations Per Second)

# Sử dụng fio để test IOPS
fio --name=randwrite --ioengine=libaio --iodepth=1 \
--rw=randwrite --bs=4k --direct=0 --size=512M \
--numjobs=2 --runtime=240 --group_reporting

3. Latency

# Kiểm tra latency với ioping
ioping -c 10 /dev/sda

Hệ Thống Cảnh Báo

1. Disk Usage Alerts

# Script giám sát dung lượng
#!/bin/bash
THRESHOLD=90
df -h | awk '{print $5 " " $6}' | while read output;
do
usage=$(echo $output | awk '{print $1}' | sed 's/%//g')
partition=$(echo $output | awk '{print $2}')
if [ $usage -ge $THRESHOLD ]; then
echo "CẢNH BÁO - $partition đạt $usage%"
fi
done

2. I/O Alerts

# Giám sát I/O wait time
#!/bin/bash
THRESHOLD=20
iostat -x 1 2 | awk '/^[a-z]/ {if($10 > threshold) \
print "CẢNH BÁO - I/O wait time cao: " $10 "%"}' threshold=$THRESHOLD

3. SMART Monitoring

# Cài đặt smartmontools
sudo apt install smartmontools

# Kiểm tra sức khỏe ổ đĩa
smartctl -H /dev/sda

# Xem thông tin chi tiết
smartctl -a /dev/sda

# Chạy self-test
smartctl -t short /dev/sda

Giám Sát với Công Cụ Đồ Họa

1. Gnome Disk Utility

# Cài đặt gnome-disk-utility
sudo apt install gnome-disk-utility

# Khởi động ứng dụng
gnome-disks

2. Gparted

# Cài đặt gparted
sudo apt install gparted

# Khởi động ứng dụng
sudo gparted

Giám Sát Nâng Cao

1. Prometheus với Node Exporter

# Cấu hình node_exporter để thu thập metrics
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']

2. Grafana Dashboard

# Cài đặt Grafana
sudo apt install grafana

# Query ví dụ cho disk metrics
rate(node_disk_read_bytes_total[5m])

Xử Lý Sự Cố Phổ Biến

1. High I/O Wait

# Xác định process gây tải I/O cao
iotop -o -P

# Kiểm tra các connection đến disk
lsof | grep /dev/sda

2. Disk Performance Issues

# Kiểm tra và sửa lỗi filesystem
fsck -f /dev/sda1

# Kiểm tra bad sectors
badblocks -v /dev/sda1

Các Thực Hành Tốt Nhất

  1. Monitoring Thường Xuyên

    • Thiết lập giám sát tự động
    • Cấu hình cảnh báo phù hợp
    • Lưu trữ metrics lịch sử
  2. Phân Tích Hiệu Suất

    • Theo dõi trends
    • Xác định bottlenecks
    • Tối ưu hóa workload
  3. Bảo Trì Định Kỳ

    • Kiểm tra SMART status
    • Dọn dẹp không gian disk
    • Cập nhật firmware

Tài Liệu Tham Khảo

Tích Hợp Cảnh Báo qua Telegram

tip

Bạn có thể tham khảo hướng dẫn chi tiết về cách tạo Telegram Bot tại Phát Triển Bot Telegram

1. Script Giám Sát Disk Usage với Telegram

#!/bin/bash

# Cấu hình Telegram Bot (thay thế các giá trị phù hợp)
GROUP_ID="your_channel_id"
BOT_TOKEN="your_bot_token"

# Ngưỡng cảnh báo
THRESHOLD=90

# Hàm gửi tin nhắn qua Telegram
send_telegram() {
curl -s --data "text=$1" \
--data "chat_id=$GROUP_ID" \
"https://api.telegram.org/bot$BOT_TOKEN/sendMessage" > /dev/null
}

# Kiểm tra disk usage
df -h | awk '{print $5 " " $6}' | while read output;
do
usage=$(echo $output | awk '{print $1}' | sed 's/%//g')
partition=$(echo $output | awk '{print $2}')

if [ $usage -ge $THRESHOLD ]; then
message="CẢNH BÁO: Partition $partition đạt $usage%"
send_telegram "$message"
fi
done

2. Script Giám Sát I/O với Telegram

#!/bin/bash

# Cấu hình Telegram Bot
GROUP_ID="your_channel_id"
BOT_TOKEN="your_bot_token"

# Ngưỡng cảnh báo I/O
IO_THRESHOLD=20

# Hàm gửi tin nhắn
send_telegram() {
curl -s --data "text=$1" \
--data "chat_id=$GROUP_ID" \
"https://api.telegram.org/bot$BOT_TOKEN/sendMessage" > /dev/null
}

# Kiểm tra I/O
iostat -x 1 2 | awk -v threshold=$IO_THRESHOLD \
'/^[a-z]/ {if($10 > threshold) \
system("send_telegram \"CẢNH BÁO: I/O wait time cao: " $10 "%\"")}'

3. Giám Sát SMART Status với Telegram

#!/bin/bash

# Cấu hình Telegram Bot
GROUP_ID="your_channel_id"
BOT_TOKEN="your_bot_token"

# Hàm gửi tin nhắn
send_telegram() {
curl -s --data "text=$1" \
--data "chat_id=$GROUP_ID" \
"https://api.telegram.org/bot$BOT_TOKEN/sendMessage" > /dev/null
}

# Kiểm tra SMART status
for disk in /dev/sd[a-z]; do
if [ -b "$disk" ]; then
status=$(smartctl -H $disk | grep "SMART overall-health")
if [[ $status != *"PASSED"* ]]; then
send_telegram "CẢNH BÁO: Phát hiện vấn đề SMART trên $disk"
fi
fi
done

Thiết Lập Cron Job

Thêm các script vào crontab để chạy định kỳ:

# Chỉnh sửa crontab
crontab -e

# Thêm các dòng sau
# Kiểm tra disk usage mỗi giờ
0 * * * * /path/to/disk_monitor.sh

# Kiểm tra I/O mỗi 5 phút
*/5 * * * * /path/to/io_monitor.sh

# Kiểm tra SMART status mỗi ngày
0 0 * * * /path/to/smart_monitor.sh
note

Đảm bảo đã cấu hình đúng Telegram Bot và có quyền thực thi cho các script trước khi thiết lập cron job