نماد سایت وبلاگ شتابان هاست

آموزش مانیتور کردن Ram در لینوکس

RAM

bash script in linux

برای مانیتور کردن سیستم های لینوکسی ابزارهای open source و رایگان زیادی وجود دارد. هنگامی که RAM سیستم به حداکثر برسد، یک ایمیل برای شما ارسال می کند. bash script استفاده از CPU، استفاده از حافظه، استفاده از SWAP، استفاده از فضای دیسک و خیلی چیزهای دیگر را مانیتور می کند.برای مانیتور کردن چند سیستم می توانید که از یک shell script کوتاه برای ساده کردن کار استفاده کنید.

در این آموزش،ما دو shell script را برای مانیتور کردن استفاده حافظه ( RAM ) در لینوکس به شما توضیح می دهیم

زمانی که حافظه سیستم پر میشود, یک ایمیل (مخصوص پر شدن حافظه) به شما ارسال میشود.

۱- Bash script برای مانیتور کردن استفاده از حافظه RAM و ارسال ایمیل :

این یک اسکریپت بسیار ساده برای RAM ، و یک خط است. اگر می خواهید درصد مانیتور کردن حافظه را فقط با یک ایمیل بدانید از این اسکریپت استفاده کنید.

زمانی که ۸۰% از حافظه سیستم شما پر می شود یک ایمیل به شما ارسال می شود.

*/۵ * * * * /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | awk '{ if($1 > 80) print $0;}' | mail -s "High Memory Alert" shetabanhost@gmail.com

 

توجه:ما در اخر مثال بالا به عنوان نمونه ایمیل خود را وارد کرده ایم ولی در دستور که شما وارد می کنید باید ایمیل خود را وارد کنید .

خروجی: شما یک ایمیل هشدار مشابه زیر خواهید داشت.

High Memory Alert: 80.40

۲- Bash script برای مانیتور کردن استفاده از حافظه RAM و ارسال ایمیل : ( روش دوم )

اگر می خواهید که اطلاعات بیشتری از مانیتور کردن حافظه RAM در ایمیل خود دریافت کنید با ما در ادامه این آموزش همراه باشید

از اسکریپت های زیر استفاده کنید که شامل جزئیات بیشتری از مانیتور حافظه براساس command و  ps command است .

این بلافاصله اتفاق هایی که در RAM سیستم شما رخ می دهد را به شما می گوید.

هنگامی که سیستم شما ۸۰ درصد از استفاده از حافظه را به دست می آورد، یک ایمیل به آن متصل می شود.

# vi /opt/scripts/memory-alert.sh

#!/bin/sh
ramusage=$(free | awk '/Mem/{printf("RAM Usage: %.2f\n"), $3/$2*100}'| awk '{print $3}')

if [ "$ramusage" > 20 ]; then

SUBJECT="ATTENTION: Memory Utilization is High on $(hostname) at $(date)"

MESSAGE="/tmp/Mail.out"

TO="2daygeek@gmail.com"

  echo "Memory Current Usage is: $ramusage%" >> $MESSAGE

  echo "" >> $MESSAGE

  echo "------------------------------------------------------------------" >> $MESSAGE

  echo "Top Memory Consuming Process Using top command" >> $MESSAGE

  echo "------------------------------------------------------------------" >> $MESSAGE

  echo "$(top -b -o +%MEM | head -n 20)" >> $MESSAGE

  echo "" >> $MESSAGE

  echo "------------------------------------------------------------------" >> $MESSAGE

  echo "Top Memory Consuming Process Using ps command" >> $MESSAGE

  echo "------------------------------------------------------------------" >> $MESSAGE

  echo "$(ps -eo pid,ppid,%mem,%Memory,cmd --sort=-%mem | head)" >> $MESSAGE

  mail -s "$SUBJECT" "$TO" < $MESSAGE

  rm /tmp/Mail.out

  fi

 

توجه:ما در مثال بالا از ایمیل خودمان استفاده کرده ایم شما به جای ایمیل شتابان هاست ایمیل خود را در دستور جای گذاری کنید.

