介绍适用于 Node.js 的 Elastic OpenTelemetry 发行版
2024年5月20日 | by mebius
作者:来自 ElasticTrent Mick
我们很高兴地宣布推出 Elastic OpenTelemetry Distribution for Node.js 的 alpha 版本。 该发行版是 OpenTelemetry Node.js SDK 的轻量级包装,可以让你更轻松地开始使用 OpenTelemetry 来观察 Node.js 应用程序。
背景
Elastic 正在对 OpenTelemetry (OTel) 进行标准化,以实现可观察性和安全数据收集。 作为这项工作的一部分,我们将提供 OpenTelemetry Language SDK 的发行版。 我们的 Android 和 iOS SDK 从一开始就基于 OpenTelemetry,并且我们最近发布了 Java 和 .NET 的 alpha 发行版。 Node.js 的 Elastic OpenTelemetry Distribution 是最新添加的内容。
入门
要开始使用 Elastic OTel Distribution for Node.js(“发行版”),你只需安装并加载单个 npm 依赖项 (@elastic/opentelemetry-node)。 该发行版为许多流行的 Node.js 包设置了跟踪、指标和日志的集合。 它将数据发送到你配置的任何 OTLP 端点。 这可以tgcode是标准 OTel Collector,或者如下所示的 Elastic Observability 云部署。
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 框架和 pg PostgreSQL 客户端包实现的小型 Node.js“Shortlinks” 服务。 该服tgcode务提供用于创建短链接(URL 的短名称)的 POST / route 和用于使用它们的 GET /:shortname 路由。
git 存储库在这里。 README 展示了如何创建免费试用版 Elastic 云部署并获取适当的 OTEL_… config 设置。 尝试一下(前提条件是 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 Observability,你可以期待的一些开箱即用的好处包括:丰富的跟踪查看、服务地图、集成指标和日志分析等等。 该发行版提供了主机指标,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 项目上游贡献功能,并且当它们更有意义时,我们也会在发行版中包含其他功能。
Node.js 的 Elastic OpenTelemetry Distribution 目前处于 alpha 阶段。 请尝试一下并告诉tgcode我们它是否适合你。 在这里关注最新版本。 你可以通过项目问题跟踪器或 Elastic 的 Node.js APM 讨论论坛与我们互动。
本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。 当前不可用的任何特性或功能可能无法按时交付或根本无法交付。
原文:Introducing Elastic’s OpenTelemetry Distribution for Node.js | Elastic Blog