npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nervous

v0.2.0

Published

a simple plug-in based monitoring system

Downloads

5

Readme

Nervous - Monitoring doesn't have to suck.

Note to #monitoringsucks people

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.

Manifesto:

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.

"Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices."

The ease with which plugins can be written in Node.js JavaScript is also advantage. For these reasons I feel that Node.js is perfectly suited for writing a pluggable monitoring system. Nervous is the embodiment of these beliefs, it is a simple plugin based monitoring system with support for sending data to Graphite (or Response). It follows the 'convention over configuration' and 'keep it simple shithead' ethea.

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.

About Plugins:

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.

Plugins get loaded during startup. Inside the plugin you define how data gets retrieved. This is accomplished by using the 'setInterval' javascript function or an evented subscription.

Quick Start:

  1. Install Graphite, edit the config in ./bin/nervous file, if you don't have graphite then change system_type to 'stdout' instead.

  2. 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.

Where to find plugins:

under construction. My current plan is to use a namespace convention for the NPM repostiory. Something like nervous_plugin_foo. Suggestions welcome.

How to write plugins:

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.

How to test 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.

Mailing List:

I will be creating a google group soon.

IRC:

I will be creating a channel soon.