You are a helpful assistant.
system
Tạo tập lệnh bash giám sát việc sử dụng CPU trên hệ thống Linux, kiểm tra xem mức sử dụng CPU có vượt quá ngưỡng tùy chỉnh 80% trong hơn 2 phút hay không; nếu có, hãy gửi email cảnh báo với định dạng rõ ràng, bao gồm tiêu đề và nội dung đến quản trị viên hệ thống, đồng thời ghi lại dữ liệu sử dụng CPU để tham khảo trong tương lai.
user
Để tạo một tập lệnh bash giám sát việc sử dụng CPU và gửi email cảnh báo khi mức sử dụng vượt quá ngưỡng 80% trong hơn 2 phút, bạn có thể làm theo các bước sau:

1. Đảm bảo rằng bạn đã cài đặt `mail` hoặc `sendmail` để gửi email từ dòng lệnh.
2. Tạo một tập lệnh bash với nội dung như sau:

```bash
#!/bin/bash

# Ngưỡng sử dụng CPU
THRESHOLD=80
# Thời gian kiểm tra (tính bằng giây)
CHECK_INTERVAL=10
# Số lần kiểm tra trước khi gửi cảnh báo
CHECK_COUNT=12
# Địa chỉ email của quản trị viên
ADMIN_EMAIL="admin@example.com"
# Tệp nhật ký để ghi lại dữ liệu sử dụng CPU
LOG_FILE="/var/log/cpu_usage.log"

# Hàm để lấy mức sử dụng CPU
get_cpu_usage() {
    # Sử dụng lệnh mpstat để lấy mức sử dụng CPU
    # Cần cài đặt gói sysstat để sử dụng mpstat
    mpstat 1 1 | awk '/Average:/ {print 100 - $NF}'
}

# Biến đếm số lần vượt ngưỡng
exceed_count=0

while true; do
    # Lấy mức sử dụng CPU hiện tại
    cpu_usage=$(get_cpu_usage)
    # Ghi lại mức sử dụng CPU vào tệp nhật ký
    echo "$(date): CPU Usage: $cpu_usage%" >> $LOG_FILE

    # Kiểm tra nếu mức sử dụng CPU vượt ngưỡng
    if (( $(echo "$cpu_usage > $THRESHOLD" | bc -l) )); then
        ((exceed_count++))
    else
        exceed_count=0
    fi

    # Nếu vượt ngưỡng liên tục trong thời gian quy định, gửi email cảnh báo
    if [ $exceed_count -ge $CHECK_COUNT ]; then
        echo "Subject: Cảnh báo: Sử dụng CPU cao trên hệ thống" > /tmp/email.txt
        echo "Từ: Hệ thống giám sát <monitor@example.com>" >> /tmp/email.txt
        echo "Đến: $ADMIN_EMAIL" >> /tmp/email.txt
        echo "" >> /tmp/email.txt
        echo "Cảnh báo: Mức sử dụng CPU đã vượt quá $THRESHOLD% trong hơn 2 phút." >> /tmp/email.txt
        echo "Vui lòng kiểm tra hệ thống để xác định nguyên nhân." >> /tmp/email.txt
        echo "" >> /tmp/email.txt
        echo "Dữ liệu sử dụng CPU gần đây:" >> /tmp/email.txt
        tail -n 20 $LOG_FILE >> /tmp/email.txt

        # Gửi email
        sendmail -t < /tmp/email.txt

        # Đặt lại biến đếm
        exceed_count=0
    fi

    # Chờ trước khi kiểm tra lại
    sleep $CHECK_INTERVAL
done
```

3. Lưu tập lệnh này vào một tệp, ví dụ `cpu_monitor.sh`.
4. Đảm bảo tệp có quyền thực thi: `chmod +x cpu_monitor.sh`.
5. Chạy tập lệnh: `./cpu_monitor.sh`.

Lưu ý: Tập lệnh này yêu cầu gói `sysstat` để sử dụng lệnh `mpstat`. Bạn có thể cài đặt nó bằng cách chạy `sudo apt-get install sysstat` trên Ubuntu hoặc `sudo yum install sysstat` trên CentOS/RHEL.
assistant