Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

kwikemon

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

kwikemon

monitor one-off things on your servers

  • 0.0.6
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

kwik-e-mon

Monitor one-off tasks on your servers using Redis.

Installation

npm install -g kwikemon

Usage

$ kwikemond &
$ curl -s localhost/nginx_status | grep Active | kwikemon write nginx-connections
$ curl localhost:1111/nignx-connections
Active connections: 316
$ kwikemon set foo bar
$ curl localhost:1111/
foo: bar
nginx-connections: Active connections: 316

Here's how it works:

  • call kwikemon set thing status to set the text for the monitor named "thing"
  • fire up the server, kwikemond, that serves up these monitors in a big list or individually

Alternatively:

  • continuously pipe data to kwikemon write <name of thing you are watching> on stdin
  • every time a full line of text is received on stdin it becomes the new status for

To see everything kwikemon can do run kwikemon help.

$ kwikemon help

This is very much a work in progress.

API

You can use kwikemon as a library.

var kwikemon = require('kiwkemon');

kwikemon.set('foo', 'bar', function(err) {
  kwikemon.get('foo', function(err, text) {
    console.log('foo = ' + text);
  });
});

kwikemon.getAll(function(err, monitors) {
  Object.keys(monitors).forEach(function (name) {
    console.log(name + ' = ' + monitors[name]);
  });
});

Monitors expire 1 day after the last time they were set by default. You can pass in any ttl you want though.

// never expire
kwikemon.set('foo', 'bar', { ttl: 0 });

Protocol

All kwikemon does is shove things into Redis in a standard way and read them out later.

A monitor named nginx stores its data in the hash kwikemon:monitor:nginx. Hash fields are:

  • text
  • expire
  • created
  • modified
  • updates

The list of all monitors is a set stored at kwikemon:monitors.

Set
exists = redis.exists("kwikemon:monitor:nginx")
if exists:
    redis.hmset("kwikemon:monitor:nginx", {
        text: "Active connections: 583"
        modified: 1370668341943
    })
    redis.hincrby("kwikemon:monitor:nginx", "updates", 1)
else:
    redis.hmset("kwikemon:monitor:nginx", {
        text: "Active connections: 316"
        updates: 1
        created: 1370668301943
        modified: 1370668301943
    })
redis.sadd("kwikemon:monitors", "nginx")
# optional
redis.expire("kwikemon:monitor:nginx", <ttl>)
Get
redis.hgetall("kwikemon:monitor:nginx")
Remove
redis.del("kwikemon:monitor:nginx")
redis.srem("kwikemon:monitors", "nginx")
Sweep

Clean out expired monitors. Call this before anything that relies on counting or iterating through all monitors.

for name in redis.smembers("kwikemon:monitors"):
    if not redis.exists("kwikemon:monitor:$name"):
        remove(name)
Count

Sweep before running a count.

sweep()
redis.scard("kwikemon:monitors")
List names

Sweep before listing.

sweep()
redis.smembers("kwikemon:monitors")
Get all

Sweep before geting all.

sweep()
monitors = {}
for name in list():
    if redis.exists("kwikemon:monitor:$name"):
        monitors[name] = get(name)
return monitors

License

Copyright 2013 Sami Samhuri sami@samhuri.net

MIT license

Keywords

FAQs

Package last updated on 25 Aug 2013

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc