AgileApps Support Wiki Pre Release

Monitoring Cluster-Enabled Quartz Instances

From AgileApps Support Wiki
Revision as of 18:32, 19 July 2011 by imported>Aeric

Monitoring Cluster--Enabled Quartz Instances

This process sets up an automatic check that sends an email alert when Quartz is down.

  1. Verify that these lines are in the quartz.properties file. (They are present in new installations, but are not automatically added during upgrades.)
    <syntaxhighlight lang="perl" enclose="div">

org.quartz.scheduler.instanceId = AUTO # Automatically assigns instance IDs to prevent conflicts ... org.quartz.jobStore.misfireThreshold = 60000 # Prevent infinite loop if a job can't start, but keeps retrying ... org.quartz.jobStore.isClustered = true # Turn on clustering org.quartz.jobStore.clusterCheckinInterval = 20000 </syntaxhighlight>

  1. Download the monitor_quartz.pl (Perl) script from the platform downloads area.
  2. Set these variable values for your installation:
    • $hostname - Name of the server the script is running on.
    • $mysql_username - Database user name.
    • $mysql_password - Database password.
    • $mysql_host - Name of server the database is running on.
    • $config_file - Absolute path to tomcat/webapps/networking/WEB-INF/web.xml
    • $recipients - Comma-separated list of email addresses who will receive email status messages
  3. In the verifyQuartz subroutine, modify the first command string to insert the server hostname.
    • -e"SELECT LAST_CHECKIN_TIME FROM QRTZ_SCHEDULER_STATE WHERE INSTANCE_NAME LIKE '%HOSTNAME_HERE%' and ...
  4. Run the script on your server.
    You'll get an email alert whenever it is found that Quartz isn't running.
How it Works
The lines in the properties file cause quartz to put an entry into the relationals.QRTZ_SCHEDULER_STATE table in the database. The script checks the timestamp to verify that the last stamp was within 5 minutes. (Quartz should be running once a minute. If it hasn't run in five minutes, it is considered to be down.)