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:
apprise
is used to handle notifications to external services. - ExaBGP:
exabgp
is used to actually talk BGP; ExaCheck communicates with ExaBGP to announce or withdraw routes as needed. - Loguru:
loguru
is used for logging. - Pydantic:
pydantic
is used to validate and store the configuration objects and check results. - PyYAML:
pyyaml
is used to load and parse the configuration file into a dict, ready for Pydantic to consume. - setproctitle:
setproctitle
will change the process title for the child processes. - tabulate:
tabulate
is used to format output into a table. - UltraJSON:
ujson
is used for loading configuration from JSON.
Health Checks¶
These dependencies are required for the various health checks to work.
- dnspython:
dnspython
is used for thedns
health check method and to look up hostnames when required for other checks. - icmplib:
icmplib
is used for theicmp
health check method. - ntplib:
ntplib
is used for thentp
health check method. - HTTPX:
HTTPX
is used for thehttp
health 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:
click
provides 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: