Trent Mick

Elastic 的 OpenTelemetry Node.js 发行版简介

宣布 Elastic OpenTelemetry Node.js 发行版的首个 alpha 版本发布。 在这篇博文中,了解使用 OpenTelemetry 来检测您的 Node.js 应用程序是多么容易。

阅读时长 4 分钟
Introducing Elastic's OpenTelemetry Distribution for Node.js

我们很高兴宣布 Elastic OpenTelemetry Node.js 发行版的 alpha 版本发布。 此发行版是 OpenTelemetry Node.js SDK 的一个轻量级包装,可以更轻松地开始使用 OpenTelemetry 来观察您的 Node.js 应用程序。

背景

Elastic 正在将 OpenTelemetry (OTel) 标准化用于可观测性和安全数据收集。 作为该工作的一部分,我们正在提供 OpenTelemetry 语言 SDK 的发行版。 我们的 AndroidiOS 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。 对于流行的 WinstonBunyan 日志框架,可以开箱即用地发送日志,并计划支持 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 自行决定。 任何当前不可用的功能或特性可能不会按时交付,甚至根本不会交付。