bestool-alertd 1.0.0

(Internal) BES tooling: Alert daemon
Documentation
# Usage

## Main Command

```
BES tooling: Alert daemon

The daemon watches for changes to alert definition files and automatically reloads when changes are
detected. You can also send SIGHUP to manually trigger a reload.

On Windows, the daemon can be installed as a native Windows service using the 'install' subcommand. See
'bestool-alertd install --help' for details.

Usage: bestool-alertd [OPTIONS] <COMMAND>

Commands:
  run            Run the alert daemon
  reload         Send reload signal to running daemon
  loaded-alerts  List currently loaded alert files
  pause-alert    Temporarily pause an alert
  validate       Validate an alert definition file
  help           Print this message or the help of the given subcommand(s)

Options:
      --color <MODE>
          When to use terminal colours.
          
          You can also set the `NO_COLOR` environment variable to disable colours, or the `CLICOLOR_FORCE`
          environment variable to force colours. Defaults to `auto`, which checks whether the output is a
          terminal to decide.

          Possible values:
          - auto:   Automatically detect whether to use colours
          - always: Always use colours, even if the terminal does not support them
          - never:  Never use colours
          
          [default: auto]

  -v, --verbose...
          Set diagnostic log level.
          
          This enables diagnostic logging, which is useful for investigating bugs. Use multiple times to
          increase verbosity.
          
          You may want to use with `--log-file` to avoid polluting your terminal.

      --log-file [<PATH>]
          Write diagnostic logs to a file.
          
          This writes diagnostic logs to a file, instead of the terminal, in JSON format.
          
          If the path provided is a directory, a file will be created in that directory. The file name
          will be the current date and time, in the format `programname.YYYY-MM-DDTHH-MM-SSZ.log`.

      --log-timeless
          Omit timestamps in logs.
          
          This can be useful when running under service managers that capture logs, to avoid having two
          timestamps. When run under systemd, this is automatically enabled.
          
          This option is ignored if the log file is set, or when using `RUST_LOG` or equivalent (as
          logging is initialized before arguments are parsed in that case); you may want to use
          `LOG_TIMELESS` instead in the latter case.

  -h, --help
          Print help (see a summary with '-h')
```

## Subcommands

### `run`

```
Run the alert daemon

Starts the daemon which monitors alert definition files and executes alerts based on their configured
schedules. The daemon will watch for file changes and automatically reload when definitions are modified.

Usage: bestool-alertd run [OPTIONS]

Options:
      --database-url <DATABASE_URL>
          Database connection URL
          
          PostgreSQL connection URL, e.g., postgresql://user:pass@localhost/dbname
          
          [env: DATABASE_URL=]

      --glob <GLOB>
          Glob patterns for alert definitions
          
          Patterns can match directories (which will be read recursively) or individual files. Can be
          provided multiple times. Examples: /etc/tamanu/alerts, /opt/*/alerts,
          /etc/tamanu/alerts/**/*.yml

      --email-from <EMAIL_FROM>
          Email sender address
          
          [env: EMAIL_FROM=]

      --mailgun-api-key <MAILGUN_API_KEY>
          Mailgun API key
          
          [env: MAILGUN_API_KEY=]

      --mailgun-domain <MAILGUN_DOMAIN>
          Mailgun domain
          
          [env: MAILGUN_DOMAIN=]

      --dry-run
          Execute all alerts once and quit (ignoring intervals)

      --no-server
          Disable the HTTP server

      --server-addr <SERVER_ADDR>
          HTTP server bind address(es)
          
          Can be provided multiple times. The server will attempt to bind to each address in order until
          one succeeds. Defaults to [::1]:8271 and 127.0.0.1:8271

  -h, --help
          Print help (see a summary with '-h')
```

### `reload`

```
Send reload signal to running daemon

Connects to the running daemon's HTTP API and triggers a reload. This is an alternative to SIGHUP that
works on all platforms including Windows.

Usage: bestool-alertd reload [OPTIONS]

Options:
      --server-addr <SERVER_ADDR>
          HTTP server address(es) to try
          
          Can be provided multiple times. Will attempt to connect to each address in order until one
          succeeds. Defaults to [::1]:8271 and 127.0.0.1:8271

  -h, --help
          Print help (see a summary with '-h')
```

### `loaded-alerts`

```
List currently loaded alert files

Connects to the running daemon's HTTP API and retrieves the list of currently loaded alert definition
files.

Usage: bestool-alertd loaded-alerts [OPTIONS]

Options:
      --server-addr <SERVER_ADDR>
          HTTP server address(es) to try
          
          Can be provided multiple times. Will attempt to connect to each address in order until one
          succeeds. Defaults to [::1]:8271 and 127.0.0.1:8271

      --detail
          Show detailed state information for each alert

  -h, --help
          Print help (see a summary with '-h')
```

### `pause-alert`

```
Temporarily pause an alert

Pauses an alert until the specified time. The alert will not execute during this period. The pause is lost
when the daemon restarts.

Usage: bestool-alertd pause-alert [OPTIONS] <ALERT>

Arguments:
  <ALERT>
          Alert file path to pause

Options:
      --until <UNTIL>
          Time until which to pause the alert (fuzzy time format)
          
          Examples: "1 hour", "2 days", "next monday", "2024-12-25T10:00:00Z" Defaults to 1 week from now
          if not specified.

      --server-addr <SERVER_ADDR>
          HTTP server address(es) to try
          
          Can be provided multiple times. Will attempt to connect to each address in order until one
          succeeds. Defaults to [::1]:8271 and 127.0.0.1:8271

  -h, --help
          Print help (see a summary with '-h')
```

### `validate`

```
Validate an alert definition file

Parses an alert definition file and reports any syntax or validation errors. Uses pretty error reporting
to pinpoint the exact location of problems. Requires the daemon to be running.

Usage: bestool-alertd validate [OPTIONS] <FILE>

Arguments:
  <FILE>
          Path to the alert definition file to validate

Options:
      --server-addr <SERVER_ADDR>
          HTTP server address(es) to try
          
          Can be provided multiple times. Will attempt to connect to each address in order until one
          succeeds. Defaults to [::1]:8271 and 127.0.0.1:8271

  -h, --help
          Print help (see a summary with '-h')
```