/monitor

Real(ish) time SNMP monitoring via websockets

Primary LanguageCSS

Monitoring

A small 'realtime' (not really, because we're still polling every x seconds) SNMP monitoring system, which currently supports display of load average, memory usage and CPU utilisation.

It uses RabbitMQ as a messaging middleware and topic routing, permitting poller nodes to be placed in private network segments. This also permits separate monitor.js instances to subscribe to different routing keys, allowing servers to be grouped.

There's a load things to add/fix, but it's worked well in helping quickly spot load, CPU and memory spikes so far.

Dependencies

  • RabbitMQ server

  • node.js / npm

  • The following Python libraries:

    • pika
    • pysnmp

Setup

  • If you don't have it, get npm and install the node.js dependancies

    • npm install express amqp ejs websocket-server
  • For installing the Python pages, use pip (or easy_install)

    • pip install pika pysnmp

Turning things on

  • Start RabbitMQ

    • rabbitmq-server
  • Then the node.js AMQP client/web(socket) server (I'm assuming you have nodemon)

    • nodemon monitor.js
  • Finally

    • python poller/poller.py
  • By default, node.js will start a webserver on your loopback interface (localhost) and port 3000, so go and visit that.