|
| 1 | +<!-- |
| 2 | +Goal of this doc: |
| 3 | +The user is able to overcome on their own some basic issues |
| 4 | +--> |
| 5 | + |
| 6 | +# Troubleshooting |
| 7 | + |
| 8 | +Below are some resources and tips for troubleshooting and debugging the Elastic Distribution of OpenTelemetry Python (EDOT Python). |
| 9 | + |
| 10 | +- [Easy Fixes](#easy-fixes) |
| 11 | +- [Disable EDOT](#easy-fixes) |
| 12 | + |
| 13 | +## Easy Fixes |
| 14 | + |
| 15 | +Before you try anything else, go through the following sections to ensure that |
| 16 | +EDOT Python is configured correctly. This is not an exhaustive list, but rather |
| 17 | +a list of common problems that users run into. |
| 18 | + |
| 19 | +### Debug and development modes |
| 20 | + |
| 21 | +Most frameworks support a debug mode. Generally, this mode is intended for |
| 22 | +non-production environments and provides detailed error messages and logging of |
| 23 | +potentially sensitive data. So enabling instrumentation in debug mode is not advised and may pose privacy and security issues in recording |
| 24 | +sensitive data. |
| 25 | + |
| 26 | +#### Django |
| 27 | + |
| 28 | +Django applications running with the Django `runserver` need to use the `--noreload` parameter in order to be instrumented with `opentelemetry-instrument`. |
| 29 | +Remember that you also need to set the `DJANGO_SETTINGS_MODULE` environment variable pointing to the application settings module. |
| 30 | + |
| 31 | +#### FastAPI |
| 32 | + |
| 33 | +FastAPI application started with `fastapi dev` requires the reloader to be disabled with `--no-reload` in order to be instrumented with `opentelemetry-instrument`. |
| 34 | + |
| 35 | +#### Flask |
| 36 | + |
| 37 | +Flask applications running in debug mode will require to disable the reloader in order to being traced, see [OpenTelemetry zero code documentation](https://opentelemetry.io/docs/zero-code/python/example/#instrumentation-while-debugging). |
| 38 | + |
| 39 | +## Disable EDOT |
| 40 | + |
| 41 | +In the unlikely event EDOT Python causes disruptions to a production application, you can disable it while you troubleshoot. |
| 42 | + |
| 43 | +To disable the underlying OpenTelemetry SDK you set the following environment variable `OTEL_SDK_DISABLED=true`. |
| 44 | + |
| 45 | +If only a subset of instrumentation are causing disruptions you can disable them with the `OTEL_PYTHON_DISABLED_INSTRUMENTATIONS` |
| 46 | +environment variable. It accepts a list of comma separated instrumentations to disable, see [OpenTelemetry zero code documentation](https://opentelemetry.io/docs/zero-code/python/configuration/#disabling-specific-instrumentations) |
| 47 | + |
| 48 | +## Missing logs |
| 49 | + |
| 50 | +Enabling the Python logging module auto-instrumentation with `OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true` calls the |
| 51 | +[logging.basicConfig](https://docs.python.org/3/library/logging.html#logging.basicConfig) method that will make your own application calls |
| 52 | +to it a no-op. The side effect of this is that you won't see your application logs in the console anymore. |
| 53 | + |
| 54 | +If you are already shipping logs by other means you don't need to enable this. |
| 55 | + |
| 56 | +<!-- TODO: when available add link to to propose other option https://elastic.github.io/opentelemetry/use-cases/logs/ --> |
0 commit comments