Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Sensu, a monitoring framework that aims to be simple, malleable, and scalable. Publish/subscribe model.

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 dist
Octocat-spinner-32 lib
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 MIT-LICENSE.txt
Octocat-spinner-32 README.org
Octocat-spinner-32 Rakefile
Octocat-spinner-32 sensu.gemspec
README.org

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.

License

Sensu is released under the MIT license.

Contributing

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

Testing

Requirements

  • RabbitMQ (default configuration)
  • Redis (default configuration)

MiniTest

rake test
Something went wrong with that request. Please try again.