Ổ cứng hiện đại có một cơ chế bên trong được gọi là S.M.A.R.T. qua đó có thể biết khi nào đĩa cứng sắp hỏng. Máy chủ có thể gửi Email cho bạn trước khi thất bại như vậy không?
Tổng quat
Các chương trình như “mdadm” (để quản lý RAID phần mềm) và “Palimpsest Disk Utility” (được sử dụng trên Ubuntu LiveCD), sử dụng thông tin S.M.A.R.T để thông báo cho bạn biết khi nào đĩa sắp hoặc đã bị lỗi. Tuy nhiên, trên một máy chủ không đầu (không có GUI), không có dịch vụ nào thông báo cho bạn về sự diệt vong đang chờ xử lý trước khi quá muộn. Hơn nữa, làm thế nào bạn có thể biết về nó nếu không đăng nhập thủ công vào máy chủ?
Tập lệnh này, khi được chạy mỗi ngày một lần với cron, sẽ cảnh báo nếu có bất kỳ số lượng thành phần xấu nào trên Ổ cứng của hệ thống đạt đến giới hạn cố tình thấp hơn ngưỡng "ổ đĩa bị hỏng" và gửi cảnh báo qua email cho quản trị viên của máy.
Điều kiện tiên quyết và giả định
- Bạn đã thiết lập hỗ trợ qua Email cho máy chủ bằng cách sử dụng “ Cách thiết lập thông báo qua email trên Linux ”Hướng dẫn.
- Bạn đang sử dụng hệ thống dựa trên Debian.
- Bạn không sử dụng bộ điều khiển RAID * phần cứng.
- Bạn sẽ thấy tôi sử dụng VIM làm chương trình biên tập, điều này là do tôi đã quen với nó… bạn có thể sử dụng bất kỳ trình chỉnh sửa nào khác mà bạn muốn.
* Vì rất có thể bộ điều khiển RAID phần cứng chặn quyền truy cập của hệ thống vào thông tin này.
Thiết lập
Cài đặt gói “smartmontools” đọc thông tin S.M.A.R.T từ bộ điều khiển ổ cứng và trình bày cho chúng tôi.
sudo aptitude cài đặt smartmontools
Tạo tập lệnh màn hình:
sudo vim /root/smart-monitor.sh
Biến nó thành nội dung:
#! / Bin / Bash
######## Chức năng email ########
email_admin_func ()
{
echo "Tới: [email protected]"> $ temp_email_file
echo "Từ: [email protected]" >> $ temp_email_file
echo "Chủ đề: Ngưỡng màn hình S.M.A.R.T bị vi phạm" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo "Đã gửi Email tới Quản trị viên"
}
smartc_func ()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s '' | cut -d '' -f11
}
######## Kết thúc Chức năng ########
######## Đặt thông số làm việc ########
temp_email_file = / tmp / smart_monitor.txt
allow_threshold = 5 # đặt số lượng thành phần xấu mà bạn sẵn sàng sử dụng, đề xuất 5.
########Động cơ########
cho tôi trong sda sdb; do # Thêm hoặc bớt tên đĩa khỏi danh sách này nếu thích hợp cho thiết lập của bạn.
nếu [[ "`smartc_func $i`" -ge $allowed_threshold ]]; sau đó
echo Gửi email cho quản trị viên
email_admin_func "Một trong các HD trên" `hostname`", đã đạt đến giới hạn ngưỡng trên !!! n Ngưỡng được đặt thành: $ allow_threshold và trạng thái đĩa $ i là: "` smartc_func $ i` ""
là
làm xong
Những điểm chính cần lưu ý là:
- Chức năng email - Đặt thông tin thích hợp như tên máy và email quản trị viên.
- Ngưỡng cho phép - Đặt thông số này ở mức bạn cảm thấy phù hợp, tôi đã sử dụng 5 vì giới hạn được đặt cho ổ cứng “cấp máy chủ” mà tôi đã sử dụng là 10. (Tôi đã tìm thấy ngưỡng cho ổ đĩa “tiêu dùng” là cao tới 140).
- Đặt các thiết bị mà bạn muốn theo dõi bằng cách điều chỉnh danh sách tên đĩa trong vòng lặp “for”. Hiện tại hai đĩa (sda & sdb) được bao gồm, vì vậy hãy điều chỉnh cho thiết lập của bạn. Bạn có thể bao gồm tất cả các đĩa của mình hoặc chỉ một số đĩa, nếu bạn cần * loại trừ một đĩa vì lý do nào đó.
* trong thiết lập ban đầu của tôi, đĩa đầu tiên là ổ đĩa flash nên việc đọc thông tin của nó nếu có thể sẽ không được sử dụng nhiều.
Làm cho tập lệnh có thể thực thi:
sudo chmod + x /root/smart-monitor.sh
Thiết lập đã hoàn tất.
Lên lịch để tập lệnh được chạy tự động
Chúng tôi muốn làm cho tập lệnh chạy tự động vì vậy chúng tôi sẽ tạo một công việc Cron mới cho nó.
Như đã nêu trong “
Cách thiết lập thông báo qua email trên Linux
”Hướng dẫn kết quả của việc làm như vậy, là nếu bản thân tập lệnh gặp lỗi, cron sẽ tự động thông báo cho chúng tôi qua email ngay khi nó xảy ra.
Mở trình lập lịch công việc cron:
sudo crontab -e
Thêm cái này vào nội dung của nó:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Điều này sẽ đặt tập lệnh được chạy vào lúc 7 giờ sáng hàng ngày.
Tất cả lĩnh vực của bạn đều thuộc về chúng tôi :)