= Statistics overview =

Result of 26 Jan 2010 evening discussion,
statistics overview was almost fixed.

Statsd listens msgq "statistics" channel, gathers statistics
from each BIND 10 components and dump them into a XML file periodically.

= Statsd current status =

Statsd can run with msgq.
Statsd is not controlled by BoB.
Statsd does not read configuration from cfgd.
File path, dump frequency, rotate generations are fixed.
Statsd dumps to "/tmp/stats" every 10 seconds except no statistics received.
"/tmp/stats" are preserved 100 generations.

Current implementation is put on "bind10/branches/parkinglot/src/bin/stats/".

= statistics channel Message format =

The Statsd accepts python dictionary format data from msgq
"statistics" channel.

The data need to contain "components", "version", "timestamp", "stats" keys.

The statistics data format is { "component" : "<component_name>",
"version": "<version number>", "timestamp": "<unixtime>", "stats":
<python dictionary format statistics>}.

"stats" data may be nested.
"stats" data is defined by each component.

Each component sends statistics data to "statistics" group periodically
without joining the group.

See a example component: "stats/test/test-agent.py".

= How to publish statistics from each component =

For example, parkinglot auth server has one "counter".
Then, parkinglot's statistics message may be
 { "component":"parkinglot", "version":1, "timestamp":unixtime,
   stats: { "counter": counter } }.
Send it to msgq "statistics" channel periodically
(For example, every 10 second).

Then "Statsd" will write it to the statistics file periodically.

= TODO =

- statsd.spec
- read configuration from cfgd.
- how to publish statistics data
- controlled by BoB
