single |
# django-prometheus
Export Django monitoring metrics for Prometheus.io
[![Join the chat at
https://gitter.im/django-prometheus/community]](https://gitter.im/django-prometheus/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[PyPI version]
[Build Status]
[Coverage Status]
[![PyPi page link -- Python
versions]](https://pypi.python.org/pypi/django-prometheus)
[![Code style: black]](https://github.com/psf/black)
## Features
This library provides Prometheus metrics for Django related operations:
* Requests & Responses
* Database access done via [Django ORM]
* Cache access done via [Django Cache framework]
## Usage
### Requirements
* Django >= 3.2
* Python 3.7 and above.
### Installation
Install with:
```shell
pip install django-prometheus
```
Or, if you're using a development version cloned from this repository:
```shell
python path-to-where-you-cloned-django-prometheus/setup.py install
```
This will install [prometheus_client] as a dependency.
### Quickstart
In your settings.py:
```python
INSTALLED_APPS = [
...
'django_prometheus',
...
]
MIDDLEWARE = [
'django_prometheus.middleware.PrometheusBeforeMiddleware',
# All your other middlewares go here, including the default
# middlewares like SessionMiddleware, CommonMiddleware,
# CsrfViewmiddleware, SecurityMiddleware, etc.
'django_prometheus.middleware.PrometheusAfterMiddleware',
]
```
In your urls.py:
```python
urlpatterns = [
...
path('', include('django_prometheus.urls')),
]
```
### Configuration
Prometheus uses Histogram based grouping for monitoring latencies. The
default
buckets are:
```python
PROMETHEUS_LATENCY_BUCKETS = (0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5,
0.75, 1.0, 2.5, 5.0, 7.5, 10.0, 25.0, 50.0, 75.0, float("inf"),)
```
You can define custom buckets for latency, adding more buckets decreases
performance but
increases accuracy:
```python
PROMETHEUS_LATENCY_BUCKETS = (.1, .2, .5, .6, .8, 1.0, 2.0, 3.0, 4.0, 5.0,
6.0, 7.5, 9.0, 12.0, 15.0, 20.0, 30.0, float("inf"))
```
### Monitoring your databases
SQLite, MySQL, and PostgreSQL databases can be monitored. Just
replace the `ENGINE` property of your database, replacing
`django.db.backends` with `django_prometheus.db.backends`.
|