介绍适用于 Node.js 的 Elastic OpenTelemetry 发行版

作者:来自 Elastic Trent 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 端点。 这可以是标准 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” 服务。 该服务提供用于创建短链接(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 阶段。 请尝试一下并告诉我们它是否适合你。 在这里关注最新版本。 你可以通过项目问题跟踪器或 Elastic 的 Node.js APM 讨论论坛与我们互动。

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

原文:Introducing Elastic's OpenTelemetry Distribution for Node.js | Elastic Blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/609677.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

recycleview和banner新闻列表轮播图

说明:最近碰到一个需求,弄一个新闻列表和轮播图,在首页显示,并且需要json解析,图片下载,轮播图和新闻列表一起滑动 ui效果图: 文件说明: step1:引用依赖包 图片下载 json解析 轮播…

idea无法识别加载pom.xml文件

有时idea无法识别加载pom.xml文件,直接打开pom.xml文件,然后添加到maven就行

官方文档k8s1.30安装部署高可用集群,kubeadm安装Kubernetes1.30最新版本

文章目录 节点架构一、准备开始(每一台机器都执行)1️⃣ 检查所需端口(可以直接关闭防火墙放开所有端口)端口和协议控制面工作节点 关闭防火墙关闭 SELinux 2️⃣ 安装containerd容器containerd部署containerd切换为国内源 3️⃣ 设置/etc/hosts 二、安装 kubeadm、kubelet 和 …

C++青少年简明教程:C++程序结构

C青少年简明教程&#xff1a;C程序结构 一个简单的C程序源码如下&#xff1a; #include <iostream> using namespace std;int main() {cout << "Hello World" << endl;return 0; }下面解析一下。 1. #include <iostream> 这是一条预处理…

SSH隧道可以做什么?

SSH隧道是SSH协议服务端提供的一种扩展功能&#xff0c;一般仅在linux服务器的SSH服务端中提供&#xff0c;其它的如交换机、防火墙等网络设备中&#xff0c;虽然支持SSH协议&#xff0c;但多数并不提供SSH隧道功能。 所以&#xff0c;在通过SSH协议连接远程设备时&#xff0c…

Python远程连接Linux执行操作

一、任务要求 要使用Python编写代码来远程给Linux主机上传一个文件&#xff0c;可以使用paramiko库&#xff0c;这是一个实现了SSHv2协议的Python库&#xff0c;它支持SSH连接&#xff08;包括客户端和服务端&#xff09;&#xff0c;并且提供SFTP&#xff08;SSH File Transf…

VScode查看以十六进制查看文件的插件说明

找到插件并下载 打开指定的文件 选择打开方式即可 结果如下

STM32——GPIO输出(点亮第一个LED灯)

代码示例&#xff1a; #include "stm32f10x.h" // Device headerint main() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启时钟GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_InitSt…

成为计算机视觉(CV)需要掌握哪些技术知识(综述)

在CV领域&#xff0c;深度学习和机器学习技术发挥着至关重要的作用&#xff0c;它们为图像识别、目标检测、图像分割等任务提供了强大的工具和方法。本文将综述CV中需要学习的深度学习和机器学习技术。 一、深度学习技术 卷积神经网络&#xff08;Convolutional Neural Netwo…

【吊打面试官系列】Java高并发篇 - 为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里?

大家好&#xff0c;我是锋哥。今天分享关于 【为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里&#xff1…

被严重低估的后端技术面经,强到离谱!

前天加完班&#xff0c;回家路上翻了下粉丝群。发现群里最近在疯传一份叫《后端 offer 收割机养成指南》的资料。 本来感觉这个 title 看起来有点离谱&#xff0c;结果没想到仔细一看&#xff0c;这份资料竟然真的有点东西。内容收纳的很全&#xff0c;而且融合了很多今年的新…

软件测试从业人员怎么看待测试工作的前途?

调查背景   工信部发布的2023年软件业经济运行情况显示&#xff0c;全年累计完成软件业务收入123258亿元&#xff0c;同比增长13.4%&#xff0c;增速较上年同期提高2.2个百分点。值得注意的是&#xff0c;亚太地区软件测试市场正在迅速崛起&#xff0c;预计到2026年复合年增长…

Django开发实战之单元测试和集成测试之编写测试用例以及代码覆盖率统计分析

这里分为了两种情况&#xff1a; E2E&#xff1a;接近真实使用情况&#xff0c;用例数量少 UT&#xff1a;执行速度快&#xff0c;用例数量多 1、整理测试点 1、注册功能 允许匿名访问URL&#xff1a;http://127.0.0.1:8000/accounts/register/get请求&#xff1a;返回htmlp…

Linux 用户进程启动与Systemd

Linux用户空间的启动 我们都知道&#xff0c;Linux在内核的初始化自身的流程结束后&#xff0c;就会将程序流的运行转到用户态&#xff0c;也就是进入init进程流之后&#xff0c;他会按照这个流程进行初始化&#xff1a; init进程初始化 基础的底层服务&#xff1a;比如说ude…

JavaScript 事件

在 Web 开发中&#xff0c;JavaScript 事件是至关重要的概念之一。通过事件&#xff0c;我们可以实现交互性和动态性&#xff0c;使用户与网页进行互动。本篇博客将介绍 JavaScript 事件的基础知识&#xff0c;并深入探讨一些高级技术。 1. 什么是事件&#xff1f; 事件是指用…

振弦采集仪在岩土工程监测中的性能评价及标准选择

振弦采集仪在岩土工程监测中的性能评价及标准选择 河北稳控科技振弦采集仪是一种重要的岩土工程监测仪器&#xff0c;用于测量振动场的频率、振幅和相位等参数。它在岩土工程施工和地震监测中具有重要的应用价值。本文将对振弦采集仪的性能评价及标准选择进行详细介绍。 首先&…

每日一练2024.5.9

题目&#xff1a; 给定一个非负整数数组 nums&#xff0c; nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;i 也是 奇数 &#xff1b;当 nums[i] 为偶数时&#xff0c; i 也是 偶数 。 你可以返回 …

Java | Leetcode Java题解之第80题删除有序数组中的重复项II

题目&#xff1a; 题解&#xff1a; class Solution {public int removeDuplicates(int[] nums) {int n nums.length;if (n < 2) {return n;}int slow 2, fast 2;while (fast < n) {if (nums[slow - 2] ! nums[fast]) {nums[slow] nums[fast];slow;}fast;}return sl…

Python 全栈系列242 踩坑记录:租用算力机完成任务

说明 记一次用算力机分布式完成任务的坑。 内容 1 背景 很早的时候&#xff0c;做了一个实体识别模型。这个模型可以识别常见的PER、ORG、LOC和TIME几种类型实体。 后来&#xff0c;因为主要只用来做PER、ORG的识别&#xff0c;于是我根据业务数据&#xff0c;重新训练了模…