Metadata-Version: 2.0
Name: django-postgres-metrics
Version: 0.6.2
Summary: UNKNOWN
Home-page: https://github.com/django-postgres-metrics/django-postgres-metrics
Author: Markus Holtermann
Author-email: info+django-postgres-stats@markusholtermann.eu
License: BSD
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Requires-Dist: Django (>=1.11)

django-postgres-metrics
=======================

A Django application that exposes a bunch of PostgreSQL database metrics.

Background
----------

At `PyCon Canada 2017 <https://2017.pycon.ca/>`__ `Craig Kerstiens
<http://www.craigkerstiens.com/>`__ gave a talk "`Postgres at any scale
<https://2017.pycon.ca/schedule/56/>`__". In his talk Craig pointed out a bunch
of metrics one should look at to understand why a PostgreSQL database could be
"slow" or not perform as expected.

This project adds a Django Admin view exposing these metrics to Django users
with the ``is_superusers`` flag turned on.

Installation
------------

Start by installing ``django-postgres-metrics`` from PyPI::

    $ pip install django-postgres-metrics

You will also need to make sure to have ``psycopg2`` or ``psycopg2-binary``
installed which is already a requirement by Django for PostgreSQL support
anyway.

Then you need to add ``postgres_metrics`` to your ``INSTALLED_APPS`` list. Due
to the way postgres_metrics works, you need to include it *before* the
``admin`` app::

    INSTALLED_APPS = [
        'postgres_metrics.apps.PostgresMetrics',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]

You also need to make sure that the ``request`` context processor is included
in the ``TEMPLATES`` setting. It is included by default for projects that were
started on Django 1.8 or later::

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'OPTIONS': {
                'context_processors': [
                    ...,
                    'django.template.context_processors.request',
                    ...,
                ],
            },
        },
    ]

Lastly, you need to add a URL path to your global ``urls.py`` *before* the
``admin`` URL patterns.

For Django 2.0 and up::

    from django.urls import include, path
    urlpatterns = [
        path('admin/postgres-metrics/', include('postgres_metrics.urls')),
        path('admin/', admin.site.urls),
    ]

For Django 1.11 and before::

    from django.conf.urls import include, url
    urlpatterns = [
        url(r'^admin/postgres-metrics/', include('postgres_metrics.urls')),
        url(r'^admin/', admin.site.urls),
    ]

Security
--------

If you found or if you think you found a security issue please get in touch via
``info+django-postgres-stats *AT* markusholtermann *DOT* eu``.

I'm working about this in my free time. I don't have time to monitor the email
24/7. But you should normally receive a response within a week. If I haven't
got back to you within 2 weeks, please reach out again.

TESTING
-------

To run the unit tests::

    $ pip install tox
    $ tox


