Monitorizez sute de servere atât dedicate, cât și virtuale folosind următorul script:
#!/bin/bash
PATH=/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
prag=90
serverip=$($(care ifconfig) | grep -Eo 'inet (adresa:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9] ]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1)
memused=$(free | awk '/Mem/{printf("Utilizare RAM: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | cut -d"." - f1)
if [ "$memused" -gt "$threshold" ]
atunci
CTIME=$(data +%Y-%m-%d-%H%M%S)
ps aux > /root/.example/logs/lowmem-"${CTIME}"-ps.log
top -n 1 -o %MEM -c > /root/.example/logs/lowmem-"${CTIME}"-top.log
free -m > /root/.example/logs/lowmem-"${CTIME}"-free.log
mysqladmin proc -v status > /root/.example/logs/lowmem-"${CTIME}"-mysqlproc.log
bash /example/general/slack.sh "#server-alerts" ":warning: $(hostname) - ${serverip} - Utilizarea memoriei a atins 90% - Verificați jurnalele /root/.example/logs/lowmem-${ CTIME} \n \`\`\`$(head -1 /root/.example/logs/lowmem-"${CTIME}"-free.log) \n $(head -2 /root/.example/logs /lowmem-"${CTIME}"-free.log | tail -1) \n $(tail -1 /root/.example/logs/lowmem-"${CTIME}"-free.log)\`\` \`"
crontab -l | grep -v '/example/mon_mem.sh' | crontab -
dormi 900
crontab -l | { pisică; echo "* * * * * bash /example/mon_mem.sh"; } | crontab -
fi
Deși funcționează în majoritatea cazurilor, primim aleatoriu false pozitive, serverele sale complet aleatorii și nu sunt în concordanță cu fiecare server, așa că un server s-ar putea declanșa, dar apoi nu se declanșează din nou (fals)
Exemplu de fals pozitiv:
totalul folosit gratuit partajat buff/cache disponibil
Mem: 2048 345 1580 27 122 1674
Schimb: 2048 0 2048
A venit o alertă de pe acest server, dar puteți vedea că numai 345 MB au fost în uz.