---
title: "Python APM with Kubernetes"
slug: "python-apm-with-kubernetes"
description: "Learn how to install Python APM Profiler in your Kubernetes-based Python app. Follow the setup guide for Django, Flask, and Pyramid applications. Monitor performance in Retrace dashboard."
updated: 2019-05-20T21:46:48Z
published: 2019-05-20T21:46:48Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackify.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Python APM with Kubernetes

This document details how to install the **Python APM Profiler** in your **Python** application running on **Kubernetes**.

## Prerequisite

Follow the [Retrace Kubernetes Install](https://docs.stackify.com/docs/retrace-kubernetes-install) Guide.

## Python Kubernetes Setup

---

### Django

1. Check that your setup meets our system requirements.
  - Python Versions  (**2.7 - 3.7**)
  - Django Versions (**1.7 - 2**)
2. Install the Stackify Python APM agent using **pip**:

```
$ pip install stackify-python-apm
```

You may install your stackify-python-apm by adding it to your project's `requirements.txt` file.
3. Add `stackifyapm.contrib.django` to `INSTALLED_APPS` in your `settings.py`:

```
INSTALLED_APPS = ( # ... 'stackifyapm.contrib.django', )
```
4. Add our tracing middleware to `MIDDLEWARE` in your `settings.py`:

```
MIDDLEWARE = ( 'stackifyapm.contrib.django.middleware.TracingMiddleware', # ... )
```
5. Customize **Application Name** and **Environment** configuration in your `settings.py`:

```
APPLICATION_NAME = 'Python Application'
ENVIRONMENT = 'Production'
```

---

### Flask

1. Check that your setup meets our system requirements.
  - Python Versions (**2.7 - 3.7**)
  - Flask Versions (**0.7 - 1.0**)
2. Install the Stackify Python APM agent using **pip**:

```
$ pip install stackify-python-apm
```

You may install your stackify-python-apm by adding it to your project's `requirements.txt` file.
3. Update and insert the apm settings to your application:

```
from stackifyapm.contrib.flask import StackifyAPM

app = Flask(...)
StackifyAPM(app)
```
4. Customize **Application Name** and **Environment** configuration:

```
app.config['APPLICATION_NAME'] = 'Python Application'
app.config['ENVIRONMENT'] = 'Production'

StackifyAPM(app)
```

### Pyramid

1. Check that your setup meets our system requirements.
  - Python Versions (**2.7 - 3.7**)
  - Pyramid Versions (**1.4 - 1.10**)
2. Install the Stackify Python APM agent using **pip**:

```
$ pip install stackify-python-apm
```

You may install your stackify-python-apm by adding it to your project's `requirements.txt` file.
3. Update and insert the apm settings to your application: **Include our pyramid tween integration:**

```
with Configurator() as config:
config.include('stackifyapm.contrib.pyramid')
```

**Or explicit tween configuration:**

```
with Configurator({
    'pyramid.tweens': ['stackifyapm.contrib.pyramid.stackifyapm_tween_factory'].
}) as config:
    ...
```
4. Customize **Application Name** and **Environment** configuration:

```
with Configurator({
    'APPLICATION_NAME': 'Python Application',
    'ENVIRONMENT': 'Production',
}) as config:
    config.include('stackifyapm.contrib.pyramid')
```

---

## Pod Configuration

Application containers are required to have the **stackify** volume mount configured in [Retrace Kubernetes Install](https://docs.stackify.com/docs/retrace-kubernetes-install).

Example Application Pod YAML:

```
apiVersion: v1
kind: ReplicationController
metadata:
  name: pod-name
spec:
  replicas: 1
  selector:
    app: app-name
  template:
    metadata:
      name: template-name
      labels:
        app: app-name
    spec:
      containers:
      - name: container-name
        image: application-image
        volumeMounts:
          - mountPath: /usr/local/stackify
            name: stackify
      volumes:
        - name: stackify
          hostPath: 
            path: /var/stackify
            type: DirectoryOrCreate
```

## Verify

Make application requests, you can then verify results in the Retrace dashboard.
