You can send data from your Python application to Dynatrace. Python is a versatile, high-level programming language known for its readability and simplicity, often used for web development, data analysis, artificial intelligence, and scientific computing due to its extensive libraries and community support.
Capabilities
Injects into Python processes and supported containers automatically. Injection rules enable the exclusion or inclusion of specific processes and containers.
Tracks CPU usage, memory consumption, and responsiveness of Python processes in real time.
Monitors Python workloads running inside containers, capturing container-specific performance metrics and metadata about the container technology and environment.
Provides runtime metrics, including garbage collection (GC) activity, thread metrics, and loaded library versions.
Provides remote configuration updates that allow monitoring settings to be adjusted remotely via OneAgent. Changes are applied at runtime (without requiring a process restart when possible).
Generates diagnostic data for troubleshooting, including support archives accessible via the OneAgent Diagnostics UI.
OneAgent Python code module and OneAgent SDK for Python compatibility
The OneAgent Python code module supports applications instrumented by the OneAgent SDK for Python. Both can work together in the same application.
The Dynatrace OneAgent SDK for Python is a wrapper of the Dynatrace OneAgent SDK for C/C++.
When the Python code module is installed, it replaces Dynatrace OneAgent SDK for C/C++ internally and collects data produced by OneAgent SDK for Python. This means that traces produced by the SDK will be linked with those produced by the Python code module itself.
Limitations
Only the standard CPython interpreter is supported (the implementation from Python.org).
No-GIL (nogil) builds are not supported. The binary names of the nogil version have the t suffix, for example, Python3.13t.
Monitoring of processes with Gevent package installed in versions lower than 20.9.0 is not supported.
For applications creating forked child processes: The code module uses background threads. To support applications using process forking,
the code module usually ensures that its background threads are shut down before a fork and restarted afterwards. The following limitations apply:
On Python 3.12 and newer, the Python interpreter will log a warning like
DeprecationWarning: This process (pid=12345) is multi-threaded, use of fork() may lead to deadlocks in the child.
This is because after the fork and before Python checks if the process is multi-threaded, the code module already has to restart its threads.
If the warning only appears with the Python code module and not if it is removed,
it is a false positive and can be ignored.
Otherwise, it may indicate a problem in application code and should be taken seriously.
When forking without invoking Python fork handlers,
the code module does not shut down its threads.
This makes the parent process a multi-threaded process, with all the usual consequences this has for forking.
For typical applications this is not relevant, but custom native extension modules calling lower-level forking APIs
directly would be affected.