Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

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

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

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

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

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

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

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

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