Sysmon

From Phospher
Jump to: navigation, search

Introduction

Sysmon (Systems Monitor) started off as a desire I had to see the current status of servers I host out of my garage. Sysmon quickly turned into something much more than an ICMP monitor. I wanted the ability to navigate to a website and quickly determine the health of my hosts. Sysmon uses 'colors' to depict system status. Green=good, Yellow=warning and Red=uh-oh. If you're color-blind, show an interest and I'll add text warnings.

The majority of sysmon is written in PHP using an sqlite3 database. All ./admin_tools/* scirpts are written in shell (BASH).


See the latest changes and updates!


Requirements

  • Supported browsers notes:
    • Google Chrome 100% (recommended) (Tested on Linux, Android and Windows) >= 8.0
    • Konqueror 100% (Tested on Linux/KDE 4.5.5, older versions may work).
    • Firefox 100% (Tested on Linux and Windows, < 4.0 expands hover data to main screen, really messed up). >= 4.0
    • Internet Explorer 100% (6 and 7 work, but they don't display the hover windows). >= 8.0
    • Safari 100% (Tested on Windows 5.0.4, older versions may work).
    • Opera 11.00 (Tested on Linux and Windows, works, but does not display the hover windows. Hopefully future releases will work).
    • Opera 11.61 100% (Tested on Linux, works perfectly) >= 11.61



Sysmon server requires:

  • Linux (mine is running on CentOS 6.2 i386 and CentOS 5.1 x86_64, it should run on any OS that supports these services.)
  • Apache
  • PHP
  • PHP-PDO module
  • SQLite3



Sysmon client requires:

  • Linux (I don't have a need for any other OS, if interest is shown, I will consider porting the client to multiple platforms)
  • bc
  • bash
  • curl
  • sed
  • grep
  • netstat (in net-tools package)
  • ifconfig (in net-tools package)
  • cut
  • mpstat (in sysstat package)



Sysmon currently watches:


  • The Host icon will turn colors if the host hasn't checked in within 120 or 300 seconds.
    • < 120 seconds(green), >= 120 seconds(yellow) and >= 300 seconds(red)


  • Memory utilization (total, used, free)
    • < 75%(green), >= 75%(yellow) and >= 95%(red)


  • CPU (model, core count, clock speed, load percentage)
    • < 75%(green), >= 75%(yellow) and >= 95%(red)


  • Storage (total, used, free)
    • < 75%(green), >= 75%(yellow) and >= 95%(red) (per volume)


  • Services (running or not)
    • exit 0 (green) and exit 1 (red)



A monitor will turn blue if sysmon is waiting for a client push.

Screenshots

Sysmon's front page
Hovering over the host icon
Hovering over the hostname
Hovering over memory
Hovering over CPU
Hovering over a disk
Hovering over services
New host added
Pending service feed from client
Global alert


Live System

You can view my live sysmon installation here.
You can download the sysmon server package from here.

ToDo

  • Polish/create an admin web interface
  • Polish scripts under admin_tools/
  • Create auto-updater script which can be run in cron that will download sysmon binaries from my servers
  • Create email notifier daemon
  • Roles?


Project Updates and Changes

3-25-2012
I've made a few enhancements to Sysmon. The following is a list of newly added features and changes.

  • Added a global alerting element to the main page. Sysmon will now flag a system with any alert of any level in the upper left corner of the page.
  • Stopped all development on SQLite and moved to MySQL. The lack of multiple concurrent writes to the database was preventing me from adding desired features.
  • Added a TIMESTAMP object to the database. This allows MySQL to keep track of each hosts 'lastupdate'(s) column based on the time from the DBMS rather than the time from the host object.


  • Adding ESXi 5.x client support for monitoring ESXi servers and cluster nodes. ETA is a few months from now. I still need to get a vMA online.


  • BUG: Corrected a bug relating to false status updates for each host element.

License


Sysmon is licensed under the GPLv2 (GNU Public License version 2).