Welcome to Sensu
Sensu is a monitoring system framework, handling the remote execution of checks.
Checks can utilize user created plugins, returning an exit status code and outputting to STDOUT.
Check results are handled by user created handlers.
Sensu is released under the MIT license.
Keep it simple.
Readme Driven Development
A Client Will
- Have a set of attributes to describe it, including its responsibilities
- Send keep-alives to a server
- Subscribe to a set of queues bound to a set of fanout exchanges, determined by its responsibilities
- Substitute tokens in check commands with their matching client attribute
- Receive checks from subscriptions, execute them, and publish the results to a queue with its client name
- Not allow overlapping check executions of the same name
- Report when it is unaware of a check it received from a subscription
A Server Will
- Subscribe to a queue for check scheduling, another for check results
- Populate the check scheduling queue using a JSON config file
- Pull a check from the check scheduling queue and push it onto its associated fanout exchanges
- Pull check results, storing the latest events for clients, a good result will flush a previous event for that client
- Create an event when it stops receiving keep-alives from a client, a new keep-alive for the client will clear the event
- Trigger a event handler, determined by the type of the check that produced the event, providing it with a JSON event file
An API Will
- List all current events
- List all clients and their attributes
- Show a client and its attributes
- Remove a client and resolve associated events
A Plugin Will
- Output to STDOUT
- Return a valid exit status code
A Handler Will
- Accept a command line argument “-f”, for an event file path
- Parse the JSON event file
- Handle the event as it wishes
- RabbitMQ (default configuration)
- Redis (default configuration)