django-processinfo

Django-app for collecting information from running django processes.

OTHER License

Downloads
498
Stars
15

= django-processinfo

A reuseable Django application for collecing information about the running server processes. We try to cause as little additional overhead: django-processinfo creates most of the time only one database query to update the data.

The most important data that django-processinfo will be captured:

  • Process statistics:
    ** process PID, start time, life times
    ** Number of average/max living processes
    ** min/average/max response times
    ** Total request/exceptions count
  • Memory statistics:
    ** min/average/max memory usage (VmRSS, VmPeak)
  • System informations:
    ** System memory usage
    ** Swap usage
    ** load average

django-processinfo splits some of these data per SITE_ID, so you can see e.g. which site is mostly used.

What is it not:

  • track user actions
  • collect infos which are found in e.g. apache.log
  • Its not a sourcecode profiler (read [[https://code.djangoproject.com/wiki/ProfilingDjango]])

more info: https://www.python-forum.de/viewtopic.php?f=6&t=27168 (de)

== limitation ==

This only works, if /proc/$$/status exists. So only on unix/linux like platforms, yet.

== TODO ==

Add unittests

== screenshots ==

Here [[https://github.com/jedie/jedie.github.io/tree/master/screenshots/django-processinfo|some screenshots (from v0.2 - 19.08.2011)]] how it looks like:


{{https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/django-processinfo/20110819_django-processinfo-1.png|Screenshot 1}}


{{https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/django-processinfo/20110819_django-processinfo-2.png|Screenshot 2}}

== install ==

  1. install it e.g.: {{{ pip install django-processinfo }}}

  2. add settings (see below)

  3. create tables (run syncdb)

== settings ==

add this to your settings.py: {{{ import os

import django_processinfo

INSTALLED_APPS = ( ... 'django_processinfo', ... )

MIDDLEWARE = ( 'django_processinfo.middlewares.ProcessInfoMiddleware', ... )

Put templates above admin contrib, e.g.:

TEMPLATE_DIRS = ( ... os.path.join(os.path.abspath(os.path.dirname(django_processinfo.file)), "templates/"), ... )

include app settings from ./django_processinfo/app_settings.py

from django_processinfo import app_settings as PROCESSINFO

Change settings like this:

PROCESSINFO.ADD_INFO = True }}}

=== ProcessInfoMiddleware ===

The ProcessInfoMiddleware can actually be inserted anywhere. However, it should be added far above. Thus, to capture everything.

For performance enhancement, you can put ProcessInfoMiddleware after LocalSyncCacheMiddleware. But then, however, lacks statistical values on every cache hit!

=== app settings ===

Available django-processinfo settings can you found in [[https://github.com/jedie/django-processinfo/blob/master/django_processinfo/app_settings.py|./django_processinfo/app_settings.py]]

== developer info

e.g.: {{{ ~$ git clone https://github.com/jedie/django-processinfo.git ~$ cd django-processinfo ~/django-processinfo$ make help List all commands install-poetry install or update poetry install install PyInventory via poetry update update the sources and installation lint Run code formatters and linter fix-code-style Fix code formatting tox-listenvs List all tox test environments tox Run pytest via tox with all environments tox-py36 Run pytest via tox with python v3.6 tox-py37 Run pytest via tox with python v3.7 tox-py38 Run pytest via tox with python v3.8 pytest Run pytest update-rst-readme update README.rst from README.creole publish Release new version to PyPi run-dev-server Run the django dev server in endless loop. }}}

=== run test project

There exists a test project that can be easy run localy using the django dev. server and SQLite database. To run this project, do this: {{{ ~/django-processinfo$ make run-dev-server }}} You must also setup a test user, call this: {{{ ~/django-processinfo$ ./manage.sh createsuperuser }}}

== Django compatibility

|= Version |= Python |= Django | >=v1.1.0 | 3.7,3.8,3.9,3.10 | 3.2,4.0,4.1 | v0.9.0 | python 3 | django v2.2 LTS | v0.8.0 | python 3 | django v1.11 LTS | v0.7.0 | python 2 | django v1.5 | v0.6.1 | python 2 | django v1.4

== history ==

  • dev - [[https://github.com/jedie/django-processinfo/compare/v1.1.0...master|compare v1.1.0...master]]
    ** TBC
  • [[https://github.com/jedie/django-processinfo/compare/v1.0.2...v1.1.0|v1.1.0 - 16.08.2022]]
    ** Test against Django 3.2, 4.0 and 4.1 with Python 3.7, 3.8, 3.9 and 3.10
    ** Modernize project setup
  • v1.0.2 - 09.12.2020 - [[https://github.com/jedie/django-processinfo/compare/v1.0.1...v1.0.2|compare v1.0.1...v1.0.2]]
    ** Bugfix "DataError: smallint out of range" on bigger PID numbers
  • v1.0.1 - 2.11.2020 - [[https://github.com/jedie/django-processinfo/compare/v1.0.0...v1.0.1|compare v1.0.0...v1.0.1]]
    ** Bugfix injected footer
    ** Fix/cleanup change list
    ** Bugfix test project {{{manage.sh}}}
    ** cleanup test project
  • v1.0.0 - 1.11.2020 - [[https://github.com/jedie/django-processinfo/compare/v0.9.0...v1.0.0|compare v0.9.0...v1.0.0]]
    ** modernize project setup using poetry
    ** Add a test project
    ** Add tests
    ** upgrade code style
  • v0.9.0 - 26.02.2020 - [[https://github.com/jedie/django-processinfo/compare/v0.8.0...v0.9.0|compare v0.8.0...v0.9.0]]
    ** Updates for Django 2.2
  • v0.8.0 - 09.03.2018 - [[https://github.com/jedie/django-processinfo/compare/v0.7.1...v0.8.0|compare v0.7.1...v0.8.0]]
    ** Updates for Python v3 and Django 1.11
  • v0.7.1 - 20.08.2015 - [[https://github.com/jedie/django-processinfo/compare/v0.6.3...v0.7.1|compare v0.6.3...v0.7.1]]
    ** Changes for django 1.5 support
    ** change setup install_requires to Django v1.3.x - v1.5.x
    ** Bugfix in templates: missed i18n
  • v0.6.3 - 24.08.2012
    ** remove auto commit date from version
  • v0.6.2
    ** Auto cleanup ProcessInfo table to protect against overloading.
    ** Don't insert django-processinfo "time cost" info if response.status_code is not 200
  • v0.6.1
    ** Tested also with django v1.4
    ** change setup install_requires to Django v1.3.x - v1.4.x
  • v0.6.0
    ** Add "Reset all data" in object tools.
    ** Make "Remove dead PIDs" and "Reset all data" available on both admin pages.
  • v0.5.2
    ** [[https://github.com/jedie/django-processinfo/issues/4|Bugfix if no SWAP used.]]
  • v0.5.1
    ** Add "Remove dead PIDs" as admin view in "Process statistics" object tools (top, right, grey links)
  • v0.5.0
    ** Model changes: Please recreate tables, e.g.: {{{ ./manage.py reset django_processinfo }}}
    ** New: Display some static system informations (uname, domain name, ip adress, python version, sys.prefix)
    ** New: current living processes (also per site)
    ** display sum of user/system mode time
  • v0.4.1
    ** Bugfix for UnicodeEncodeError in setup: Use new solution, see: https://code.google.com/p/python-creole/wiki/UseInSetup
  • v0.4
    ** Bugfix with "Total created processes"
    ** Display "Process lifetime"
  • v0.3.0
    ** Display some system information from /proc/meminfo and 'load average'
    ** Many Bugfixes
  • v0.2.0
    ** Many things changes! Recreate tables, e.g: {{{ ./manage.py reset django_processinfo }}}
  • v0.1.0
    ** first Version

== Donation

  • [[https://www.paypal.me/JensDiemer|paypal.me/JensDiemer]]
  • [[https://flattr.com/submit/auto?uid=jedie&url=https%3A%2F%2Fgithub.com%2Fjedie%2Fdjango-reversion-compare%2F|Flattr This!]]
  • Send [[http://www.bitcoin.org/|Bitcoins]] to [[https://blockexplorer.com/address/1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F|1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F]]

== links ==

| GitHub | https://github.com/jedie/django-processinfo | PyPi | http://pypi.python.org/pypi/django-processinfo

=== contact ===

Come into the conversation, besides the github communication features:

| Forum | http://www.pylucid.org/en/forum/10/ | IRC | #pylucid on freenode.net (Yes, the PyLucid channel...) | webchat | http://webchat.freenode.net/?channels=pylucid

Package Rankings
Top 6.6% on Pypi.org
Related Projects