در نهایت یک Cronjob برای خودکار شدن این کار اضافه کنید تا هر ۵ دقیقه اجرا شود.

# crontab -e 
*/۵ * * * * /bin/bash /opt/scripts/memory-alert.sh

 

توجه: این اسکریپت هر ۵ دقیقه یک بار وضعیت را بررسی می کند و برای شما یک ایمیل هشدار ارسال می کند.(البته هر ۵ دقیقه نیست بستگی به زمان بندی دارد)

برای مثال، اگر حافظه سیستم شما به سطح بیشتر از ۸۰٫۲۵ رسید، هشدار ایمیل در عرض ۵ دقیقه دریافت خواهید کرد.

خروجی: شما یک ایمیل هشدار مشابه زیر خواهد بود.

Memory Current Usage is: 80.71%
+------------------------------------------------------------------+
Top Memory Consuming Process Using top command
+------------------------------------------------------------------+
top - 12:00:58 up 5 days,  9:03,  1 user,  load average: 1.82, 2.60, 2.83
Tasks: 314 total,   1 running, 313 sleeping,   0 stopped,   0 zombie
%Cpu0  :  8.3 us, 12.5 sy,  0.0 ni, 75.0 id,  0.0 wa,  0.0 hi,  4.2 si,  0.0 st
%Cpu1  : 13.6 us,  4.5 sy,  0.0 ni, 81.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  : 21.7 us, 21.7 sy,  0.0 ni, 56.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  : 13.6 us,  9.1 sy,  0.0 ni, 77.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  : 17.4 us,  8.7 sy,  0.0 ni, 73.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  : 20.8 us,  4.2 sy,  0.0 ni, 70.8 id,  0.0 wa,  0.0 hi,  4.2 si,  0.0 st
%Cpu6  :  9.1 us,  0.0 sy,  0.0 ni, 90.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  : 17.4 us,  4.3 sy,  0.0 ni, 78.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16248588 total,  5015964 free,  6453404 used,  4779220 buff/cache
KiB Swap: 17873388 total, 16928620 free,   944768 used.  6423008 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
۱۷۱۶۳ daygeek   20     2033204 487736 282888 S  10.0   3.0   8:26.07 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /u+
 ۱۱۲۱ daygeek   20     4191388 419180 100552 S   5.0   2.6 126:02.84 /usr/bin/gnome-shell
 ۱۹۰۲ daygeek   20     1701644 327216  82536 S  20.0   2.0 153:27.92 /opt/google/chrome/chrome
 ۲۹۶۹ daygeek   20     1051116 324656  92388 S  15.0   2.0 149:38.09 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=1339861+
 ۱۰۶۸ daygeek   20     1104856 309552 278072 S   5.0   1.9 143:47.42 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
۲۷۲۴۶ daygeek   20      907344 265600 108276 S  30.0   1.6  10:42.80 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=8587368+

+------------------------------------------------------------------+
Top Memory Consuming Process Using ps command
+------------------------------------------------------------------+
  PID  PPID %MEM %CPU CMD
 ۸۲۲۳     ۱  ۶٫۴  ۶٫۸ /usr/lib/firefox/firefox --new-window
۱۳۹۴۸  ۱۱۲۱  ۶٫۳  ۱٫۲ /usr/bin/../lib/notepadqq/notepadqq-bin
 ۸۶۷۱  ۸۲۲۳  ۴٫۴  ۷٫۵ /usr/lib/firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 6999 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
۱۷۱۶۳  ۸۲۲۳  ۳٫۰  ۰٫۶ /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
 ۱۱۲۱  ۱۰۷۸  ۲٫۵  ۱٫۶ /usr/bin/gnome-shell
۱۷۹۳۷  ۸۲۲۳  ۲٫۵  ۰٫۸ /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 9410 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
 ۸۴۹۹  ۸۲۲۳  ۲٫۲  ۰٫۶ /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 6635 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
 ۸۳۰۶  ۸۲۲۳  ۲٫۲  ۰٫۸ /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
 ۹۱۹۸  ۸۲۲۳  ۲٫۱  ۰٫۶ /usr/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -prefsLen 8604 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
خروج از نسخه موبایل