我们很高兴地宣布 Elastic OpenTelemetry Python 发行版的 Alpha 版本。 此项目是一个定制的 OpenTelemetry 发行版,使我们能够配置更好的默认设置,以便将 OpenTelemetry 与 Elastic 云产品一起使用。
背景
Elastic 正在将 OpenTelemetry (OTel) 标准化用于可观测性和安全数据收集。 作为这项工作的一部分,我们正在提供 OpenTelemetry 语言 SDK 的发行版。 我们最近发布了 Java、.NET 和 Node.js 的 Alpha 发行版。 我们的 Android 和 iOS SDK 从一开始就基于 OpenTelemetry。 适用于 OpenTelemetry Python 的 Elastic 发行版是最新添加的。
设计选择
我们选择提供一个精简的发行版,默认情况下不安装所有仪表化,而是提供工具来实现此目的。 我们利用了
入门
要开始使用适用于 OpenTelemetry Python 的 Elastic 发行版,您需要在您的项目环境中安装该包
pip install elastic-opentelemetry
安装我们的发行版后,您还将获得
opentelemetry-bootstrap
将列出所有可用于仪表化的包,例如,您可以预期看到以下内容
opentelemetry-instrumentation-asyncio==0.46b0
opentelemetry-instrumentation-dbapi==0.46b0
opentelemetry-instrumentation-logging==0.46b0
opentelemetry-instrumentation-sqlite3==0.46b0
opentelemetry-instrumentation-threading==0.46b0
opentelemetry-instrumentation-urllib==0.46b0
opentelemetry-instrumentation-wsgi==0.46b0
opentelemetry-instrumentation-grpc==0.46b0
opentelemetry-instrumentation-requests==0.46b0
opentelemetry-instrumentation-system-metrics==0.46b0
opentelemetry-instrumentation-urllib3==0.46b0
它还提供一个命令选项来自动安装这些包
opentelemetry-bootstrap --action=install
建议您每次发布新版本的应用程序时都运行此命令,以便您可以安装或只是修改代码的任何仪表化包。
需要一些环境变量来为仪表化您的服务提供所需的配置。 这些主要涉及跟踪的目标位置,但也涉及轻松识别您的服务。 需要一个服务名称才能将您的服务与其他服务区分开来。 然后,您需要提供用于与 Elastic 可观测性云进行身份验证的授权标头,以及用于发送数据的 Elastic 云端点。
您从 Elastic 云无服务器项目获得的 API 密钥必须经过URL 编码,您可以使用以下 Python 代码段进行编码
from urllib.parse import quote
quote("ApiKey <your api key>)
获得所有配置值后,您可以如下所示通过环境变量导出
export OTEL_RESOURCE_ATTRIBUTES=service.name=<service-name>
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=<url encoded apikey header value>"
export OTEL_EXPORTER_OTLP_ENDPOINT=<your elastic cloud url>
我们已经完成了配置,最后一块拼图是用
对于使用 gunicorn 运行的 Web 服务,它可能如下所示
opentelemetry-instrument gunicorn main:app
结果是一个使用行业标准 OpenTelemetry 的可观测应用程序,它提供许多流行的 Python 库的高质量仪表化、避免供应商锁定的可移植 API 以及活跃的社区。
使用 Elastic 可观测性,您可以期待的一些开箱即用的好处包括:丰富的跟踪视图、服务地图、集成的指标和日志分析等等。
下一步是什么?
Elastic 致力于帮助 OpenTelemetry 取得成功,并帮助我们的客户在其系统中有效地使用 OpenTelemetry。去年,我们捐赠了 ECS,并继续致力于将其与 OpenTelemetry 语义约定集成。最近,我们正在努力将我们基于 eBPF 的分析器捐赠给 OpenTelemetry。我们为许多语言 SDK 和其他 OpenTelemetry 项目做出了贡献。
在 Python 生态系统中,我们是 opentelemetry-python 和 opentelemetry-python-contrib 存储库的积极审阅者和贡献者。
适用于 OpenTelemetry Python 的 Elastic 发行版目前为 Alpha 版本。请试用并告知我们它是否适合您。 请关注此处的最新版本。 您可以在项目问题跟踪器上与我们互动。
我们非常希望了解您的用例,以便帮助您在可观测性之旅中取得成功。
本帖中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付,甚至根本无法交付。
资源
- https://elastic.ac.cn/blog/elastic-opentelemetry-sdk-distributions
- https://elastic.ac.cn/observability-labs/blog/elastic-distribution-opentelemetry-java-agent
- https://elastic.ac.cn/observability-labs/blog/elastic-opentelemetry-distribution-dotnet-applications
- https://elastic.ac.cn/observability-labs/blog/elastic-opentelemetry-distribution-node-js
- https://elastic.ac.cn/observability-labs/blog/manual-instrumentation-python-apps-opentelemetry
- https://elastic.ac.cn/observability-labs/blog/auto-instrumentation-python-applications-opentelemetry
- https://elastic.ac.cn/observability-labs/blog/opentelemetry-observability