Features¶
ExaCheck is primarily targeted to centralized health checks where one or more servers handle health checks for multiple services.
- Command line interface
- Live configuration reloads
- Health checks implemented in pure python where possible; no need to write scripts or use chains of commands to validate output
- Notifications for announce/withdraw events and other information
- Configuration validation (if using live configuration reloads, configuration is validated before application)
- Out of the box sane defaults where possible
- JSON schema of configuration (see schema.json for the current schema)
- Docker deployment supported
- Full IPv4 and IPv6 support
- Choice of YAML or JSON configuration
Live Configuration Reloads¶
Changes to the configuration file can optionally be applied without having to restart the ExaBGP/ExaCheck services. The live reload operation first checks to ensure the configuration is valid; if it is not valid the live reload will not proceed. Any unchanged services will not be affected.
To enable the live configuration reload feature see the relevant configuration page.
Notifications¶
Notifications are handled using Apprise. For a list of supported notification targets see the Apprise Wiki.
As with logging, notifications may be filtered per health check and for certain events. Multiple notification targets can be defined.
Check the notification configuration page to see examples of configuration options.
Docker Deployment¶
A Docker container which includes ExaBGP, ExaCheck and all requirements is available for easy deployment. The docker deployment page includes further details.
Configuration Format¶
The default configuration format is yaml. If the configuration file that is being loaded has the file extension json
it will be loaded as a JSON document instead.
For a full list of configuration options see the configuration page or check the examples page for inspiration.
Process Naming¶
The master and worker processes are named based on the task they are performing at the time and their status. As an example:
ExaCheck Master Process [/code/configuration.yaml]: Sleeping
ExaCheck Worker [ICMP test to Google]: Performing health check [startup]
ExaCheck Worker [TCP test to Google port 80]: Sleeping for 14.853 seconds [rising (1/3)]
ExaCheck Worker [File test to check if /tmp/test exists]: Sleeping for 15.000 seconds [rising (1/3)]
ExaCheck Worker [DNS query to Cloudflare public resolver]: Sleeping for 14.952 seconds [rising (1/3)]
ExaCheck Worker [DNS query to Cloudflare public resolver with validation]: Sleeping for 14.946 seconds [rising (1/3)]