Chapter 1. Introduction

Table of Contents

What is State?

So there you are. Everything has been running just fine all day. You're sort of nervous too because the phone has yet to ring for six hours. So the clock strikes five and you get your stuff and head for the door, already dreaming of that cold beer that's waiting for you. You swing open your office door and there's three or four people standing around outside. At the same time, three of them make it desperately clear they've been unable to check their mail for hours. Yes, something's broken, there will be no prime rib for you.

System Administartion is a very complex. A network has many individual pieces, ranging from printers to expensive routers. Many of the various systems rely on others to operate. Part of the art of administering a large network is being aware of what's going on and why. If something's broken now, then you need to know. Few things are as satisfying as knowing why the phone is ringing beforehand. On the other hand, it's frustrating to learn that something's been wrong for an hour when you've been playing video games since noon.

What is State?

State is a tool for monitoring the status of a networks connectivity, services, resources, and other general health related properties. You, as the System Administrator, tell State all you'd like about your network and its internals and State will keep an eye on things so you can descend deeper into laziness and maintain a higher BAC during business hours. So here are some features of State, just in case the boss asks and so I can justify my many hours of work:

  • Modular design, much like Apache. All functionality is implemented in extension modules that are loaded into the main State application. You can add and remove functionality by adding and removing these modules. This also allows for easier maintainence, security, debugging, and extension.

  • State uses standard protocols such as HTTP and storage methods such as SQL databases and XML. Yeah, who cares, I know. This is nice though, trust me. This means everything is easy to read and undestand. There are no learning curves as you learn the protocols or formats, you can just jump on in.

  • A large number of already written modules for checking many standard network health properties. State can check all of the most popular services out of the box, as well as disk space and other non-simple statistics.

  • Easily configurable alarms and warnings so that administators are informed when the health of their network changes. Notifications can be dispatched over e-mail at configurable intervals. They may also be escalated to other notification types if they go unresolved for a certain period of time.

  • Statistics gathering and plotting through the integration with the infamous rrdtool. Any number that comes in through the State's monitoring of the network may be placed into an RRD database and examined later.

  • A flexible API and layer upon which to build and extend the monitoring system far into the future.

  • New checks and statistics gathering scripts can be written in your language of choice and executed through State, just like simple CGI for the web.

  • Really slick graphing of nearly anything State is obvserving or handling that may pass through the system. Graphing is done using RRDtool as its backend. Anyone can flexibly define which State values are stored in which databases using a flexible database template definition.

State borrows many concepts from other, similar solutions such as Big Brother or Nagios. It's up to you the solution you choose. State's goal is to be the best piece of software State can be.