Automatically monitor the evolving performance of Flask/Python web services.

Overview


Flask Monitoring Dashboard

A dashboard for automatic monitoring of Flask web-services.

Build Status Documentation Status codecov PyPI version Py-version Downloads Tweet

Key FeaturesHow to useLive DemoFeedbackDocumentationScreenshotsLicense

gif

Key Features

The Flask Monitoring Dashboard is an extension for Flask applications that offers four main functionalities with little effort from the Flask developer:

  • Monitor the performance and utilization: The Dashboard allows you to see which endpoints process a lot of requests and how fast. Additionally, it provides information about the evolving performance of an endpoint throughout different versions if you're using git.

  • Profile requests and endpoints: The execution path of every request is tracked and stored into the database. This allows you to gain insight over which functions in your code take the most time to execute. Since all requests for an endpoint are also merged together, the Dashboard provides an overview of which functions are used in which endpoint.

  • Collect extra information about outliers: Outliers are requests that take much longer to process than regular requests. The Dashboard automatically detects that a request is an outlier and stores extra information about it (stack trace, request values, Request headers, Request environment).

  • Collect additional information about your Flask-application: Suppose you have an User-table and you want to know how many users are registered on your Flask-application. Then, you can run the following query: 'SELECT Count(*) FROM USERS;'. But this is just annoying to do regularly. Therefore, you can configure this in the Flask-MonitoringDashboard, which will provide you this information per day (or other time interval).

The dashboard is automatically added to your existing Flask application. You can view the results by default using the default endpoint (this can be configured to another route):

/dashboard

For more advanced documentation, take a look at the information on this site.

How to use

Installation

To install from source, download the source code, then run this:

python setup.py install

Or install with pip:

pip install flask_monitoringdashboard

Setup

Adding the extension to your Flask app is simple:

from flask import Flask
import flask_monitoringdashboard as dashboard

app = Flask(__name__)
dashboard.bind(app)

Live Demo

To view a live deployment of the Flask-MonitoringDashboard, check this site. Use the credentials u:admin, p:admin to log in.

Feedback

In order to improve our Flask-MonitoringDashboard, we would like to hear from you! Therefore, we made a questionnaire with a few questions. Filling in this form takes less than 3 minutes. You can find the form here.

Alternatively, feel free to write to our email-address.

Documentation

For more advanced documentation, see this site. If you run into trouble migrating from version 1.X.X to version 2.0.0, this site will help you solve this too.

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5

Development

If you like our project, and willing to contribute, you can get started by cloning it and then running the following command:

. ./config/install.sh

