Bellek Azaldığında E-posta Uyarısı Gönderen Kabuk Komut Dosyası


Bash gibi Unix/Linux kabuk programlarının güçlü bir yönü, karar vermenizi, komutları tekrar tekrar yürütmenizi, yeni işlevler oluşturmanızı ve çok daha fazlasını gerçekleştirmenizi sağlayan ortak programlama yapılarına olan şaşırtıcı desteğidir. Kabuk betiği olarak bilinen bir dosyaya komutlar yazabilir ve bunları toplu olarak çalıştırabilirsiniz.

Bu size güvenilir ve etkili bir sistem yönetimi aracı sunar. Günlük yedeklemeler, sistem güncellemeleri vb. gibi görevleri otomatikleştirmek için komut dosyaları yazabilirsiniz; yeni özel komutlar/yardımcı programlar/araçlar ve daha fazlasını oluşturun. Bir sunucuda olup bitenleri takip etmenize yardımcı olacak komut dosyaları yazabilirsiniz.

Bir sunucunun kritik bileşenlerinden biri bellektir (RAM), sistemin genel performansını büyük ölçüde etkiler.

Bu yazıda, sunucu belleği azaldığında bir veya daha fazla sistem yöneticisine uyarı e-postası göndermek için küçük ama kullanışlı bir kabuk komut dosyası paylaşacağız.

Bu komut dosyası, örneğin yaklaşık 1 GB gibi az miktarda belleğe sahip Linux VPS'yi (Sanal Özel Sunucular) takip etmek için özellikle kullanışlıdır ( yaklaşık 990 MB).

Test Ortamı Kurulumu

  1. Çalışan bir postfix posta sunucusuyla birlikte mailx yardımcı programının yüklendiği bir CentOS/RHEL 7 üretim sunucusu.

alertmemory.sh betiği şu şekilde çalışır: önce boş bellek boyutunu kontrol eder, ardından boş bellek miktarının belirtilen boyuta (100 MB) eşit veya daha az olup olmadığını belirler. bu kılavuzun amacı doğrultusunda), en az kabul edilebilir boş bellek boyutu için bir karşılaştırma noktası olarak kullanılır.

Bu koşul doğruysa, sunucu RAM'ini tüketen ilk 10 işlemin bir listesini oluşturur ve belirtilen e-posta adreslerine bir uyarı e-postası gönderir.

Not: Linux dağıtım gereksinimlerinizi karşılamak için komut dosyasında birkaç değişiklik yapmanız gerekecektir (özellikle posta gönderici yardımcı programında, uygun işaretleri kullanın).


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

Komut dosyanızı /etc/scripts/alertmemory.sh oluşturduktan sonra çalıştırılabilir hale getirin ve cron.hourly'ye sembolik bağlantı yapın.


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

Bu, sunucu çalıştığı sürece yukarıdaki betiğin her 1 saatte bir çalıştırılacağı anlamına gelir.

İpucu: İstenildiği gibi çalışıp çalışmadığını test edebilir, bir e-postanın kolayca gönderilmesini tetiklemek için karşılaştırma değerini biraz yükseğe ayarlayabilir ve küçük bir aralık belirleyebilirsiniz. yaklaşık 5 dakika.

Daha sonra komut dosyasında sağlanan ücretsiz komutu kullanarak komut satırından kontrol etmeye devam edin. Çalıştığını onayladıktan sonra kullanmak istediğiniz gerçek değerleri tanımlayın.

Aşağıda örnek bir uyarı e-postasını gösteren bir ekran görüntüsü bulunmaktadır.

Bu kadar! Bu yazımızda, sunucu belleğinin (RAM) azalması durumunda sistem yöneticilerine uyarı e-postaları göndermek için kabuk betiğinin nasıl kullanılacağını anlattık. Bu konuyla ilgili düşüncelerinizi aşağıdaki geri bildirim formunu kullanarak bizimle paylaşabilirsiniz.