我们很高兴宣布 Elastic OpenTelemetry Node.js 发行版的 alpha 版本发布。 此发行版是 OpenTelemetry Node.js SDK 的一个轻量级包装,可以更轻松地开始使用 OpenTelemetry 来观察您的 Node.js 应用程序。
背景
Elastic 正在将 OpenTelemetry (OTel) 标准化用于可观测性和安全数据收集。 作为该工作的一部分,我们正在提供 OpenTelemetry 语言 SDK 的发行版。 我们的 Android 和 iOS SDK 从一开始就基于 OpenTelemetry,并且我们最近发布了 Java 和 .NET 的 alpha 发行版。 Elastic OpenTelemetry Node.js 发行版是最新增加的产品。
入门
要开始使用 Elastic OTel Node.js 发行版(“distro”),您只需安装并加载一个 npm 依赖项 (@elastic/opentelemetry-node)。 该发行版为许多流行的 Node.js 包设置了跟踪、指标和日志的收集。 它将数据发送到您配置的任何 OTLP 端点。 这可以是标准的 OTel Collector,或者如下所示的 Elastic 可观测性云部署。
npm install --save @elastic/opentelemetry-node # (1) install the SDK
# (2) configure it, for example:
export OTEL_EXPORTER_OTLP_ENDPOINT=https://my-deployment.apm.us-west1.gcp.cloud.es.io
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer ...REDACTED..."
export OTEL_SERVICE_NAME=my-service
# (3) load and start it
node --require @elastic/opentelemetry-node my-service.js
使用 Express 和 PostgreSQL 的一个小示例
为了提供一个具体的示例,让我们看一个使用 Express Web 框架和 pgPostgreSQL 客户端包实现的 Node.js 小型 “Shortlinks” 服务。 此服务提供一个 POST / 路由,用于创建短链接(URL 的短名称),以及一个 GET /:shortname 路由,用于使用这些短链接。
git 存储库在此。 README 显示如何创建免费试用 Elastic 云部署并获取相应的 OTEL_... 配置设置。 试用一下(先决条件是 Docker 和 Node.js v20 或更高版本)
git clone https://github.com/elastic/elastic-otel-node-example.git
cd elastic-otel-node-example
npm install
cp config.env.template config.env
# Edit OTEL_ values in "config.env" to point to your collection endpoint.
npm run db:start
npm start
设置可观测性所需的唯一步骤是对 "package.json" 文件进行这些小的更改并配置一些标准的 OTEL_... 环境变量。
// ...
"scripts": {
"start": "node --env-file=./config.env -r @elastic/opentelemetry-node lib/app.js"
},
"dependencies": {
"@elastic/opentelemetry-node": "*",
// ...
结果是使用行业标准的 OpenTelemetry 的可观测应用程序 — 提供对许多流行的 Node.js 库的高质量检测、避免供应商锁定的可移植 API 以及活跃的社区。
使用 Elastic 可观测性,您可以期望获得的一些开箱即用的好处包括:丰富的跟踪视图、服务地图、集成的指标和日志分析等。 该发行版附带 host-metrics,Kibana 提供精心策划的服务指标 UI。 对于流行的 Winston 和 Bunyan 日志框架,可以开箱即用地发送日志,并计划支持 Pino。
下一步是什么?
Elastic 致力于帮助 OpenTelemetry 取得成功,并帮助我们的客户在其系统中使用 OpenTelemetry。 去年,我们捐赠了 ECS,并继续致力于将其与 OpenTelemetry 语义约定集成。 最近,我们正在努力将基于 eBPF 的分析器捐赠给 OpenTelemetry。 我们为许多语言 SDK 和其他 OpenTelemetry 项目做出了贡献。
作为 Node.js 发行版的作者,我们很高兴与 OpenTelemetry JavaScript 社区合作,并帮助使 JS API 和 SDK 成为 JavaScript 可观测性的更强大、功能丰富和明显的选择。 拥有发行版使我们能够灵活地在原始 OTel SDK 之上构建功能。 目前,该发行版的一些优点包括:用于安装的单个软件包、使用合理的默认配置轻松进行自动检测、默认启用 ESM 以及自动日志遥测发送。 我们将在可能的情况下将功能贡献到上游 OTel JavaScript 项目,并在发行版中包含其他功能,以便它们在那里更有意义。
Elastic OpenTelemetry Node.js 发行版目前是 alpha 版本。 请试用一下,让我们知道它是否适合您。 请关注此处的最新版本。 您可以在项目问题跟踪器或Elastic 的 Node.js APM 讨论论坛上与我们联系。
本文中描述的任何功能或特性的发布和时间安排仍由 Elastic 自行决定。 任何当前不可用的功能或特性可能不会按时交付,甚至根本不会交付。