HyperDX uses the OpenTelemetry standard for collecting telemetry data (logs and traces). Traces are auto-generated with automatic instrumentation, so manual instrumentation isn't required to get value out of tracing.
This Guide Integrates:
|✅ Logs||✅ Metrics||✅ Traces|
Use the following command to install the HyperDX OpenTelemetry package (opens in a new tab).
pip install hyperdx-opentelemetry
Install OpenTelemetry’s automatic instrumentation libraries for the packages
used by your Python application. We recommend that you use the
opentelemetry-bootstrap tool that comes with the OpenTelemetry Python SDK to
scan your application packages and generate the list of available libraries.
opentelemetry-bootstrap -a install
Afterwards you'll need to configure the following environment variables in your shell to ship telemetry to HyperDX:
export HYPERDX_API_KEY='<YOUR_HYPERDX_API_KEY_HERE>' \ OTEL_SERVICE_NAME='<NAME_OF_YOUR_APP_OR_SERVICE>'
OTEL_SERVICE_NAME environment variable is used to identify your service
in the HyperDX app, it can be any name you want.
By enabling network capture features, developers gain the capability to debug
HTTP request headers and body payloads effectively. This can be accomplished
simply by setting
HYPERDX_ENABLE_ADVANCED_NETWORK_CAPTURE flag to 1.
Now you can run the application with the OpenTelemetry Python agent
opentelemetry-instrument python app.py
In this case, the OpenTelemetry Python agent won't work properly. To configure
OpenTelemetry for application servers using the pre-fork web server mode, make
sure to call the
configure_opentelemetry method within the post-fork hook.
from hyperdx.opentelemetry import configure_opentelemetry def post_fork(server, worker): configure_opentelemetry()
from hyperdx.opentelemetry import configure_opentelemetry from uwsgidecorators import postfork @postfork def init_tracing(): configure_opentelemetry()
By default, OpenTelemetry logging handler uses
logging.NOTSET level which
defaults to WARNING level. You can specify the logging level when you create a
import logging logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG)
The OpenTelemetry Python SDK usually displays errors in the console when they occur. However, if you don't encounter any errors but notice that your data is not appearing in HyperDX as expected, you have the option to enable debug mode. When debug mode is activated, all telemetries will be printed to the console, allowing you to verify if your application is properly instrumented with the expected data.
Read more about Python OpenTelemetry instrumentation here: https://opentelemetry.io/docs/instrumentation/python/manual/ (opens in a new tab)