ค้นหาเว็บไซต์

เชลล์สคริปต์เพื่อส่งการแจ้งเตือนทางอีเมลเมื่อหน่วยความจำเหลือน้อย


ลักษณะอันทรงพลังของโปรแกรมเชลล์ Unix/Linux เช่น bash คือการรองรับโครงสร้างการเขียนโปรแกรมทั่วไปที่น่าทึ่ง ซึ่งช่วยให้คุณสามารถตัดสินใจ ดำเนินการคำสั่งซ้ำๆ สร้างฟังก์ชันใหม่ และอื่นๆ อีกมากมาย คุณสามารถเขียนคำสั่งในไฟล์ที่เรียกว่าเชลล์สคริปต์และดำเนินการคำสั่งเหล่านั้นร่วมกันได้

นี่เป็นวิธีการจัดการระบบที่เชื่อถือได้และมีประสิทธิภาพ คุณสามารถเขียนสคริปต์เพื่อทำให้งานเป็นแบบอัตโนมัติ เช่น การสำรองข้อมูลรายวัน การอัปเดตระบบ ฯลฯ สร้างคำสั่ง/ยูทิลิตี้/เครื่องมือที่กำหนดเองใหม่ และอื่นๆ อีกมากมาย คุณสามารถเขียนสคริปต์เพื่อช่วยให้คุณตามทันสิ่งที่เกิดขึ้นบนเซิร์ฟเวอร์

องค์ประกอบที่สำคัญอย่างหนึ่งของเซิร์ฟเวอร์คือหน่วยความจำ (RAM) ซึ่งส่งผลกระทบอย่างมากต่อประสิทธิภาพโดยรวมของระบบ

ในบทความนี้ เราจะแบ่งปันเชลล์สคริปต์เล็กๆ แต่มีประโยชน์เพื่อส่งอีเมลแจ้งเตือนไปยังผู้ดูแลระบบตั้งแต่หนึ่งคนขึ้นไป หากหน่วยความจำเซิร์ฟเวอร์เหลือน้อย

นี่เป็นสคริปต์ที่มีประโยชน์อย่างยิ่งสำหรับการจับตาดู Linux VPS (เซิร์ฟเวอร์ส่วนตัวเสมือน) ที่มีหน่วยความจำจำนวนน้อย เช่น ประมาณ 1GB ( ประมาณ 990MB)

การทดสอบการตั้งค่าสภาพแวดล้อม

  1. เซิร์ฟเวอร์ที่ใช้งานจริง 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) เหลือน้อย คุณสามารถแบ่งปันความคิดเห็นเกี่ยวกับหัวข้อนี้กับเราผ่านแบบฟอร์มคำติชมด้านล่าง