bestool-alertd
An alert daemon that watches a set of YAML alert definitions, runs them on a schedule, and dispatches the results to one or more targets (email, HTTP endpoints, etc.).
This crate is part of BES tooling, and is in particular what powers
the tamanu alerts workflow. It is published as both a library and a
standalone binary; the bestool umbrella tool also embeds it.
Install
$ cargo install bestool-alertd
Pre-built binaries are attached to each bestool-alertd-v* GitHub release.
Use
$ bestool-alertd run \
--database-url postgresql://localhost/mydb \
--glob '/etc/myapp/alerts/**/*.yml'
Common flags:
--glob PATTERN(repeatable): where to find alert definition files. Patterns may match a directory (read recursively) or individual files. Globs are watched for changes and re-evaluated periodically.--database-url URL/DATABASE_URL: PostgreSQL connection for SQL alerts.--email-from,--mailgun-api-key,--mailgun-domain: enable email targets via Mailgun.--device-key-file PATH/DEVICE_KEY_FILE: PEM identity used when posting to canopy/eventstargets.--dry-run: execute every alert once and exit; useful in CI.--server-addr: where the local HTTP control API listens (default[::1]:8271and127.0.0.1:8271).
bestool-alertd exposes additional subcommands that talk to a running daemon
via its HTTP API: status, reload, loaded-alerts, pause-alert,
validate. SIGHUP also triggers a reload on Unix.
On Windows, bestool-alertd install registers a native service named
bestool-alertd; uninstall and configure-recovery are also provided.
Defining alerts and targets
- Alert files: see ALERTS.md.
- Target files: see TARGETS.md.
Library
The crate also exposes a library API (bestool_alertd::run,
DaemonConfig, …) so other tools can embed the daemon without going through
the binary.
License
GPL-3.0-or-later.