For more information, check this page.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Comments
  • exception in outlier.py

    exception in outlier.py

    [Mon Mar 05 12:19:53.260897 2018] [wsgi:error] [pid 7790:tid 140474868172544] Exception occurred:
    [Mon Mar 05 12:19:53.263324 2018] [wsgi:error] [pid 7790:tid 140474868172544] Traceback (most recent call last):
    [Mon Mar 05 12:19:53.263386 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/site-packages/flask_monitoring_dashboard-1.9-py3.6.egg/dashboard/outlier.py", line 40, in log_stack_trace
    [Mon Mar 05 12:19:53.263397 2018] [wsgi:error] [pid 7790:tid 140474868172544]     stack_list.extend(['', str(th)])
    [Mon Mar 05 12:19:53.263415 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 819, in __repr__
    [Mon Mar 05 12:19:53.263424 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self.is_alive() # easy way to get ._is_stopped set when appropriate
    [Mon Mar 05 12:19:53.263446 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1115, in is_alive
    [Mon Mar 05 12:19:53.264237 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self._wait_for_tstate_lock(False)
    [Mon Mar 05 12:19:53.264462 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1071, in _wait_for_tstate_lock
    [Mon Mar 05 12:19:53.264471 2018] [wsgi:error] [pid 7790:tid 140474868172544]     assert self._is_stopped
    [Mon Mar 05 12:19:53.264502 2018] [wsgi:error] [pid 7790:tid 140474868172544] AssertionError
    [Mon Mar 05 12:19:53.264656 2018] [wsgi:error] [pid 7790:tid 140474868172544] Exception occurred:
    [Mon Mar 05 12:19:53.264769 2018] [wsgi:error] [pid 7790:tid 140474868172544] Traceback (most recent call last):
    [Mon Mar 05 12:19:53.264818 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/site-packages/flask_monitoring_dashboard-1.9-py3.6.egg/dashboard/outlier.py", line 40, in log_stack_trace
    [Mon Mar 05 12:19:53.265607 2018] [wsgi:error] [pid 7790:tid 140474868172544]     stack_list.extend(['', str(th)])
    [Mon Mar 05 12:19:53.265629 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 819, in __repr__
    [Mon Mar 05 12:19:53.265638 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self.is_alive() # easy way to get ._is_stopped set when appropriate
    [Mon Mar 05 12:19:53.265654 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1115, in is_alive
    [Mon Mar 05 12:19:53.265662 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self._wait_for_tstate_lock(False)
    [Mon Mar 05 12:19:53.265678 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1071, in _wait_for_tstate_lock
    [Mon Mar 05 12:19:53.265686 2018] [wsgi:error] [pid 7790:tid 140474868172544]     assert self._is_stopped
    [Mon Mar 05 12:19:53.265711 2018] [wsgi:error] [pid 7790:tid 140474868172544] AssertionError
    [Mon Mar 05 12:19:53.265832 2018] [wsgi:error] [pid 7790:tid 140474868172544] Exception occurred:
    [Mon Mar 05 12:19:53.265932 2018] [wsgi:error] [pid 7790:tid 140474868172544] Traceback (most recent call last):
    [Mon Mar 05 12:19:53.265990 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/site-packages/flask_monitoring_dashboard-1.9-py3.6.egg/dashboard/outlier.py", line 40, in log_stack_trace
    [Mon Mar 05 12:19:53.265999 2018] [wsgi:error] [pid 7790:tid 140474868172544]     stack_list.extend(['', str(th)])
    [Mon Mar 05 12:19:53.266016 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 819, in __repr__
    [Mon Mar 05 12:19:53.266024 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self.is_alive() # easy way to get ._is_stopped set when appropriate
    [Mon Mar 05 12:19:53.266040 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1115, in is_alive
    [Mon Mar 05 12:19:53.266048 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self._wait_for_tstate_lock(False)
    [Mon Mar 05 12:19:53.266063 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1071, in _wait_for_tstate_lock
    [Mon Mar 05 12:19:53.266071 2018] [wsgi:error] [pid 7790:tid 140474868172544]     assert self._is_stopped
    [Mon Mar 05 12:19:53.266095 2018] [wsgi:error] [pid 7790:tid 140474868172544] AssertionError
    [Mon Mar 05 12:19:53.266213 2018] [wsgi:error] [pid 7790:tid 140474868172544] Exception occurred:
    [Mon Mar 05 12:19:53.266313 2018] [wsgi:error] [pid 7790:tid 140474868172544] Traceback (most recent call last):
    [Mon Mar 05 12:19:53.266361 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/site-packages/flask_monitoring_dashboard-1.9-py3.6.egg/dashboard/outlier.py", line 40, in log_stack_trace
    [Mon Mar 05 12:19:53.266370 2018] [wsgi:error] [pid 7790:tid 140474868172544]     stack_list.extend(['', str(th)])
    [Mon Mar 05 12:19:53.266386 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 819, in __repr__
    [Mon Mar 05 12:19:53.266394 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self.is_alive() # easy way to get ._is_stopped set when appropriate
    [Mon Mar 05 12:19:53.266410 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1115, in is_alive
    [Mon Mar 05 12:19:53.266418 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self._wait_for_tstate_lock(False)
    [Mon Mar 05 12:19:53.266434 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1071, in _wait_for_tstate_lock
    [Mon Mar 05 12:19:53.266442 2018] [wsgi:error] [pid 7790:tid 140474868172544]     assert self._is_stopped
    [Mon Mar 05 12:19:53.266466 2018] [wsgi:error] [pid 7790:tid 140474868172544] AssertionError
    [Mon Mar 05 12:19:53.266584 2018] [wsgi:error] [pid 7790:tid 140474868172544] Exception occurred:
    [Mon Mar 05 12:19:53.266684 2018] [wsgi:error] [pid 7790:tid 140474868172544] Traceback (most recent call last):
    [Mon Mar 05 12:19:53.266730 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/site-packages/flask_monitoring_dashboard-1.9-py3.6.egg/dashboard/outlier.py", line 40, in log_stack_trace
    [Mon Mar 05 12:19:53.266739 2018] [wsgi:error] [pid 7790:tid 140474868172544]     stack_list.extend(['', str(th)])
    [Mon Mar 05 12:19:53.266756 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 819, in __repr__
    [Mon Mar 05 12:19:53.266764 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self.is_alive() # easy way to get ._is_stopped set when appropriate
    [Mon Mar 05 12:19:53.266780 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1115, in is_alive
    [Mon Mar 05 12:19:53.266788 2018] [wsgi:error] [pid 7790:tid 140474868172544]     self._wait_for_tstate_lock(False)
    [Mon Mar 05 12:19:53.266804 2018] [wsgi:error] [pid 7790:tid 140474868172544]   File "/usr/local/lib/python3.6/threading.py", line 1071, in _wait_for_tstate_lock
    [Mon Mar 05 12:19:53.266812 2018] [wsgi:error] [pid 7790:tid 140474868172544]     assert self._is_stopped
    [Mon Mar 05 12:19:53.266843 2018] [wsgi:error] [pid 7790:tid 140474868172544] AssertionError
    
    
    opened by mircealungu 12
  • Request param logs

    Request param logs

    If enable_param_logging enabled(set True) in config, for monitoring level 3, request arguments and payload would be available at indent 2 in profiler.

    This also includes the sort anchor tags on pagination for profiler.

    Note: This is to be merged after my previous PR, that includes sorting.

    opened by jangster3794 10
  • Mongodb support

    Mongodb support

    Hello, I really enjoy this lib and this tool and I would like to be able to use it with MongoDB as it is too much for me to have two databases technology. Let me know!

    opened by Amedeo91 9
  • Tracking of status codes.

    Tracking of status codes.

    Hi :)

    Here's my (draft) implementation for tracking status codes.

    1. Request has an extra field status_code.
    2. The status code is determined by looking at the return value of fun() in measurement.py.
    3. On the endpoint page it shows the distribution of the status code:
    Screenshot 2019-06-02 at 23 41 47 4. On the overview page it shows the number of requests that returned a 4xx or 5xx error: Screenshot 2019-06-02 at 23 43 15

    It's a draft because I have a few things that I need some help on:

    1. The status code distribution page is on /dashboard/endpoint/1/status_code_distribution. How do I retrieve the value 1? On other pages I saw it was done with endpointService.info.id but this value is 0 for me. Right now I temporarily solved it with a regex... :))

    2. How do I make the menu to the left stay expanded on the status code page?

    Screenshot 2019-06-02 at 23 48 28
    1. How would this work with migrating? A change to the DB is needed to add the status_code field. Should I write a migration file? Where should it go? Are there any examples from the past?

    2. In the docs I read about the separation between data/logic/presentation layer. Let me know if I violated that :)

    Of course any other feedback is also welcome. I will process the feedback, make sure the code is well documented and then resubmit a PR!

    opened by dejagersh 9
  • Feature/micro service support

    Feature/micro service support

    Basically I wanted the ability to not need scipy or the UI stuff so I could have a lightweight package to put on microservices.

    I added a setup_micro.py that only takes what I think we need - as well as flush_cache on teardown. The requirements are also truncated.

    opened by Qblack 8
  • Modernise the frontend

    Modernise the frontend

    Hey guys,

    I was working a bit on my webpack skills and thought FMD could really make use of this. So I rewrote the frontend so it makes use of one javascript file that imports all its required files. Webpack bundles this file into 1 minified file

    Why?

    • Shortened load times. Because of tree shaking and minification the total amount of assets is now almost half of what it was.
    • No issues with order of imports.
    • Can use modern JS features without having to worry about compatibility with old browsers. Babel takes care of this.
    • Proper package management. Easy updates, no risk of installing incompatible versions of packages.
    • Sass!
    opened by dejagersh 8
  • Migrate db

    Migrate db

    Migration script for moving the database from SQLite to MySQL. In theory, it should work between any two databases supported by SQLAlchemy, but I haven't tested it.

    opened by bogdanp05 8
  • more precise structural summarization instead of NLP

    more precise structural summarization instead of NLP

    @bogdanp05 , one idea that we should think about is the following:

    • instead of summarizing stuff with NLP maybe we can take inspiration from the python profiler, which has the same task to achieve as the one we have: summarize multiple stack traces.

    the profiler, afaik, wakes up multiple times, observes the stack trace, and then it summarizes everything at the end with a view like the following one:

    images duckduckgo

    maybe we could do something similar, since after all, we also have a bunch of stack traces that we want to summarize!

    surely, the profiler estimates time spent in a given method, and we must summarize the number of times the outlier was found being in that method, while calling from the previous method, but it should be a similar thing.

    think about this, and let's discuss it the next time we meet!

    opened by mircealungu 8
  • Development

    Development

    Time for releasing version 3.1.0 to live. Short summary of the changes:

    • Added support for Python 3.8
    • Started using pytest instead of python's unittest
    • Started using Webpack for frontend packaging
    • Improved reports
    • Moved to Github Actions from Travis for CI/CD
    • Improved docstrings
    • Various bug fixes
    opened by FlyingBird95 7
  • Error when running from Docker image

    Error when running from Docker image

    I have added flask-monitoringdashboard to my flask app. It runs great on my machine until I containerize it. I have a Dockerfile that uses an alpine base image. Everything installs and builds properly - but when I run the app I get this error:

    ImportError: cannot import name 'config' from 'flask_monitoringdashboard' (/home/flask/venv/lib/python3.7/site-packages/flask_monitoringdashboard/__init__.py)
    

    Has anyone seen this before or have any ideas? I don't understand why it would be able to import only when running in the container.

    opened by ezeev 7
  • "UnicodeDecodeError" when pip install

    Describe the bug when I try to use pip install Flask-MonitoringDashboard,it happened. File "C:...\flask-monitoringdashboard\setup.py", line 11, in get_description info = readme.read() UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 1571: illegal multibyte sequence

    Command "python setup.py egg_info" failed with error code 1 in C:...\pip-install-c4devic4\Flask-MonitoringDashboard\

    To Reproduce Steps to reproduce the behavior: 1.pip install Flask-MonitoringDashboard 2. See error

    or 1.Download the source 2. Add ".encode("utf-8")" after "readme.read()" 3.See error

    Expected behavior I want to install this.

    Screenshots 123456

    Desktop (please complete the following information):

    • OS: [windows 10 professional]

    Additional context so I know it is an UnicodeDecodeError,but I cannot deal with it,thanks so much!

    opened by curiositer 7
  • Bump qs from 6.5.2 to 6.5.3 in /flask_monitoringdashboard/frontend

    Bump qs from 6.5.2 to 6.5.3 in /flask_monitoringdashboard/frontend

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /flask_monitoringdashboard/frontend

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /flask_monitoringdashboard/frontend

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump loader-utils from 1.4.0 to 1.4.2 in /flask_monitoringdashboard/frontend

    Bump loader-utils from 1.4.0 to 1.4.2 in /flask_monitoringdashboard/frontend

    Bumps loader-utils from 1.4.0 to 1.4.2.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Scipy Dependency errors on Mac M1

    Scipy Dependency errors on Mac M1

    Describe the bug Flask Monitoring dashboard(v3.1.1 >) requires scipy==1.6.1 and Mac M1 ARM has a bug which prevents scipy==1.6.1 installation. This bug has been resolved in scipy==1.7.3 onwards

    Kindly update the scipy requirements for the same to 1.7.3 and up

    opened by sd2001 2
  • Bump terser from 4.7.0 to 4.8.1 in /flask_monitoringdashboard/frontend

    Bump terser from 4.7.0 to 4.8.1 in /flask_monitoringdashboard/frontend

    Bumps terser from 4.7.0 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)

    v4.8.0

    • Support for numeric separators (million = 1_000_000) was added.
    • Assigning properties to a class is now assumed to be pure.
    • Fixed bug where yield wasn't considered a valid property key in generators.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump moment from 2.27.0 to 2.29.4 in /flask_monitoringdashboard/frontend

    Bump moment from 2.27.0 to 2.29.4 in /flask_monitoringdashboard/frontend

    Bumps moment from 2.27.0 to 2.29.4.

    Changelog

    Sourced from moment's changelog.

    2.29.4

    • Release Jul 6, 2022
      • #6015 [bugfix] Fix ReDoS in preprocessRFC2822 regex

    2.29.3 Full changelog

    • Release Apr 17, 2022
      • #5995 [bugfix] Remove const usage
      • #5990 misc: fix advisory link

    2.29.2 See full changelog

    • Release Apr 3 2022

    Address https://github.com/moment/moment/security/advisories/GHSA-8hfj-j24r-96c4

    2.29.1 See full changelog

    • Release Oct 6, 2020

    Updated deprecation message, bugfix in hi locale

    2.29.0 See full changelog

    • Release Sept 22, 2020

    New locales (es-mx, bn-bd). Minor bugfixes and locale improvements. More tests. Moment is in maintenance mode. Read more at this link: https://momentjs.com/docs/#/-project-status/

    2.28.0 See full changelog

    • Release Sept 13, 2020

    Fix bug where .format() modifies original instance, and locale updates

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
Releases(v3.0.7)
  • v3.0.7(Feb 28, 2020)

    Includes everything from v3.0.0 on

    • Added a first version of the Reporting functionality
    • Improved usability of the overview table
    • Removed profiler feature from monitoring level 2
    • Added outlier detection feature to monitoring level 3
    • Configurable profiler sampling period, with 5 ms default
    • Implemented an in-memory cache for performance improvements
    • Tracking also status codes
    • Display times as numbers to make them sortable
    • Add leading slash to blueprint paths
    • Added status codes with corresponding views
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Feb 25, 2019)

    • Frontend is now using AngularJS

    • Removed TestMonitor

    • Added Custom graphs

    • Fixed Issue #206

    • Added support for Python 3.7

    • Updated documentation

    • Updated unit tests

    • Fixed Issue #174

    • Fixed issue with profiler not going into code

    • Implemented a Sunburst visualization of the Grouped Profiler

    • Improved test coverage

    • Improved python-doc

    • Added functionality to download the outlier data

    • Dropped support for Python 3.3 and 3.4

    Source code(tar.gz)
    Source code(zip)
  • v1.13.0(May 11, 2018)

  • v1.12.0(Apr 28, 2018)

  • v1.11.0(Mar 29, 2018)

  • v1.10.3(Feb 28, 2018)

Monitor Memory usage of Python code

Memory Profiler This is a python module for monitoring memory consumption of a process as well as line-by-line analysis of memory consumption for pyth

Fabian Pedregosa 80 Nov 18, 2022
pprofile + matplotlib = Python program profiled as an awesome heatmap!

pyheat Profilers are extremely helpful tools. They help us dig deep into code, find and understand performance bottlenecks. But sometimes we just want

Vishwas B Sharma 735 Dec 27, 2022
Tracy Profiler module for the Godot Engine

GodotTracy Tracy Profiler module for the Godot Engine git clone --recurse-submodules https://github.com/Pineapple/GodotTracy.git Copy godot_tracy fold

Pineapple Works 17 Aug 23, 2022
Display machine state using Python3 with Flask.

Flask-State English | 简体中文 Flask-State is a lightweight chart plugin for displaying machine state data in your web application. Monitored Metric: CPU,

622 Dec 18, 2022
System monitor - A python-based real-time system monitoring tool

System monitor A python-based real-time system monitoring tool Screenshots Installation Run My project with these commands pip install -r requiremen

Sachit Yadav 4 Feb 11, 2022
Visual profiler for Python

vprof vprof is a Python package providing rich and interactive visualizations for various Python program characteristics such as running time and memo

Nick Volynets 3.9k Dec 19, 2022
Line-by-line profiling for Python

line_profiler and kernprof NOTICE: This is the official line_profiler repository. The most recent version of line-profiler on pypi points to this repo

OpenPyUtils 1.6k Dec 31, 2022
Output provisioning profiles in a diffable way

normalize-profile This tool reads Apple's provisioning profile files and produces reproducible output perfect for diffing. You can easily integrate th

Keith Smiley 8 Oct 18, 2022
Cross-platform lib for process and system monitoring in Python

Home Install Documentation Download Forum Blog Funding What's new Summary psutil (process and system utilities) is a cross-platform library for retrie

Giampaolo Rodola 9k Jan 02, 2023
Sampling profiler for Python programs

py-spy: Sampling profiler for Python programs py-spy is a sampling profiler for Python programs. It lets you visualize what your Python program is spe

Ben Frederickson 9.5k Jan 08, 2023
Prometheus instrumentation library for Python applications

Prometheus Python Client The official Python 2 and 3 client for Prometheus. Three Step Demo One: Install the client: pip install prometheus-client Tw

Prometheus 3.2k Jan 07, 2023
Linux/OSX/FreeBSD resource monitor

Index Documents Description Features Themes Support and funding Prerequisites (Read this if you are having issues!) Dependencies Screenshots Installat

9k Jan 08, 2023
Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.

starlette context Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automat

Tomasz Wójcik 300 Dec 26, 2022
Scalene: a high-performance, high-precision CPU and memory profiler for Python

scalene: a high-performance CPU and memory profiler for Python by Emery Berger 中文版本 (Chinese version) About Scalene % pip install -U scalene Scalen

Emery Berger 138 Dec 30, 2022
Development tool to measure, monitor and analyze the memory behavior of Python objects in a running Python application.

README for pympler Before installing Pympler, try it with your Python version: python setup.py try If any errors are reported, check whether your Pyt

996 Jan 01, 2023
Prometheus exporter for Flask applications

Prometheus Flask exporter This library provides HTTP request metrics to export into Prometheus. It can also track method invocations using convenient

Viktor Adam 535 Dec 23, 2022
Exports osu! user stats to prometheus metrics for a specified set of users

osu! to prometheus exporter This tool exports osu! user statistics into prometheus metrics for a specified set of user ids. Just copy the config.json.

Peter Oettig 1 Feb 24, 2022
Yet Another Python Profiler, but this time thread&coroutine&greenlet aware.

Yappi Yet Another Python Profiler, but this time thread&coroutine&greenlet aware. Highlights Fast: Yappi is fast. It is completely written in C and lo

Sümer Cip 1k Jan 01, 2023
ScoutAPM Python Agent. Supports Django, Flask, and many other frameworks.

Scout Python APM Agent Monitor the performance of Python Django apps, Flask apps, and Celery workers with Scout's Python APM Agent. Detailed performan

Scout APM 59 Nov 26, 2022