برای مانیتور کردن سیستم های لینوکسی ابزارهای open source و رایگان زیادی وجود دارد. هنگامی که RAM سیستم به حداکثر برسد، یک ایمیل برای شما ارسال می کند. bash script استفاده از CPU، استفاده از حافظه، استفاده از SWAP، استفاده از فضای دیسک و خیلی چیزهای دیگر را مانیتور می کند.برای مانیتور کردن چند سیستم می توانید که از یک shell script کوتاه برای ساده کردن کار استفاده کنید.
در این آموزش،ما دو shell 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" [email protected]
توجه:ما در اخر مثال بالا به عنوان نمونه ایمیل خود را وارد کرده ایم ولی در دستور که شما وارد می کنید باید ایمیل خود را وارد کنید .
خروجی: شما یک ایمیل هشدار مشابه زیر خواهید داشت.
High Memory Alert: 80.40
اگر می خواهید که اطلاعات بیشتری از مانیتور کردن حافظه 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="[email protected]" 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