a simple plug-in based monitoring system
I can't really participate in your hackathon, but I rushed to get something working and put it out there. THere's still a lot more work necessary and I really want to create a community around this. Please take a look at the open issues to get a sense of where things are heading.
Graphite does a good job storing and presenting time series data. But I've yet to find satisfactory solution to the problem of gathering hardware, operating system and application data to feed Graphite. Collectd comes closest, but using C is uncessary overkill (these days) and more importantly creates a unecessary barrier to plugin development.
Contributions in the form of code, plugins, documentation, spreading the word, high fives are all encouraged. Specifically I could use help creating startup scripts, packaging manifests for different platforms etc.
Plugins are just regular Node.js libraries/modules that conform to a certain convention to make them pluggable. They can be hosted on github and installed with NPM. Use your favourite configuration management system to install/deploy them. Configuration goes at the top of the plugin's index.js and should easily be templatable. They're expected to 'play nice' by not blocking the event loop, not overwhelming the system with events, and not tax the system's resources unecessarily. Some available plugins include cpu usage, filesystem size/usage, memcached stats gathering.
Install Graphite, edit the config in ./bin/nervous file, if you don't have graphite then change system_type to 'stdout' instead.
cd plugins npm install ../example_plugins/* cd ../ ./bin/nervous
Note this is under construction. Soon there will be make install support. I'm considering including optional support for forever.
under construction. My current plan is to use a namespace convention for the NPM repostiory. Something like nervous_plugin_foo. Suggestions welcome.
Examples under construction. Please take a look the following examples and follow the conventions you see there. Please include all module dependencies with your plugins. The idea is to make it incredibly simple to install and configure plugins.
Check out the test.js script inside the plugins directory. It takes a plugin name as a argument and then loads the plugin just like nervous would, only data just gets printed to stdout.
I will be creating a google group soon.
I will be creating a channel soon.