Below is a simple script called monitor_jboss, which checks to see if jboss is running and whether or not too many instances are currently running. I found a need to write this script because we have some cron scripts which automatically restart JBoss each day and the JBoss shutdown script itself sometimes fails to properly shut down, causing some quirky behavior.
If it determines that one of the following conditions are true, it sends a short email to the address specified in the variable email describing the problem.
- JBoss is not running at all
- Jboss has more than max instances running
This script is then placed in /etc/cron.d/cron.hourly/ where it will check the system once an hour and send an email as appropriate.
#!/bin/bash # email addresses to send the message to email="email@example.com" # maximum number of concurrently running instances allowed max=1 # determine the number of running instances count_running_jbosses=$(ps aux | grep jboss | grep -v grep | grep -v monitor_jboss | wc -l) if [ $count_running_jbosses -eq "0" ] # jboss isn't running then message="JBoss Is Currently Not Running" fi if [ $count_running_jbosses > $max ] # too many jboss instances running then message="JBoss Is Currently Running $count_running_jbosses instances; the maximum is $max" fi subject="JBOSS MONITORING ALERT FOR: $(hostname)" echo "$message" | /bin/mail -s "$subject" "$email"