File: //proc/1284356/root/bigscoots/mon_mem.sh
#!/bin/bash
PATH=/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
threshold=10
if [ -f /root/.bigscoots/mem.threshold ]
then
threshold=$(head -1 /root/.bigscoots/mem.threshold | awk '{print $1}')
fi
free > /root/.bigscoots/mem
serverip=$($(which ifconfig) | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1)
memused=$(awk '/Mem/{printf("RAM Usage: %.2f%\n"), $7/$2*100}' /root/.bigscoots/mem | awk '{print $3}' | cut -d"." -f1)
if [ "$memused" -lt "$threshold" ]
then
free > /root/.bigscoots/mem
memused=$(awk '/Mem/{printf("RAM Usage: %.2f%\n"), $7/$2*100}' /root/.bigscoots/mem | awk '{print $3}' | cut -d"." -f1)
if [ "$memused" -lt "$threshold" ]
then
CTIME=$(date +%Y-%m-%d-%H%M%S)
if [ -f /root/.bigscoots/counters/mmaxmory ]
then
echo "$(date '+%m%d%Y')" >> /root/.bigscoots/counters/maxmemory
else
mkdir -p /root/.bigscoots/counters
echo "$(date '+%m%d%Y')" >> /root/.bigscoots/counters/maxmemory
fi
ps aux > /root/.bigscoots/logs/lowmem-"${CTIME}"-ps.log
top -b -n 1 -o %MEM -c > /root/.bigscoots/logs/lowmem-"${CTIME}"-top.log
free -m > /root/.bigscoots/logs/lowmem-"${CTIME}"-free.log
mysqladmin proc -v status > /root/.bigscoots/logs/lowmem-"${CTIME}"-mysqlproc.log
curl -sq "http://localhost/phpstatus?full" -o /root/.bigscoots/logs/lowmem-"${CTIME}"-phpstatus.log
top -b -n 1 -o %MEM -c > /root/.bigscoots/logs/lowmem-"${CTIME}"-top.log
echo "Useful Information
Out of $(free -g | grep Mem: | awk '{print $2}')GB of Memory:
" > /root/.bigscoots/logs/lowmem-"${CTIME}"-USEFUL.log
echo "PHP-FPM Child Total Process Count: $(grep 'php-fpm: p' /root/.bigscoots/logs/lowmem-${CTIME}-top.log | grep -v grep | wc -l)
PHP-FPM Child Total Process Usage(Memory): $(grep 'php-fpm: p' /root/.bigscoots/logs/lowmem-${CTIME}-top.log | grep -v grep | awk '{ total += $6; count++ } END { print total/1024 }') MB
PHP-FPM Child Average Process Usage(Memory): $(grep 'php-fpm: p' /root/.bigscoots/logs/lowmem-${CTIME}-top.log | grep -v grep | awk '{ total += $6; count++ } END { print total/count/1024 }') MB
" >> /root/.bigscoots/logs/lowmem-"${CTIME}"-USEFUL.log
bash /bigscoots/general/slack.sh "#server-alerts" ":warning: $(hostname) - ${serverip} - Memory Usage has reached 90% - Check logs /root/.bigscoots/logs/lowmem-${CTIME} \n Triggered $(grep -c $(date '+%m%d%Y') /root/.bigscoots/counters/maxmemory) times today. \n Triggered $(wc /root/.bigscoots/counters/maxmemory -l | awk '{print $1}') times total. \n \`\`\`$(head -1 /root/.bigscoots/logs/lowmem-"${CTIME}"-free.log) \n $(head -2 /root/.bigscoots/logs/lowmem-"${CTIME}"-free.log | tail -1) \n $(head -1 /root/.bigscoots/mem)\n$(head -2 /root/.bigscoots/mem | tail -1)\n$(tail -1 /root/.bigscoots/mem)\`\`\`"
crontab -l | grep -v '/bigscoots/mon_mem.sh' | crontab -
sleep 900
if ! crontab -l | grep -q '/bigscoots/mon_mem.sh'
then
crontab -l | { cat; echo "* * * * * bash /bigscoots/mon_mem.sh"; } | crontab -
fi
fi
fi