Python Modules¶
Various Python modules are required to use ExaCheck. The current requirements and their versions can be found in the pyproject.toml file. For reference they are listed here with their purpose.
Main Script¶
These dependencies are used as a part of the main script.
- Apprise:
appriseis used to handle notifications to external services. - ExaBGP:
exabgpis used to actually talk BGP; ExaCheck communicates with ExaBGP to announce or withdraw routes as needed. - Loguru:
loguruis used for logging. - Pydantic:
pydanticis used to validate and store the configuration objects and check results. - PyYAML:
pyyamlis used to load and parse the configuration file into a dict, ready for Pydantic to consume. - setproctitle:
setproctitlewill change the process title for the child processes. - tabulate:
tabulateis used to format output into a table. - UltraJSON:
ujsonis used for loading configuration from JSON.
Health Checks¶
These dependencies are required for the various health checks to work.
- dnspython:
dnspythonis used for thednshealth check method and to look up hostnames when required for other checks. - icmplib:
icmplibis used for theicmphealth check method. - ntplib:
ntplibis used for thentphealth check method. - HTTPX:
HTTPXis used for thehttphealth check method.
icmplib Note¶
By default, icmplib is used in non-privileged mode. There ARE some requirements for this to work depending on the Linux distribution, see step 2 on the icmplib without privileges page.
Command Line Interface¶
These dependencies are required for the command line interface.
- Click:
clickprovides the command line interface.
Sentry¶
If you would like to enable Sentry support, the sentry-sdk module must be installed; it is not included as a default dependency. ExaCheck may be installed using the sentry extras tag to include the module, as an example: