Skip to content

Latest commit

 

History

History
56 lines (35 loc) · 2.74 KB

troubleshooting.md

File metadata and controls

56 lines (35 loc) · 2.74 KB

Troubleshooting

Below are some resources and tips for troubleshooting and debugging the Elastic Distribution of OpenTelemetry Python (EDOT Python).

Easy Fixes

Before you try anything else, go through the following sections to ensure that EDOT Python is configured correctly. This is not an exhaustive list, but rather a list of common problems that users run into.

Debug and development modes

Most frameworks support a debug mode. Generally, this mode is intended for non-production environments and provides detailed error messages and logging of potentially sensitive data. So enabling instrumentation in debug mode is not advised and may pose privacy and security issues in recording sensitive data.

Django

Django applications running with the Django runserver need to use the --noreload parameter in order to be instrumented with opentelemetry-instrument. Remember that you also need to set the DJANGO_SETTINGS_MODULE environment variable pointing to the application settings module.

FastAPI

FastAPI application started with fastapi dev requires the reloader to be disabled with --no-reload in order to be instrumented with opentelemetry-instrument.

Flask

Flask applications running in debug mode will require to disable the reloader in order to being traced, see OpenTelemetry zero code documentation.

Disable EDOT

In the unlikely event EDOT Python causes disruptions to a production application, you can disable it while you troubleshoot.

To disable the underlying OpenTelemetry SDK you set the following environment variable OTEL_SDK_DISABLED=true.

If only a subset of instrumentation are causing disruptions you can disable them with the OTEL_PYTHON_DISABLED_INSTRUMENTATIONS environment variable. It accepts a list of comma separated instrumentations to disable, see OpenTelemetry zero code documentation

Missing logs

Enabling the Python logging module auto-instrumentation with OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true calls the logging.basicConfig method that will make your own application calls to it a no-op. The side effect of this is that you won't see your application logs in the console anymore.

If you are already shipping logs by other means you don't need to enable this.