bestool-alertd 4.0.0

(Internal) BES tooling: Alert daemon
Documentation

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 /events targets.
  • --dry-run: execute every alert once and exit; useful in CI.
  • --server-addr: where the local HTTP control API listens (default [::1]:8271 and 127.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

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.