Riccardo Magliocchetti

隆重推出适用于 OpenTelemetry 的 Elastic Python 发行版

宣布 Elastic OpenTelemetry Python 发行版的首个 Alpha 版本。 在这篇博文中了解如何轻松使用 OpenTelemetry 仪表化您的 Python 应用程序。

Introducing Elastic Distribution for OpenTelemetry Python

我们很高兴地宣布 Elastic OpenTelemetry Python 发行版的 Alpha 版本。 此项目是一个定制的 OpenTelemetry 发行版,使我们能够配置更好的默认设置,以便将 OpenTelemetry 与 Elastic 云产品一起使用。

背景

Elastic 正在将 OpenTelemetry (OTel) 标准化用于可观测性和安全数据收集。 作为这项工作的一部分,我们正在提供 OpenTelemetry 语言 SDK 的发行版。 我们最近发布了 Java.NETNode.js 的 Alpha 发行版。 我们的 AndroidiOS SDK 从一开始就基于 OpenTelemetry。 适用于 OpenTelemetry Python 的 Elastic 发行版是最新添加的。

设计选择

我们选择提供一个精简的发行版,默认情况下不安装所有仪表化,而是提供工具来实现此目的。 我们利用了

opentelemetry-bootstrap
由 OpenTelemetry Python 项目提供的工具来扫描环境中安装的包,并识别我们能够仪表化的库。 此工具可以报告可用的仪表化,并且可以选择安装它们。 这使您避免安装不需要的包或仪表化您不感兴趣的跟踪库。

入门

要开始使用适用于 OpenTelemetry Python 的 Elastic 发行版,您需要在您的项目环境中安装该包

elastic-opentelemetry
。 我们将在示例中使用
pip
,但您可以随意使用任何您选择的 Python 包和环境管理器。

pip install elastic-opentelemetry

安装我们的发行版后,您还将获得

opentelemetry-bootstrap
命令可用。 运行它

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>

我们已经完成了配置,最后一块拼图是用

opentelemetry-instrument
包装您的服务调用,该包装器提供零代码仪表化零代码(或自动)仪表化意味着该发行版将设置 OpenTelemetry SDK 并为您启用所有先前安装的仪表化。不幸的是,零代码仪表化不涵盖所有库,某些库(特别是 Web 框架)需要最少的手动配置。

对于使用 gunicorn 运行的 Web 服务,它可能如下所示

opentelemetry-instrument gunicorn main:app

结果是一个使用行业标准 OpenTelemetry 的可观测应用程序,它提供许多流行的 Python 库的高质量仪表化、避免供应商锁定的可移植 API 以及活跃的社区。

使用 Elastic 可观测性,您可以期待的一些开箱即用的好处包括:丰富的跟踪视图、服务地图、集成的指标和日志分析等等。

下一步是什么?

Elastic 致力于帮助 OpenTelemetry 取得成功,并帮助我们的客户在其系统中有效地使用 OpenTelemetry。去年,我们捐赠了 ECS,并继续致力于将其与 OpenTelemetry 语义约定集成。最近,我们正在努力将我们基于 eBPF 的分析器捐赠给 OpenTelemetry。我们为许多语言 SDK 和其他 OpenTelemetry 项目做出了贡献。

在 Python 生态系统中,我们是 opentelemetry-pythonopentelemetry-python-contrib 存储库的积极审阅者和贡献者。

适用于 OpenTelemetry Python 的 Elastic 发行版目前为 Alpha 版本。请试用并告知我们它是否适合您。 请关注此处的最新版本。 您可以在项目问题跟踪器上与我们互动。

我们非常希望了解您的用例,以便帮助您在可观测性之旅中取得成功。

本帖中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付,甚至根本无法交付。

资源

分享这篇文章