Script to test various application reverse proxies, as well as their internal pages, and report to their respective Healthchecks.io checks. This is meant to work with Organizr Authentication, leveraging the Organizr API key to check the reverse proxies.
If you are not using Organizr, which you totally should be if you're not, you can remove the following from the external URL for any checks you want to use:
-H "token: ${orgAPIKey}"
Mind the space that is at the beginning of the line too.
There are variables at the top that are used throughout the script to do the tests. You'll want to fill in your domain, Organizr API key, and server IP(s). If you are self-hosting Healthchecks, you can change the hcPingDomain
variable. You'll also need to go to each of the check_application
functions and edit the UUID for the Healthcheck and the ports and/or subdomains or subdirectories on those. Lastly, uncomment (remove the #
from the beginning of the line) the checks that you wish to run in the main function at the bottom of the script.
Once you have all of the checks configured as you need, you can run the script with bash -x application_healthchecks_generic.sh
to make sure that all the responses are returning what's expected, an HTTP response code of 200
.
If you do not have reverse proxies (external access) setup for your applications, you can simply set the external response variable to 200
so that will always pass:
extResponse='200'
Now that you have it configured so that everything is working properly, you can use a cronjob to schedule the script to run automatically and perform the checks.
Here's an example of running the script every two minutes:
## Run application healthchecks script for Healthchecks.io
*/2 * * * * /home/tronyx/scripts/application_healthchecks.sh
My HC.io checks are setup with a two minute period and a three minute grace. You can adjust all of that according to your needs.
This script partners up with my Tronitor script that allows you to pause and unpause your monitors manually or via a cronjob for scheduled maintenance, etc. If you wish to use this script with Tronitor you will need to uncomment the Tronitor temp directory line and then comment out or remove the original one.
Big thanks to HalianElf for creating the Powershell version of the script for Windows users.
If you have any questions, you can find me on the Organizr Discord.