Skip to content
A Python mongodb monitor and profiler for development.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


A Python mongodb monitor and profiler for development.

Quick Start

Install using pip/pipenv/etc. (we recommend poetry for sane dependency management):

$ poetry add mongomon --dev

Initialize before you set up your MongoDB connection:

from mongomon import Monitor, Config

Actually, use an environment flag to guard against activating mongomon in production (unless this is something you want):

from mongomon import Monitor, Config
import os

if os.getenv("MGMON"):
    Monitor(Config(file_capture=".*/(wiki.*)", low_watermark_us=0)).monitor()

Use file_capture to specify how to extract relevant project file paths from traces, rather than absolute file paths.

Exploring the Example

We've taken the example from Flask-PyMongo to show how easy it is to have mongomon integrated and running.

You can look at the integration here. To run it:

$ poetry shell
$ cd examples/wiki && pip install -r requirements
$ python


Your main configuration points for mongomon are:

  • file_capture - an aesthetic configuration point for capturing files for your project. Usually of the form .*/(your-project.*), content in parenthesis are a regular expression capture group, and is what we actually extract.
  • low_watermark_us - a threshold in microseconds (us) above which mongomon starts working (yellow).
  • high_watermark_us - a high threshold in microseconds (us) above which mongomon displays timing as alert (red).

Rest of configuration looks like so (with their defaults and comments):

    # cleans up stack trace with uninteresting things. Usually packages, standard library, etc.
    ignores = attrib(
    # shows a file, cleans up absolute path to a file
    file_capture = attrib(default="(.*)")
    # above this value mongomon starts working
    low_watermark_us = attrib(default=5000)
    # above this value mongomon flags as alert
    high_watermark_us = attrib(default=40000)
    # customize how mongodb query looks like before printing to screen
    query_filter = attrib(default=identity)
    # want to print to something else? replace this
    print_fn = attrib(default=print_)
    # want shorter stack traces? customize this
    stack_preprocess = attrib(default=trim_last)


To all Contributors - you make this happen, thanks!


Copyright (c) 2019 @jondot. See LICENSE for further details.

You can’t perform that action at this time.