Monit is incredibly flexible. It can be used to send email alerts (guide with Mailgun) when processes crash and automatically restart them. On all the VPS and dedicated servers I set up for my clients on Codeable, Monit is a must for proactive monitoring.
I like to know how large WordPress installations are with all of the images and plugins used nowadays. This tutorial will show you how to display the size of your folders in Monit and alert you by email if they exceed a certain size.
Check Folder Size with Monit + Email Alert
Installation overview
- Create the Monit check folder size script
- Configure Monit to use the script
Create Monit Check Folder Size Script
Create a folder for scripts and the folder space check script
sudo mkdir -p /root/scripts
sudo nano /root/scripts/foldersizecheck.sh
Paste the script which checks your WordPress folder size with Monit.
#!/bin/bash
#capture first passed variable
FOLDER_PATH=$1
#capture second passed variable
REFERENCE_SIZE=$2
#calculate size of folder
SIZE=$(/usr/bin/du -s $FOLDER_PATH | /usr/bin/awk '{print $1}')
#convert size to MB
MBSIZE=$((SIZE / 1024))
#output size so Monit can capture it
echo "$FOLDER_PATH - $MBSIZE MB"
#provide status code for alert
if [[ $MBSIZE -gt $(( $REFERENCE_SIZE )) ]]; then
exit 1
fi
Make the script executable
sudo chmod +x /root/scripts/foldersizecheck.sh
Run the script and pass the FOLDER_PATH
variable (/var/www/guides.wp-bullet.com
) as your WordPress folder and the REFERENCE_SIZE
as 500
which is in megabytes.
sudo bash /root/scripts/foldersizecheck.sh /var/www/guides.wp-bullet.com/ 500
You will see this output with the size of your WordPress or WooCommerce folder, here 118
/var/www/guides.wp-bullet.com/ - 118 MB
Not we can configure Monit to use this custom folder size checking script.
Configure Monit to Check Folder Size
Assuming you have a modular system for creating Monit configurations, create the new snippet
sudo nano /etc/monit/conf.d/wordpressfoldersize
If the folder /var/www/guides.wp-bullet.com
is greater than 500
MB we will get an email alert.
The every 200 cycles line means Monit will check every 200 x the Monit interval defined in /etc/monit/monitrc
check program WordPress
with path "/root/scripts/foldersizecheck.sh /var/www/guides.wp-bullet.com/ 500"
every 200 cycles
if status != 0 then alert
Ctrl+X, Y and Enter to Save and Exit.
Test Monit syntax is valid with our new addition of disk space checking and alerting.
sudo monit -t
Reload Monit if there were no errors
sudo service monit reload
Check out your new custom program in the Monit web interface.
Sources
Workaround to Check Monit Folder
Division with Bash Variables
Thanks!