The "plt-service-monitor" package provides tools for tasks to register “heartbeat” activity to an AWS S3 bucket and for a periodic polling of heartbeats and HTTP sites.
The configuration of tasks, sites, and e-mail addresses to alert are stored in the S3 bucket in a "config.rktd" file. The plt-service-monitor/config module provides functions to adjusting the configuration.
Besides providing the beat function, plt-service-monitor/beat can be run from the command line and given its arguments as command-line arguments.
If the region of s3-bucket is not supplied, it is determined through a query.
The plt-service-monitor/take-pulse module can be run from the command-line, in which case the S3 bucket name must be given as a command-line argument. In addition, --email-config can specify a file that contains a configuration hash table for sending e-mail alerts, and --no-email or --fail-email configure the e-mail alert mode. A --beat argument registers a new heartbeat for a given task name after taking a pulse (and sending e-mail, if any), which is useful for monitoring the server monitor itself from the a different service monitor; that service name is treated as the “self” name of the current service to avoid reporting misleading failures about itself.
procedure
[ #:regionregion#:email-modeemail-mode#:email-configemail-configs3-bucket:string?
The S3 bucket’s configuration file may specify e-mail addresses to receive the poll summary. If email-mode is 'always or it is 'failure and the health check fails, then e-mail is sent (although individual e-mail addresses can be configured to send mail only on failure). In that case, email-config configures the way that e-mail is sent through the following keys:
'server — a string or #f (the default); if a string is provided, then the SMTP protocol is used with the specified server, otherwise e-mail is sent through sendmail
'from — an e-mail address for the sender; the default is the first e-mail address in the list of receivers
'connect (SMTP only) — 'plain, 'ssl, or 'tls
'user (SMTP only) — a username string for authentication
'password (SMTP only) — a password string for authentication
'sending-server — (SMTP only) a string or #f (the default); if a string is provided, then it is supplied as the name of the sending server when communicating with the server specified by 'server
If self-name is not #f, then the current time is used for the last heartbeat of self-name (which can prevent a pulse-taking service from reporting its own failure).
The get-task function returns #f if the task name is not configured, otherwise it returns a hash table suitable for updating and returning to set-task .
The hash table provided to set-task can have the following keys with the indicated contracts on the key values:
'name:string? (required) — the task name as used with beat (but beat does not check whether a given task name is configured as one that is checked by take-pulse )
'period:exact-nonnegative-integer? — the maximum number of seconds that should elapse between heartbeats for the task; the default is one day
Unless force? is true, then get-task or set-task fail if s3-bucket does not have a configuration object "config.rktd".
Unless skip-html? is true, then set-task or remove-task uploads "index.html", "config.css", and "script.js" alongside "config.rktd" for viewing heartbeat results. Those files are uploaded only if set-task or remove-task changes the configuration. Details of the generated HTML page can be inspected and adjusted with get-html and set-html .
Changed in version 1.1 of package plt-service-monitor: Added HTML view support.
The hash table provided to set-site can have the following keys with the indicated contracts on the key values:
'url:string? (required) — the URL to poll
Changed in version 1.1 of package plt-service-monitor: Added HTML view support.
The hash table provided to set-email can have the following keys with the indicated contracts on the key values:
'to:string? (required) — the e-mail address
'on-success?:boolean? — whether e-mail is sent even when all health checks succeed; the default is #t
Changed in version 1.1 of package plt-service-monitor: Added HTML view support.
The hash table provided to set-html can have the following keys with the indicated contracts on the key values, and get-html produces a similar table or #f:
'title:string? — a title string
Added in version 1.1 of package plt-service-monitor.