มุมมองที่มีประสิทธิภาพของโปรแกรมเชลล์ 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 :[email protected] #License : GNU GPL-3 ####################################################################################### ## declare mail variables ##email subject subject="Server Memory Status Alert" ##sending mail as from="[email protected]" ## sending mail to to="[email protected]" ## send carbon copy to also_to="[email protected]" ## 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) เหลือน้อย คุณสามารถแบ่งปันความคิดใด ๆ เกี่ยวกับหัวข้อนี้กับเราผ่านทางแบบฟอร์มคำติชมด้านล่าง