Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jondot/mongomon
A Python mongodb monitor and profiler for development.
https://github.com/jondot/mongomon
mongodb perfomance profiler python
Last synced: 4 days ago
JSON representation
A Python mongodb monitor and profiler for development.
- Host: GitHub
- URL: https://github.com/jondot/mongomon
- Owner: jondot
- Created: 2019-04-12T14:07:35.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-04-14T19:05:30.000Z (over 5 years ago)
- Last Synced: 2024-09-17T04:18:18.565Z (2 months ago)
- Topics: mongodb, perfomance, profiler, python
- Language: Python
- Homepage:
- Size: 3.5 MB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![](media/cover.png)
# mongomon
A Python mongodb monitor and profiler for development.
## Quick Start
Install using pip/pipenv/etc. (we recommend [poetry](https://github.com/sdispater/poetry) for sane dependency management):
```
$ poetry add mongomon --dev
```Initialize *before* you set up your MongoDB connection:
```py
from mongomon import Monitor, Config
Monitor(Config(file_capture=".*/(wiki.*)")).monitor()
```Actually, use an environment flag to guard against activating mongomon in production (unless this is something you want):
```py
from mongomon import Monitor, Config
import osif 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
![](/media/demo.gif)We've taken the example from [Flask-PyMongo](https://flask-pymongo.readthedocs.io/en/latest/) to show how easy it is to have mongomon integrated and running.
You can [look at the integration here](examples/wiki). To run it:
```
$ poetry shell
$ cd examples/wiki && pip install -r requirements
$ python wiki.py
```## Configuration
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):
```py
# cleans up stack trace with uninteresting things. Usually packages, standard library, etc.
ignores = attrib(
default=[
".*/site-packages/.*",
".*traceback.format_stack.*",
r".*/lib/python\d\.\d+/.*",
]
)
# 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)
```### Thanks:
To all [Contributors](https://github.com/jondot/mongomon/graphs/contributors) - you make this happen, thanks!
# Copyright
Copyright (c) 2019 [@jondot](http://twitter.com/jondot). See [LICENSE](LICENSE.txt) for further details.