skip to navigation
skip to content

Not Logged In

mmstats 0.8.0

Stat, metric, and diagnostic publishing and consuming tools

`Documentation <http: mmstats.readthedocs.org=""/>`_ |
`Package <http: pypi.python.org="" pypi="" mmstats="">`_ |
`Code <http: github.com="" schmichael="" mmstats=""/>`_

.. image:: https://secure.travis-ci.org/schmichael/mmstats.png?branch=master
:target: http://travis-ci.org/schmichael/mmstats/


About
=====

Mmstats is a way to expose and read diagnostic values and metrics for
applications.

Think of mmstats as /proc for your application and the readers as procps
utilities.

This project is a Python implementation, but compatible implementations can be
made in any language (see Goals).

Discuss at https://groups.google.com/group/python-introspection

Goals
-----

* Separate publishing/writing from consuming/reading tools
* Platform/language independent (a Java writer can be read by a Python tool)
* Predictable performance impact for writers via:

* No locks (1 writer per thread)
* No syscalls (after instantiation)
* All in userspace
* Reading has no impact on writers

* Optional persistent (writer can sync anytime)
* 1-way (Publish/consume only; mmstats are not management extensions)

Usage
=====

Requirements
------------

CPython 2.6 or 2.7 (Windows is untested)

PyPy (only tested in 1.7, should be faster in 1.8)

Using
-----

1. ``easy_install mmstats`` or ``pip install mmstats`` or if you've downloaded
the source: ``python setup.py install``
2. Then in your Python project create a sublcass of mmstats.MmStats like

.. code-block:: python

import mmstats

class WebStats(mmstats.MmStats):
status2xx = mmstats.CounterField(label='status.2XX')
status3xx = mmstats.CounterField(label='status.3XX')
status4xx = mmstats.CounterField(label='status.4XX')
status5xx = mmstats.CounterField(label='status.5XX')
last_hit = mmstats.DoubleField(label='timers.last_hit')

3. Instantiate it once per process: (instances are automatically thread local)

.. code-block:: python

webstats = WebStats(label_prefix='web.stats.')

4. Record some data:

.. code-block:: python

if response.status_code == 200:
webstats.status2xx.inc()

webstats.last_hit = time.time()

5. Run ``slurpstats`` to read it
6. Run ``mmash`` to create a web interface for stats
7. Run ``pollstats -p web.stats.status 2XX,3XX,4XX,5XX /tmp/mmstats-*`` for a
vmstat/dstat like view.
8. Did a process die unexpectedly and leave around a stale mmstat file?
``cleanstats /path/to/mmstat/files`` will check to see which files are stale
and remove them.


.. include:: CHANGES.rst
:end-before: 0.5.0  
File Type Py Version Uploaded on Size
mmstats-0.8.0.tar.gz (md5) Source 2013-04-25 102KB
  • Downloads (All Versions):
  • 3 downloads in the last day
  • 214 downloads in the last week
  • 1015 downloads in the last month