Skrip Shell untuk Mengirim Peringatan Email Saat Memori Hampir Habis


Aspek yang kuat dari program shell Unix/Linux seperti bash, adalah dukungannya yang luar biasa terhadap konstruksi pemrograman umum yang memungkinkan Anda mengambil keputusan, menjalankan perintah berulang kali, membuat fungsi baru, dan banyak lagi. Anda dapat menulis perintah dalam file yang dikenal sebagai skrip shell dan menjalankannya secara kolektif.

Ini menawarkan Anda sarana administrasi sistem yang andal dan efektif. Anda dapat menulis skrip untuk mengotomatiskan tugas, misalnya pencadangan harian, pembaruan sistem, dll; buat perintah/utilitas/alat khusus baru dan seterusnya. Anda dapat menulis skrip untuk membantu Anda mengikuti apa yang terjadi di server.

Salah satu komponen penting dari sebuah server adalah memori (RAM), hal ini sangat berdampak pada kinerja sistem secara keseluruhan.

Pada artikel ini, kami akan membagikan skrip shell kecil namun berguna untuk mengirim email peringatan ke satu atau lebih administrator sistem, jika memori server hampir habis.

Skrip ini sangat berguna untuk mengawasi VPS Linux (Virtual Private Server) dengan jumlah memori yang kecil, katakanlah sekitar 1 GB ( sekitar 990 MB).

Pengaturan Lingkungan Pengujian

  1. Server produksi CentOS/RHEL 7 dengan utilitas mailx diinstal dengan server email postfix yang berfungsi.

Beginilah cara skrip alertmemory.sh bekerja: pertama ia memeriksa ukuran memori bebas, kemudian menentukan apakah jumlah memori bebas kurang atau sama dengan ukuran yang ditentukan (100 MB untuk tujuan panduan ini), digunakan sebagai tolok ukur untuk ukuran memori bebas yang paling tidak dapat diterima.

Jika kondisi ini benar, maka akan menghasilkan daftar 10 proses teratas yang memakan RAM server dan mengirimkan email peringatan ke alamat email tertentu.

Catatan: Anda harus membuat beberapa perubahan pada skrip (terutama utilitas pengirim email, gunakan tanda yang sesuai) untuk memenuhi persyaratan distribusi Linux Anda.


#!/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

Setelah membuat skrip Anda /etc/scripts/alertmemory.sh, buat skrip tersebut dapat dieksekusi dan symlink ke cron.hourly.


chmod +x /etc/scripts/alertmemory.sh
ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh

Artinya script diatas akan dijalankan setiap 1 jam sekali selama server masih berjalan.

Kiat: Anda dapat menguji apakah ini berfungsi sebagaimana mestinya, menetapkan nilai tolok ukur sedikit tinggi agar mudah memicu pengiriman email, dan menentukan interval kecil sekitar 5 menit.

Kemudian terus periksa dari baris perintah menggunakan perintah gratis yang disediakan di skrip. Setelah Anda mengonfirmasi bahwa ini berfungsi, tentukan nilai sebenarnya yang ingin Anda gunakan.

Di bawah ini adalah tangkapan layar yang menunjukkan contoh email peringatan.

Itu saja! Pada artikel ini, kami menjelaskan cara menggunakan skrip shell untuk mengirim email peringatan ke administrator sistem jika memori server (RAM) hampir habis. Anda dapat berbagi pemikiran apa pun terkait topik ini kepada kami melalui formulir umpan balik di bawah.