มุมมองที่มีประสิทธิภาพของโปรแกรมเชลล์ Unix/Linux เช่น bash เป็นการสนับสนุนที่น่าทึ่งสำหรับโครงสร้างการเขียนโปรแกรมทั่วไปที่ช่วยให้คุณตัดสินใจ รันคำสั่งซ้ำๆ สร้างฟังก์ชันใหม่ และอื่นๆ อีกมากมาย คุณสามารถเขียนคำสั่งในไฟล์ที่เรียกว่าเชลล์สคริปต์และเรียกใช้งานร่วมกันได้
นี่เป็นวิธีการดูแลระบบที่เชื่อถือได้และมีประสิทธิภาพ คุณสามารถเขียนสคริปต์เพื่อทำงานอัตโนมัติได้ เช่น การสำรองข้อมูลรายวัน การอัปเดตระบบ ฯลฯ สร้างคำสั่ง/ยูทิลิตี้/เครื่องมือที่กำหนดเองใหม่ และอื่นๆ คุณสามารถเขียนสคริปต์เพื่อช่วยให้คุณทันกับสิ่งที่เกิดขึ้นบนเซิร์ฟเวอร์
องค์ประกอบที่สำคัญอย่างหนึ่งของเซิร์ฟเวอร์คือหน่วยความจำ (RAM ) ซึ่งส่งผลกระทบอย่างมากต่อประสิทธิภาพโดยรวมของระบบ
ในบทความนี้ เราจะแบ่งปันเชลล์สคริปต์ขนาดเล็กแต่มีประโยชน์ในการส่งอีเมลแจ้งเตือนไปยังผู้ดูแลระบบอย่างน้อยหนึ่งราย หากหน่วยความจำของเซิร์ฟเวอร์เหลือน้อย
สคริปต์นี้มีประโยชน์อย่างยิ่งในการเฝ้าติดตาม Linux VPS (เซิร์ฟเวอร์ส่วนตัวเสมือน ) ด้วยหน่วยความจำเพียงเล็กน้อย ประมาณ 1GB (ประมาณ 990MB ).
การตั้งค่าสภาพแวดล้อมการทดสอบ
- A 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 :admin@wsxdn.com
#License : GNU GPL-3
#######################################################################################
## declare mail variables
##email subject
subject="Server Memory Status Alert"
##sending mail as
from="admin@wsxdn.com"
## sending mail to
to="admin@wsxdn.com"
## send carbon copy to
also_to="admin@wsxdn.com"
## 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) เหลือน้อย คุณสามารถแบ่งปันความคิดใด ๆ เกี่ยวกับหัวข้อนี้กับเราผ่านทางแบบฟอร์มคำติชมด้านล่าง