Python troubleshooting¶
Robusta makes it easy to troubleshoot and debug Python applications running on Kubernetes.
Make sure you read about Manual Triggers to understand how this works.
Python debugger¶
Playbook Action: python_debugger
Attach a python debugger to a running pod. No need to modify the application's code or restart it.
- Steps:
Manually trigger this action using the Robusta CLI and the pod's name:
robusta playbooks trigger python_debugger name=podname namespace=default
Follow the instructions you receive and run kubectl port-forward
In Visual Studio Code do a Remote Attach as per the instructions
Now you can use break points and log points in VSCode.

Add this to your Robusta configuration (Helm values.yaml):
customPlaybooks:
- actions:
- python_debugger: {}
triggers:
- on_pod_crash_loop: {}
The above is an example. Try customizing the trigger and parameters.
- process_substring (str)
process name (or substring).
- pid (int)
pid
- interactive (bool) = True
if more than one process matches, interactively ask which process to choose.
- port (int) = 5678
debugging port.
This action can be manually triggered using the Robusta CLI:
robusta playbooks trigger python_debugger name=POD_NAME namespace=POD_NAMESPACE
Python profiler¶
Playbook Action: python_profiler
Attach a python profiler to a running pod, and run a profiling session for the specified duration.
No need to change the profiled application code, or to restart it.
This is powered by PySpy
Manually trigger with:
robusta playbooks trigger python_profiler name=podname namespace=default process_name=your-process seconds=5

Add this to your Robusta configuration (Helm values.yaml):
customPlaybooks:
- actions:
- python_profiler: {}
triggers:
- on_pod_crash_loop: {}
The above is an example. Try customizing the trigger and parameters.
- seconds (int) = 2
Profiling duration.
- process_name (str)
Profiled process name prefix.
- include_idle (bool)
Include idle threads
This action can be manually triggered using the Robusta CLI:
robusta playbooks trigger python_profiler name=POD_NAME namespace=POD_NAMESPACE
Python memory¶
Playbook Action: python_memory
Monitor a Python process for X seconds and show memory that was allocated and not freed.
Use this to track memory leaks in your Python application on Kubernetes.
Manually trigger with:
robusta playbooks trigger python_memory name=podname namespace=default

Add this to your Robusta configuration (Helm values.yaml):
customPlaybooks:
- actions:
- python_memory: {}
triggers:
- on_pod_crash_loop: {}
The above is an example. Try customizing the trigger and parameters.
- process_substring (str)
process name (or substring).
- pid (int)
pid
- interactive (bool) = True
if more than one process matches, interactively ask which process to choose.
- seconds (int) = 60
Memory allocations analysis duration.
This action can be manually triggered using the Robusta CLI:
robusta playbooks trigger python_memory name=POD_NAME namespace=POD_NAMESPACE