metrics for python
Python
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
pymetrics
tests
.gitignore
README.md
setup.py

README.md

PyMetrics

Redis backed metrics library - implements the most of the famous Metrics library.

Classes

RetricsGauge(BaseMetrics) - Single value gauge
RetricsCounter(BaseMetrics) - Simple counter with incr and decr methods
RetricsMeter(BaseMetrics) - Time series data, with 1, 5 and 15 minutes avg
RetricsHistogram(BaseMetrics) - Histogram with percentile, mean, median and std deviation methods 
RetricsTimer(BaseMetrics) - Timer (wallclock)

The main class to loof after is RetricsFactory - Metrics factory 

Hierarchy

Basically we register an application and its metrics instances in the following order:
    Application -> Metrics -> Instances of metrics

The important thing to monitor is that each metric will have an internal name based on the application + metric name + pid.
By looking at the way the name is composed it's easy to interchange data between processes.

Examples:

from pymetrics import RetricsFactory

rf = RetricsFactory('application_name')                                                       
c = rf.new_counter('requests')                                              
c.incr()                                                                    
c.decr()

To list all instances for a given metric:

rf.list_instances_per_metric('gauge') 

rf.unregister_instance(c)

Unregister metrics instances is not mandatory as each new metric will not use the same internal name.

For more examples, check the tests/ directory    
Use python -m unittest discover tests/unit to run all tests

TODO

Should use riemann optionally
Should integrate with dashify 
Should be ported to ruby