ฮาร์ดไดรฟ์สมัยใหม่มีกลไกภายในที่เรียกว่า S.M.A.R.T. ซึ่งเป็นไปได้ที่จะรู้ว่าเมื่อใดที่ฮาร์ดดิสก์กำลังจะล้มเหลว จะเป็นการดีหรือไม่ที่เซิร์ฟเวอร์จะส่งอีเมลถึงคุณก่อนที่จะเกิดความล้มเหลว
ภาพรวม
โปรแกรมเช่น“ mdadm” (สำหรับการจัดการซอฟต์แวร์ RAID) และ“ Palimpsest Disk Utility” (ใช้กับ Ubuntu LiveCD) ให้ใช้ข้อมูล S.M.A.R.T เพื่อแจ้งให้คุณทราบเมื่อดิสก์กำลังจะถึงหรือล้มเหลว อย่างไรก็ตามบนเซิร์ฟเวอร์ headless (ไม่มี GUI) ไม่มีบริการใดที่จะแจ้งให้คุณทราบถึงการลงโทษที่รอดำเนินการก่อนที่จะสายเกินไป ยิ่งไปกว่านั้นคุณจะรู้ได้อย่างไรโดยไม่ต้องลงชื่อเข้าใช้เซิร์ฟเวอร์ด้วยตนเอง
สคริปต์นี้เมื่อเรียกใช้วันละครั้งด้วย cron จะแจ้งเตือนหากจำนวนเซกเตอร์เสียของฮาร์ดไดรฟ์ของระบบมีจำนวนถึงขีด จำกัด ที่ต่ำกว่าเกณฑ์ "ดิสก์ไม่ดี" โดยเจตนาและส่งอีเมลแจ้งเตือนไปยังผู้ดูแลระบบของเครื่อง
ข้อกำหนดเบื้องต้นและสมมติฐาน
- คุณได้ตั้งค่าการรองรับอีเมลสำหรับเซิร์ฟเวอร์แล้วโดยใช้ปุ่ม“ วิธีตั้งค่า Email Alerts บน Linux ” คำแนะนำ
- คุณกำลังใช้ระบบที่ใช้ Debian
- คุณไม่ได้ใช้ตัวควบคุม RAID ฮาร์ดแวร์ *
- คุณจะเห็นว่าฉันใช้ VIM เป็นโปรแกรมแก้ไขนี่เป็นเพียงเพราะฉันเคยชินกับมัน…คุณอาจใช้โปรแกรมแก้ไขอื่น ๆ ที่คุณต้องการ
* เนื่องจากเป็นไปได้มากที่ตัวควบคุม RAID ของฮาร์ดแวร์จะบล็อกการเข้าถึงข้อมูลนี้ของระบบ
ติดตั้ง
ติดตั้งแพ็กเกจ "smartmontools" ซึ่งอ่านข้อมูล S.M.A.R.T จากตัวควบคุมฮาร์ดไดรฟ์และนำเสนอให้เรา
sudo aptitude ติดตั้ง smartmontools
สร้างสคริปต์มอนิเตอร์:
sudo vim /root/smart-monitor.sh
ทำให้เป็นเนื้อหา:
#! / บิน / ทุบ
######## ฟังก์ชันอีเมล ########
email_admin_func ()
{
echo "ถึง: [email protected]"> $ temp_email_file
echo "จาก: [email protected]" >> $ temp_email_file
echo "Subject: S.M.A.R.T monitor Threshold ฝ่าฝืน" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo "ส่งอีเมลถึงผู้ดูแลระบบ"
}
smartc_func ()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep จัดสรรใหม่_Sector_Ct | tr -s '' | ตัด -d '' -f11
}
######## จุดสิ้นสุดของฟังก์ชัน ########
######## ตั้งค่าพารามิเตอร์การทำงาน ########
temp_email_file = / tmp / smart_monitor.txt
allow_threshold = 5 # กำหนดจำนวนเซกเตอร์เสียที่คุณต้องการใช้งานแนะนำ 5.
######## เครื่องยนต์ ########
สำหรับฉันใน sda sdb; ทำ # เพิ่มหรือลบชื่อดิสก์จากรายการนี้ตามความเหมาะสมสำหรับการตั้งค่าของคุณ
ถ้า [[ "`smartc_func $i`" -ge $allowed_threshold ]]; แล้ว
echo การส่งอีเมลถึงผู้ดูแลระบบ
email_admin_func "หนึ่งใน HD บน" "ชื่อโฮสต์" ถึงขีด จำกัด สูงสุดแล้ว !!! n ขีด จำกัด ถูกตั้งค่าเป็น: $ allow_threshold และสถานะดิสก์ $ i คือ: "` smartc_func $ i` ""
เป็น
เสร็จแล้ว
ประเด็นสำคัญที่ควรทราบคือ:
- ฟังก์ชันอีเมล - ตั้งค่าข้อมูลที่เหมาะสมเช่นชื่อเครื่องและอีเมลผู้ดูแลระบบ
- เกณฑ์ที่อนุญาต - ตั้งค่าพารามิเตอร์นี้ตามที่คุณคิดว่าเหมาะสมฉันใช้ 5 เพราะขีด จำกัด ที่กำหนดไว้สำหรับฮาร์ดไดรฟ์ "ระดับเซิร์ฟเวอร์" ที่ฉันใช้คือ 10 (ฉันพบเกณฑ์สำหรับไดรฟ์ "ระดับผู้บริโภค" เป็น สูงถึง 140)
- ตั้งค่าอุปกรณ์ที่คุณต้องการมอนิเตอร์โดยปรับการแจงนับชื่อดิสก์ในลูป“ for” ขณะนี้มีดิสก์สองแผ่น (sda & sdb) ดังนั้นปรับการตั้งค่าของคุณ คุณอาจรวมดิสก์ทั้งหมดของคุณหรือเพียงบางส่วนหากคุณจำเป็นต้อง * ยกเว้นดิสก์ด้วยเหตุผลบางประการ
* ในการตั้งค่าเดิมของฉันดิสก์แรกคือแฟลชไดรฟ์ดังนั้นการอ่านข้อมูลหากเป็นไปได้ก็ไม่ได้ใช้ประโยชน์มาก
ทำให้สคริปต์ทำงานได้:
sudo chmod + x /root/smart-monitor.sh
การตั้งค่าเสร็จสิ้น
กำหนดเวลาให้สคริปต์ทำงานโดยอัตโนมัติ
เราต้องการให้สคริปต์ทำงานโดยอัตโนมัติดังนั้นเราจะสร้างงาน Cron ใหม่สำหรับมัน
ตามที่ระบุไว้ใน“
วิธีตั้งค่า Email Alerts บน Linux
” ให้คำแนะนำในการดำเนินการดังกล่าวคือหากตัวสคริปต์พบข้อผิดพลาด cron จะแจ้งให้เราทราบโดยอัตโนมัติทางอีเมลทันทีที่เกิดขึ้น
เปิดตัวกำหนดตารางเวลางาน cron:
sudo crontab -e
เพิ่มสิ่งนี้ในเนื้อหา:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
การดำเนินการนี้จะตั้งค่าสคริปต์ให้ทำงานทุกเช้าเวลา 7.00 น.
ทุกภาคส่วนของคุณเป็นของเรา :)