# Django Datadog

* A simple Django middleware for submitting timings and exceptions to Datadog.
* A helper class, Stats, that creates an API and Statsd connection to Datadog from Django settings

## Installation

Download the code into your project and install it.

```bash
git clone git://github.com/conorbranagan/django-datadog.git
cd django-datadog
python setup.py install
```

Add `djdatadog` to your list of installed apps.

```python
INSTALLED_APPS += ('djdatadog')
```

Add the following configuration to your projects' `settings.py` file:

```python
DATADOG_API_KEY = "apikey"
DATADOG_APP_KEY = "appkey"
DATADOG_APP_NAME = "appname" #name your metrics will be tagged with
DATADOG_HOST = "yourddhost" #for statsd metrics
DATADOG_PORT = "8125" #for statsd metrics
```

The API and app keys can be found at https://app.datadoghq.com/account/settings#api

Add the Datadog request handler to your middleware in `settings.py`.

```python
MIDDLEWARE_CLASSES += ('djdatadog.middleware.DatadogMiddleware')
```

## Usage

### Stats class

```
from djdatadog.helpers import Stats

s = Stats()
s.increment("my_other_metric", 4, ["tag1", "tag2"])
```

For information on the statsd interface, see the [Datadog Python Client documentation](http://datadogpy.readthedocs.org/en/latest/#datadog-dogstatsd-module)

### Middleware
Once the middlewhere installed, you'll start receiving events in your Datadog
stream in the case of an app exception. Here's an example:

![example django exception](https://dl.dropbox.com/u/126553/django-datadog.png)

You will also have new timing metrics available:

- `my_app.request_time.{avg,max,min}`
- `my_app.errors.500`
- `my_app.errors.404`
- `my_app.errors.403`
- `my_app.errors.405`
- `my_app.errors.410`


Metrics are tagged with `path:/path/to/view`

Note: `my_app` will be replaced by whatever value you give for `DATADOG_APP_NAME`.
