sensu-run
sensu-run
runs a command and send its result to Sensu server using the client socket input or via the Sensu API. It is useful to monitor cron jobs for example.
Installation
Binary releases are available at GitHub Releases. Currently supported platforms for the binary releases are:
- Ubuntu (64bit)
- macOS
- Windows (x64)
You can also build it yourself using stack:
stack install sensu-run
will install the sensu-run
command in ~/.local/bin
.
Usage
% sensu-run --help
Usage: sensu-run ([-n|--name NAME] [--source SOURCE] [--ttl SECONDS]
[--timeout SECONDS] [--handler HANDLER] ([--port PORT] |
[--server URL]) [--dry|--dry-run] [-s|--shell] [COMMAND] |
[-v|--version])
Available options:
-h,--help Show this help text
-n,--name NAME The name of the check
--source SOURCE The check source, used to create a JIT Sensu client
for an external resource
--ttl SECONDS The time to live in seconds until check results are
considered stale
--timeout SECONDS The check executaion duration timeout in seconds
--handler HANDLER Sensu event handler(s) to use for events created by
the check
--port PORT Send results to the local sensu-client listening on
the specified port (default: 3030)
--server URL Send results to the specified Sensu server
-s,--shell Execute the command using the shell
--dry-run
option is useful to check the JSON output:
% sensu-run --name check-home-src-size --handler foo --dry-run -- du -s $HOME/src | jq .
{
"name": "check-home-src-size",
"command": "du -s /home/maoe/src",
"issued": 1501041549,
"executed": 1501041549,
"duration": 1.674895,
"status": 0,
"output": "55513524\t/home/maoe/src\n",
"handlers": [
"foo"
],
"user": "maoe"
}
Use the --shell
option if you want to use shell functions:
% sensu-run --name check-home-src-size --handler foo --dry-run --shell -- "cd $HOME/src; du -s ." | jq .
{
"name": "check-home-src-size",
"command": "cd /home/maoe/src; du -s .",
"issued": 1501041568,
"executed": 1501041568,
"duration": 1.224157,
"status": 0,
"output": "55513524\t.\n",
"handlers": [
"foo"
],
"user": "maoe"
}
Without the --dry-run
option, sensu-run
sends the output to localhost:PORT, which is expected to be listened by sensu-client
.
sensu-run
sets the status field depending on the command exit code and timeout:
command exit code |
status field |
0 |
0 (OK) |
non-zero |
2 (CRITICAL) |
command timed out |
3 (UNKNOWN) |
Sensu API
sensu-run
supports posting check results via Sensu API as well. Use --server
option to specify Sensu server addresses. If multiple servers are specified, sensu-run
tries them one by one until it succeeds.
sensu-run --name check-true --handler foo --server sensu1.example.com --server sensu2.example.com --dry-run -- du -s $HOME/src