Skip to main content

Elastic Distribution of OpenTelemetry Python

Project description

Elastic Distribution of OpenTelemetry Python

[!WARNING] The Elastic Distribution of OpenTelemetry Python is not yet recommended for production use. Functionality may be changed or removed in future releases. Alpha releases are not subject to the support SLA of official GA features.

We welcome your feedback! You can reach us by opening a GitHub issue or starting a discussion thread on the Elastic Discuss forum.

The Elastic Distribution of OpenTelemetry Python (EDOT Python) is a customized version of OpenTelemetry Python. EDOT Python makes it easier to get started using OpenTelemetry in your Python applications through strictly OpenTelemetry native means, while also providing a smooth and rich out of the box experience with Elastic Observability. It's an explicit goal of this distribution to introduce no new concepts in addition to those defined by the wider OpenTelemetry community.

With EDOT Python you have access to all the features of the OpenTelemetry Python agent plus:

  • Access to improvements and bug fixes contributed by the Elastic team before the changes are available upstream in OpenTelemetry repositories.
  • Access to optional features that can enhance OpenTelemetry data that is being sent to Elastic.
  • Elastic-specific processors that ensure optimal compatibility when exporting OpenTelemetry signal data to an Elastic backend like an Elastic Observability deployment.
  • Preconfigured collection of tracing and metrics signals, applying some opinionated defaults, such as which sources are collected by default.

Ready to try out EDOT Python? Follow the step-by-step instructions in Get started.

Read the docs

Install

pip install elastic-opentelemetry

Usage

Our distribution does not install any instrumentation package by default, instead it relies on the opentelemetry-bootstrap command to scan the installed packages and install the available instrumentation. The following command will install all the instrumentations available for libraries found installed in your environment:

opentelemetry-bootstrap --action=install

It will be useful to add this command every time you need to deploy an updated version of your application, e.g. into your container image build process.

At runtime you have to make some environment variables available to provide the needed configuration. A service name is required to have your app easily recognizable from the other. Then you need to provide the authorization headers for authentication with Elastic cloud and the project endpoint where to send your data.

OTEL_RESOURCE_ATTRIBUTES=service.name=<app-name>
OTEL_EXPORTER_OTLP_HEADERS="Authorization=<authorization header value>"
OTEL_EXPORTER_OTLP_ENDPOINT=<your elastic cloud url>

We are done with the configuration and the last piece of the puzzle is wrapping your service invocation with opentelemetry-instrument that is the wrapper that provides automatic instrumentation:

opentelemetry-instrument <command to start your service>

For a web service running with gunicorn it may looks like:

opentelemetry-instrument gunicorn main:app

Configuration

The distribution supports all the configuration variables from OpenTelemetry Python project version 1.27.0.

Default configuration variables

This distribution sets the following defaults:

  • OTEL_TRACES_EXPORTER: otlp
  • OTEL_METRICS_EXPORTER: otlp
  • OTEL_EXPORTER_OTLP_PROTOCOL: grpc
  • OTEL_EXPERIMENTAL_RESOURCE_DETECTORS: process_runtime,os,otel,telemetry_distro

Distribution specific configuration variables

  • ELASTIC_OTEL_SYSTEM_METRICS_ENABLED (default: false): when sets to true sends system namespace metrics.

License

This software is licensed under the Apache License, version 2 ("Apache-2.0").

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elastic_opentelemetry-0.3.0.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

elastic_opentelemetry-0.3.0-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file elastic_opentelemetry-0.3.0.tar.gz.

File metadata

  • Download URL: elastic_opentelemetry-0.3.0.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for elastic_opentelemetry-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d5d1bc41e85240a1c4c4abba7a142af8e65dec8a67af86ed4b61047a37a3ef9e
MD5 f06e470e7bc01ecf9c8f22674505b6a7
BLAKE2b-256 8cf3f0d9af99d75541b0f841a4858f0540ec2c0c10aafbab7aa99e4b760d753c

See more details on using hashes here.

File details

Details for the file elastic_opentelemetry-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for elastic_opentelemetry-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0930c01bf078c7623ea92c601197379ada466fd1c044334fd79555a2b3c24d37
MD5 013afad7888cd17d7cabee4421095ea6
BLAKE2b-256 110a288909c11dfc64d8bb76d0f9ba7f65505c984f7d9af18b7791cd97efb301

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page