เชลล์สคริปต์เพื่อส่งการแจ้งเตือนทางอีเมลเมื่อหน่วยความจำเหลือน้อย
ลักษณะอันทรงพลังของโปรแกรมเชลล์ Unix/Linux เช่น bash คือการรองรับโครงสร้างการเขียนโปรแกรมทั่วไปที่น่าทึ่ง ซึ่งช่วยให้คุณสามารถตัดสินใจ ดำเนินการคำสั่งซ้ำๆ สร้างฟังก์ชันใหม่ และอื่นๆ อีกมากมาย คุณสามารถเขียนคำสั่งในไฟล์ที่เรียกว่าเชลล์สคริปต์และดำเนินการคำสั่งเหล่านั้นร่วมกันได้
นี่เป็นวิธีการจัดการระบบที่เชื่อถือได้และมีประสิทธิภาพ คุณสามารถเขียนสคริปต์เพื่อทำให้งานเป็นแบบอัตโนมัติ เช่น การสำรองข้อมูลรายวัน การอัปเดตระบบ ฯลฯ สร้างคำสั่ง/ยูทิลิตี้/เครื่องมือที่กำหนดเองใหม่ และอื่นๆ อีกมากมาย คุณสามารถเขียนสคริปต์เพื่อช่วยให้คุณตามทันสิ่งที่เกิดขึ้นบนเซิร์ฟเวอร์
องค์ประกอบที่สำคัญอย่างหนึ่งของเซิร์ฟเวอร์คือหน่วยความจำ (RAM) ซึ่งส่งผลกระทบอย่างมากต่อประสิทธิภาพโดยรวมของระบบ
ในบทความนี้ เราจะแบ่งปันเชลล์สคริปต์เล็กๆ แต่มีประโยชน์เพื่อส่งอีเมลแจ้งเตือนไปยังผู้ดูแลระบบตั้งแต่หนึ่งคนขึ้นไป หากหน่วยความจำเซิร์ฟเวอร์เหลือน้อย
นี่เป็นสคริปต์ที่มีประโยชน์อย่างยิ่งสำหรับการจับตาดู Linux VPS (เซิร์ฟเวอร์ส่วนตัวเสมือน) ที่มีหน่วยความจำจำนวนน้อย เช่น ประมาณ 1GB ( ประมาณ 990MB)
การทดสอบการตั้งค่าสภาพแวดล้อม
- เซิร์ฟเวอร์ที่ใช้งานจริง CentOS/RHEL 7 พร้อมยูทิลิตี mailx ที่ติดตั้งพร้อมกับเซิร์ฟเวอร์เมล postfix ที่ใช้งานได้
นี่คือวิธีการทำงานของสคริปต์ alertmemory.sh: อันดับแรกจะตรวจสอบขนาดหน่วยความจำที่ว่าง จากนั้นพิจารณาว่าจำนวนหน่วยความจำที่ว่างน้อยกว่าหรือเท่ากับขนาดที่ระบุ (100 MB สำหรับวัตถุประสงค์ของคู่มือนี้) ใช้เป็นเครื่องหมายเปรียบเทียบสำหรับขนาดหน่วยความจำว่างที่ยอมรับได้น้อยที่สุด
หากเงื่อนไขนี้เป็นจริง ระบบจะสร้างรายการกระบวนการ 10 อันดับแรกที่ใช้ RAM ของเซิร์ฟเวอร์ และส่งอีเมลแจ้งเตือนไปยังที่อยู่อีเมลที่ระบุ
หมายเหตุ: คุณจะต้องทำการเปลี่ยนแปลงเล็กน้อยกับสคริปต์ (โดยเฉพาะยูทิลิตี้ผู้ส่งเมล ให้ใช้แฟล็กที่เหมาะสม) เพื่อให้เป็นไปตามข้อกำหนดการแจกจ่าย Linux ของคุณ
#!/bin/bash
#######################################################################################
#Script Name :alertmemory.sh
#Description :send alert mail when server memory is running low
#Args :
#Author :Aaron Kili Kisinga
#Email :[email
#License : GNU GPL-3
#######################################################################################
## declare mail variables
##email subject
subject="Server Memory Status Alert"
##sending mail as
from="[email "
## sending mail to
to="[email "
## send carbon copy to
also_to="[email "
## get total free memory size in megabytes(MB)
free=$(free -mt | grep Total | awk '{print $4}')
## check if free memory is less or equals to 100MB
if [[ "$free" -le 100 ]]; then
## get top processes consuming system memory and save to temporary file
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head >/tmp/top_proccesses_consuming_memory.txt
file=/tmp/top_proccesses_consuming_memory.txt
## send email if system memory is running low
echo -e "Warning, server memory is running low!\n\nFree memory: $free MB" | mailx -a "$file" -s "$subject" -r "$from" -c "$to" "$also_to"
fi
exit 0
หลังจากสร้างสคริปต์ /etc/scripts/alertmemory.sh แล้ว ให้ทำให้สามารถเรียกใช้งานได้และแสดงลิงก์ไปยัง cron.hourly
chmod +x /etc/scripts/alertmemory.sh
ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh
ซึ่งหมายความว่าสคริปต์ด้านบนจะทำงานทุกๆ 1 ชั่วโมงตราบใดที่เซิร์ฟเวอร์ยังทำงานอยู่
เคล็ดลับ: คุณสามารถทดสอบได้ว่าการทำงานเป็นไปตามที่ต้องการหรือไม่ ตั้งค่าเครื่องหมายเปรียบเทียบให้สูงเล็กน้อยเพื่อให้ส่งอีเมลได้อย่างง่ายดาย และระบุช่วงเวลาเล็กน้อยเป็น ประมาณ 5 นาที
จากนั้นทำการตรวจสอบต่อจากบรรทัดคำสั่งโดยใช้คำสั่งฟรีที่ให้ไว้ในสคริปต์ เมื่อคุณยืนยันว่าใช้งานได้แล้ว ให้กำหนดค่าจริงที่คุณต้องการใช้
ด้านล่างนี้คือภาพหน้าจอที่แสดงตัวอย่างอีเมลแจ้งเตือน
นั่นคือทั้งหมด! ในบทความนี้ เราได้อธิบายวิธีใช้เชลล์สคริปต์เพื่อส่งอีเมลแจ้งเตือนไปยังผู้ดูแลระบบในกรณีที่หน่วยความจำเซิร์ฟเวอร์ (RAM) เหลือน้อย คุณสามารถแบ่งปันความคิดเห็นเกี่ยวกับหัวข้อนี้กับเราผ่านแบบฟอร์มคำติชมด้านล่าง