GraphIT ?
=========

GraphIT is a really simple monitoring solution. Unlike other
solutions like Cacti, GraphIT is very quick to setup, and very easy
to use. On the other side, GraphIT is not designed for large monitoring
task, and it targets geek who want to monitor their server in a simple
way.

GraphIT is client/server based, uses SQLite as database backend and
HTTP as transport protocol. It use REST (Representational State 
Transfer) principle to exchange data between agents and server, and
server and frontend. All data are formated in JSON format.

Agent is a simple HTTP client that support POST request. A Python
library is provided to facilitate agents creation in Python.

Frontend is a simple web page with JavaScript that queries GraphIT
server with Ajax. Charts are rendered with flot JS library.

Setup
=====

Installation
------------

The installation is *really* simple, you just have to type that
command (after installing setuptools package on your distro):

``easy_install graphit``

Configuration
-------------

Configuration is exclusively made with help of ``graphitd`` command
parameters. Type ``graphitd --help`` to have a list of available
parameters.

GraphITize installation
-----------------------

GraphITize is the JavaScript/HTML frontend of GraphIT. Download from
http://idevelop.org/p/graphit/downloads/ 
the latests version of GraphITize. Uncompress it on your web server.

Rely on provided index.html to understand how GraphITize work (it's so
simple !!).

You can host GraphITize on other server than GraphIT, and even run it
on your desktop, without web server.

GraphIT implement ``JSONP`` and ``OPTIONS`` http method for Ajax Cross domain.
JSONP is used by default because OPTIONS http method is only implemented
on recent Firefox and Webkit versions. To use this latter, remove the 
"callback" parameter in your URL when you call ``graphitize()``.

Agent creation
==============

Agent Python library is installed with server package 
(see Setup/`Installation`_). To use it, you have to import 
``GraphItAgent`` in ``graphit.client`` :

>>> from graphit.client import GraphItAgent

Then, you have just to instanciate it :

>>> agent = GraphItAgent('http://my-graphit-server/', login='graphit', passwd='secret')

Finally, to submit monitoring data use add_value method :

>>> agent.add_value(set='df', feed='sda', value=42, unit='%')
n
It's that easy!

Changelog
=========

0.4:

 - Graphid database now use index on it database. That really improve 
   response time on query... The modification only concerns new database 
   creation, so, to create index on old database : ``sqlite3 <path to 
   database> "CREATE INDEX "main"."idx" ON "monitdata" ("date" DESC, 
   "set" ASC, "feed" ASC)"`` Thanks to Thibault VINCENT for idea.
  
